The POSIX API has a venerable history of allowing portability and compatibility among a wide variety of systems and applications. Its legacy is destined to continue well into the future.
ARUN SUBBARAO, LYNUXWORKS
The ability of an operating system to conform to established open standards application programming interfaces (APIs) is a key enabler for a critical mass of middleware and applications executing in its environment. It allows application portability among execution environments, thereby allowing developers the maximum flexibility in creating application software that can be migrated to newer environments with minimal effort. As the complexity of hardware and software continues to increase, the ability to preserve the software investment provides significant competitive leverage for both software vendors and OEMs alike.
One of the best-known and most widely adopted API standards in the embedded and server infrastructure, which has withstood the test of time, is the IEEE POSIX standard.
POSIX: Early Origins
The POSIX API standard had its origins in the early UNIX environments, when fragmenting of UNIX variants in the late 1980s resulted in the need to define a common API standard to ensure that application portability between different operating systems could be maintained. This resulted in the early specification of the POSIX standard.</p>
POSIX, an acronym for Portable Operating System Interface, is a family of related standards governed by the IEEE and maintained and evangelized by The Open Group. POSIX defines the application programming interface (API) for software compatibility with the different flavors of operating systems. First released 25 years ago, the POSIX standard defines the specifications for the characteristics of operating systems, database management systems, data interchange, programming interface, networking and user interface. POSIX enables developers to write their applications for one target environment so they can subsequently be ported to run on a variety of operating systems that support the POSIX APIs—a term commonly known in the industry as “source code compatibility.”
Since its modest beginnings in standardizing Unix APIs, the IEEE POSIX standard has now emerged as the most prevalent and widely regarded broad-based API standard for operating systems. It has extended its reach into various segments of the market such as server infrastructure, military, avionics, general purpose computing, scientific computing and more.
The POSIX standards have continued to evolve into the 21st century with significant revisions to the standards. One significant evolution of the standard happened in 2004, when the POSIX standards underwent a significant expansion and unification, to evolve into a newer standard IEEE 1003.1-2004. The IEEE 1003.1-2004 standard provided an extensive set of APIs encompassing applications in scientific, real-time and enterprise computing (Figure 1).
The IEEE 1003.13-2003 (POSIX.13) Profiles for Real-Time Applications.
At the same time, the IEEE POSIX standard also recognized the specialized needs of embedded operating systems and defined the IEEE POSIX 1003.13 standard, which defines four different profiles that correspond to variants of embedded designs that are prevalent in the industry. The IEEE 1003.13-2003 (POSIX.13) standard for real-time profiles and applications specifically targets embedded applications. This standard defines four real-time POSIX profiles:
PSE 51: Minimal
PSE 52: Controller
PSE 53: Dedicated
PSE 54: Multi-purpose
These four profiles, shown in Figure 1, specify increasing levels of complexity and functionality to satisfy the full spectrum of real-time applications that can be designed using POSIX. It also defines a strict API compatibility standard that requires each higher POSIX profile to be a superset of the lower profiles. This guarantees that POSIX applications written to the minimal profile (PSE51) will run on a multipurpose profile (PSE 54) on compatible operating systems. These profiles, PSE51 through PSE54, allow the flexibility needed for scaling from deeply embedded applications to high-end workstation applications. The POSIX IEEE 1003.1 standard has continued to evolve with newer revisions in 2008 and 2013 (Figure 2).
The IEEE 1003.13-2003 (POSIX.13) Profiles for Real-Time Applications.
25 Years of POSIX Evolution.
POSIX Conformance and Compliance
The Open Group is an independent third-party organization that has defined and certifies various implementations of POSIX conformance. The availability of such an independent testing body is an important part of the validation required to certify conforming implementations of operating systems. This allows for a vendor-neutral assessment of the POSIX compatibility of an operating system and allows end users to make an informed decision that best suits their application.
The evaluation and selection of an operating system that supports POSIX standards is a key decision that determines the level of reuse and portability that can be designed into the system. POSIX “conformance” and “compliance” are two terms that have been used by vendors somewhat interchangeably to describe their POSIX compatibility. However, the difference between the two is significant.
POSIX “conformance” indicates adherence to the standard without any deviation. A conforming implementation of this standard offers the highest level of API compatibility with the specification. POSIX “compliance,” however, offers a much weaker adherence to the standard. An implementation claiming POSIX “compliance” merely needs to disclose APIs that it supports and the ones that it does not.
A higher level of standard exists when an OS’s conformance is approved by an accredited, independent certification organization. To be conformant with any POSIX standard, the conforming implementation must undergo independent certification using a third party (such as The Open Group) and obtain a POSIX conformance certification. The presence of this certification guarantees to the user a complete adherence to the POSIX standard by the operating system.
Strong Industry Support for POSIX
While the benefits of POSIX outlined above show POSIX’s relevance and importance in embedded environments, it is not an embedded-centric standard. POSIX plays a role in many leading technologies, and a look at how broad POSIX support is among operating systems, both embedded and enterprise, shows that it is a standard that has really seen adoption and usage across many industries. Many UNIX, Linux and UNIX-like operating systems really do a good job of not just conforming or complying to the POSIX standards, but also have POSIX as their native API. Examples include IBM AIX, HP-UX, BSD UNIX, Linux, Oracle Solaris, and the LynxOS and QNX RTOSs. Other operating systems use a POSIX API layer to allow a translation from POSIX to the native proprietary interface of the operating system. Although this adds a slight amount of inefficiency compared to a native API, this is how many RTOSs achieve POSIX compatibility. Examples include VxWorks, Nucleus OS, eCOS and Symbian OS. Even Windows has a POSIX compatibility interface called Cygwin, and this is used to run applications on Windows that were originally built for Linux or UNIX.
This broad support really helps the embedded developer, especially as the lines blur between embedded and enterprise applications, as many software applications that were originally built for more general purpose computer operating systems can easily be migrated to a POSIX-based RTOS. This reduces the amount of software creation, reduces the porting time, and ultimately reduces the time-to-market and cost for new embedded products.
POSIX and Emerging Technologies
The dynamics of the software industry continue to evolve with the emergence of several disruptive technology trends that will continue to define the evolution of the software industry at large and embedded systems in particular. However, the relevance of the POSIX standards has not been diminished by these paradigm shifts, two of which are mentioned here.
Future Airborne Capability Environment (FACE): The FACE Consortium is hosted and managed by The Open Group and provides a vendor-neutral forum for industry and the U.S. government to work together to develop and consolidate open standards, best practices, guidance documents and business models. The FACE Technical Standard defines the framework for creating a common operating environment to support applications across multiple Department of Defense avionics systems. The standard is designed to enhance the U.S. military aviation community’s ability to address issues of limited software reuse and accelerate and enhance war fighter capabilities, as well as enable the community to take advantage of new technologies more rapidly and affordably. The current FACE APIs are heavily based on the existing POSIX standard and define several profiles such as the Security Profile, Safety Profile (Basic & Extended) and the General Purpose profile. It is a testament to the longevity and relevance of the POSIX APIs that this consortium, which was initiated in 2010, relies so heavily on the POSIX standards.
Internet of Things: Another of the emerging technology trends is the Internet of Things (IoT), where billions of devices are expected to connect via the network to communicate with Cloud infrastuctures, as well as with each other. This marks a key inflection point in the embedded industry and its convergence with mainstream enterprise computing. As these embedded devices connect to the network, the POSIX IEEE 1003.13 standard becomes particularly relevant, and the PSE53 profile may become the de facto standard for connected devices since it combines the key elements of small footprint and network connectivity, two of the essential elements for devices that need to connect to the Cloud.
POSIX for the Next 25 Years
It is evident that one need look no further than the POSIX standard as one of the definitive API specifications that has stood the test of time and has the necessary mechanisms to provide the unification needed among disparate execution environments and application requirements. This is essential for achieving broad adoption of legacy and emerging technologies, and the preservation of a critical mass of applications that subsequently helps create a network effect for other applications.
As the industry continues to experience technology shifts driven by processor advances, virtualization, security, Cloud computing and mobility, we can look to the POSIX standard to bridge the gap between legacy environments and emerging applications, and to provide a unified application programming environment that can add compelling value to the technology industry.
San Jose, CA