Linux vs Minix vs UNIX vs POSIX

Reading Time: 4 minutes

unix-logo_1_9.png

First of All, What is Linux?

You see, there is a contradiction on what Linux really is. We see that people refer Linux as an Operating System but on the other hand, some people say that Linux is a kernel. Well, let’s put it this way.

In fact, Linux is a kernel written and named by Linus Torvalds which you can take a look from https://www.kernel.org/. When you think about it, kernel is a useless thingy if there is no software using it since kernel manages hardware based on software inputs.

At this point, we have a cute kernel with us.

On the other hand, Richard Stallman initiated GNU Project, aiming to create a free Operating System with free tools. They were pretty succesful with the mission but there was one thing missing. A proper kernel to manipulate hardware by these tools.

Now in addition to a kernel, we have these pretty GNU Project tools with us.

Both Linux and GNU Project were written with the same UNIX mindset therefore, both were compatible. Hence, they mixed Linux and GNU Project together and crafted this magnificent Full-Operating System called “GNU/Linux”.

But even this kind of bare Full-Operating System GNU/Linux was still not really useful since you couldn’t run applications you wanted such as Web Browser, E-mail etc.

To fulfill this emptiness, distributions such as RedHat, Debian, Arch have come into play. They have provided GNU/Linux with user-specific applications.

To cut a long story short, today people often just use the name of the central kernel to refer to the whole system.

It is for you to decide what you call an “operating system”. Is it just the thing that manages hardware (like Linux) or is it the thing you interact with (like your favorite desktop environment), or maybe something in between like a basic (command line based) GNU/Linux.


Now, What is Minix?

Minix (mini-UNIX) is a POSIX-compliant, Unix-like operating system based on a microkernel architecture by Andrew S. Tanenbaum for use in courses teaching operating systems. Notice the microkernel part, since Linux is based on monolithic architecture.

Before Linus Torvalds released Linux, he was actually working on Minix at school (a Unix-like system by Tanenbaum). As a student at the University of Helsinki, he studied MINIX in an operating systems course and was sufficiently impressed that he bought a PC to run it. Being unhappy about insufficiency of Minix (Like lack of multithreading capabilities), he then used Minix as a platform, guide, and inspiration to develop a Minix clone, named Linux, which he released in 1991.

There was actually a debate between Andrew S. Tanenbaum(Minix) and Linus Torvalds(Linux) began in 1992.  You can read the details here, it is pretty interesting and informative.


UNIX Time!

Unix is an operating system that was born in 1969 at Bell Labs. Various companies sold, and still sell, code derived from this original system, for example AIXHP-UXSolaris. See also Evolution of Operating systems from Unix.

There are many systems that are Unix-like, in that they offer similar interfaces to programmers, users and administrators. The oldest production system is the Berkeley Software Distribution, which gradually evolved from Unix-based (i.e. containing code derived from the original implementation) to Unix-like (i.e. having a similar interface). There are many BSD-based or BSD-derived operating systems: FreeBSDNetBSDOpenBSDMac OS X, etc. Other examples include OSF/1 (now discontinued, it was a commercial Unix-like non-Unix-based system), Minix (originally a toy Unix-like operating system used as a teaching tool, now a production embedded Unix-like system), and most famously Linux.


What about POSIX?

As Alex Martelli described on StackOverflow beautifully, POSIX is a family of standards, defined by the IEEE, to clarify and make uniform the application programming interfaces (and ancillary issues, such as commandline shell utilities) provided by Unix-y Operating Systems. When you write your programs to relies on POSIX standards, you can be pretty sure to be able to port them easily among a large family of Unix derivatives (including Linux, but not limited to it!); if and when you use some Linux API that’s not standardized as part of Posix, you will have a harder time if and when you want to port that program or library to other Unix-y systems (e.g., Mac OS X) in the future.

Leave a Reply