MiniFAQ about MINIX 3 and POSIX
MINIX 3 is POSIX conformant. This document discusses what that means.
What is POSIX?
"To make it possible to write programs that could run on any UNIX
system, IEEE developed a standard for UNIX, called POSIX, that most
versions of UNIX now support. POSIX defines a minimal system call
interface that conformant UNIX systems must support. In fact, some
other operating systems now also support the POSIX interface."
-- Operating Systems Design and Implementation, 2nd ed., p. 11
Before the release of Minix 2.0.0, efforts were made to check
it against the then-current version of the official POSIX standard,
International Standard ISO/IEC 9945-1, also known as
ANSI/IEEE Std 1003.1, First edition, 1990-12-07.
The full name of the document is
Information Technology -- Portable Operating System Interface (POSIX)
part 1: System Application Programming Interface (API) [C Language].
There have been a number of revisions and extensions since 1990. As of early
2005, the latest version of the basic document is known as
IEEE Std 1003.1, 2004 Edition, Single UNIX Specification Version 3
.
Where Can I Get a Copy of the POSIX Standard?
Hard copy is available from the
IEEE (Institute of Electrical and Electronics Engineers)
in New York. It's expensive,
however. Even paying to have a PDF document e-mailed to you is quite
expensive. You can get information on purchasing IEEE documents
on-line at
http://standards.ieee.org/.
You might also do well to look in the engineering library of a local
university.
Possibly more useful than the IEEE document, and certainly considerably
less expensive, is the book
POSIX Programmer's Guide,
by Donald Lewine, published by O'Reilly. It's listed at about US$35 on
Amazon,
with used copies from US$16 (prices noted Feb 2005) .
The
Open Group (http://www.opengroup.org/)
has the
Single Unix Specification
online. They want you to register, but you can read documents on-line
for free. You can also buy hard copy or text on CD-ROMs, from their
site, but these are expensive, too.
Does POSIX Compliance Mean I Can Compile Any Program from Another POSIX-Compliant System on MINIX 3?
Well, maybe... in principle, yes, but many systems (Minix included)
provide extensions to the basic C library functions defined by POSIX,
so you may have to deal with these in porting a program. Also,
standards, no matter how carefully defined, may contain elements that
can be interpreted more than one way. Many things outside the scope of
a standards document may make porting a program difficult. The GNU
version of the make(1) utility, for instance, provides
facilities that are not present in the Minix version; you might have to
either port GNU make first or devote some effort to modifying a
Makefile before you could compile on Minix a package developed on a
GNU-ish system. Finally there may be basic assumptions about system
resources that affect how a program works. One that often affects
Minix users is the lack of virtual memory -- programmers writing for
environments that provide virtual memory may assume that memory is
effectively unlimited. This is very much a problem with 16-bit Minix;
for 32-bit Minix it is becoming less problematic as newer computers
come equipped with amounts of physical memory undreamed of just a few
years ago.
[I would appreciate suggestions for additions to this page -- ASW]
|