CSA - CAN/CSA-ISO/IEC/IEEE 9945-10
Information technology - Portable Operating System Interface (POSIX®) Base Specifications, Issue 7
|Publication Date:||1 December 2010|
|ICS Code (Languages used in information technology):||35.060|
Several principles guided the development of POSIX.1-2008:
• Interface, Not Implementation - POSIX.1-2008 defines an interface, not an implementation. No distinction is made between library functions and system calls; both are referred to as functions. No details of the implementation of any function are given (although historical practice is sometimes indicated in the RATIONALE section). Symbolic names are given for constants (such as signals and error numbers) rather than numbers.
• Source, Not Object, Portability - POSIX.1-2008 has been written so that a program written and translated for execution on one conforming implementation may also be translated for execution on another conforming implementation. POSIX.1-2008 does not guarantee that executable (object or binary) code will execute under a different conforming implementation than that for which it was translated, even if the underlying hardware is identical.
• The C Language - The system interfaces and header definitions are written in terms of the standard C language as specified in the ISO C standard.
• No Superuser, No System Administration - There was no intention to specify all aspects of an operating system. System administration facilities and functions are excluded from this standard, and functions usable only by the superuser have not been included. Still, an implementation of the standard interface may also implement features not in POSIX.1-2008. POSIX.1-2008 is also not concerned with hardware constraints or system maintenance.
• Minimal Interface, Minimally Defined - In keeping with the historical design principles of the UNIX system, the mandatory core facilities of POSIX.1-2008 have been kept as minimal as possible. Additional capabilities have been added as optional extensions.
• Broadly Implementable - The developers of POSIX.1-2008 endeavored to make all specified functions implementable across a wide range of existing and potential systems, including:
- All of the current major systems that are ultimately derived from the original UNIX system code (Version 7 or later)
- Compatible systems that are not derived from the original UNIX system code
- Emulations hosted on entirely different operating systems
- Networked systems
- Distributed systems
- Systems running on a broad range of hardware
No direct references to this goal appear in POSIX.1-2008, but some results of it are mentioned in the Rationale (Informative) volume.
• Minimal Changes to Historical Implementations - When the original version - IEEE Std 1003.1-1988 - was published, there were no known historical implementations that did not have to change. However, there was a broad consensus on a set of functions, types, definitions, and concepts that formed an interface that was common to most historical implementations.
The adoption of the 1988 and 1990 IEEE system interface standards, the 1992 IEEE shell and utilities standard, the various Open Group (formerly X/Open) specifications, and IEEE Std 1003.1-2001 and its technical corrigenda have consolidated this consensus, and this version reflects the significantly increased level of consensus arrived at since the original versions. The authors of the original versions tried, as much as possible, to follow the principles below when creating new specifications:
- By standardizing an interface like one in an historical implementation; for example, directories
- By specifying an interface that is readily implementable in
terms of, and backwards-compatible
- By specifying an interface that, when added to an historical implementation, will not conflict with it; for example, the sigaction() function
POSIX.1-2008 is specifically not a codification of a particular vendor's product.
It should be noted that implementations will have different kinds of extensions. Some will reflect "historical usage" and will be preserved for execution of pre-existing applications. These functions should be considered "obsolescent" and the standard functions used for new applications. Some extensions will represent functions beyond the scope of POSIX.1-2008. These need to be used with careful management to be able to adapt to future extensions of POSIX.1-2008 and/or port to implementations that provide these services in a different manner.
• Minimal Changes to Existing Application Code - A goal of POSIX.1-2008 was to minimize additional work for application developers. However, because every known historical implementation will have to change at least slightly to conform, some applications will have to change.