Let’s start with GNU/Linux and its importance today. First we call it GNU/Linux because Linux is just a Kernel with controls the memory, resources, drivers, etc. GNU stands for “GNU’S Not Unix.” It was a project created by Richard Stallman in 1983. The goal was to create a free Unix-compatible operating system that users could study, modify, and redistribute. From it came the GNU C Compiler (GCC), the GNU C Library (glibc), the Bash shell, Core command-line utilities like (ls, cp, rm, cat, etc) along with development tools and libraries. These commands allow us to interact with the Linux Kernel, so the two married are GNU/Linux.
Linux runs much of the internet. Most web servers, cloud platforms, and online services run Linux. Companies such as Amazon, Google, Meta, and Microsoft rely heavily on Linux in their data centers. When you visit a websites, to include this one, chances are Linux is involved.
Linux powers the cloud. Most virtual machines and containers in the cloud environments run Linux. Technologies like Docker and Kubernetes were built around Linux features. Without Linux, modern cloud computing would look much different.
Linux dominates supercomputing. Virtually all of the world’s fastest supercomputers run Linux. Researchers use it for weather forecasting, physics simulations, medical research, artificial intelligence, and more.
Linux is also the foundation of Android. The operating system on most smartphones is based on the Linux Kernel. Every Android device contains Linux at its core.
Linux drives embedded systems such as: Routers, Smart TVs, Network appliances, Industrial controllers, Automotive systems, Internet-of-Things devices. Many people are using Linux without even knowing it.
Linux fuels modern Open Source Development like Apache Software Foundation, Mozilla Foundation Projects, Kubernetes, The FreeBSD Project collaborations all benefited from the broader open-source culture that grew alongside Linux.
Linux changed the economics of computing because before Linux, organizations often had to buy expensive proprietary Unix systems, which we’ll get into. Linux gave businesses, universities, government, and hobbyists access to a Unix-like environment at little or no software cost. This drastically lowered the barrier to learning operating systems, networking, and software development.
Historically, Unix introduced many of the ideas that define modern operating systems, Linux’s importance is that it made those Unix concepts available to everyone on inexpensive hardware and eventually became the standard platform for servers, cloud computing, embedded devices, and much of modern infrastructure.
Unix taught the industry how modern operating systems should work. Linux made those ideas available to the world at scale.
Now Unix is a full operating system whereas it didn’t need to be piece together like Linux with a Kernel and the GNU tools. Unix was created in 1969 at Bell Labs by Ken Thompson, Dennis Richie, and others. It introduced: Multi-user computing, Multitasking (doing multiple jobs or threads), Hierarchical file systems, Device-independent I/O (input and output), and small programs connected to get through pipes for example:
ls -l /usr/bin |less
Here the “ls” list command with the “-l” long option will list the contents of the /usr/bin directory, and if the contents are very long the “less” command will introduce pagination for easier readability.
Unix was written in C which allowed for portability. A problem with previous machines is they used Assemble Language which was very difficult to program in and read. Each program would have to be rewritten for each different computer. Now with C, they can compile the program for the existing hardware/computer.
Programmers learned C, Shell scripting, Operating system concepts, and networking. Now at this point you might be saying, “Did Linux take all of these concepts?” Well, that brings us to what happened with Unix and how Linux came about.
A professor John Lions wrote a book that you can still find on the web that described line-by-line what the Unix operating system code did, and it was taught in Universities around the world. The heads of Unix AT&T said no more. We don’t want anyone to know how our system works, so with Unix version 7 came with a teaching ban. This left Computer Science students with an uneven understanding of how operating systems worked. They were only being taught the theory.
This brings us to a Professor Andrew S. Tanenbaum. He wanted to teach and write a book like John Lions did, so he wrote an operating system from scratch which took him a few years to do. It was called MINIX. Tanenbaum was running his operating system on bare metal server hardware, and after an hour or so it would crash, so Tanenbaum wrote a virtual machine to run MINIX, and MINIX worked fine. A student of Tanenbaum mentioned that there was a thermal sensor that would throw an interrupt 15 shutting down the computer to protect it, however Tanenbaum could not find this in the Intel documentation. Tanenbaum being frustrated and almost giving up on his project put a piece of code in to check for interrupt 15, and sure enough after running MINIX for a while he got a message saying, “This is interrupt 15. You should not see me because I don’t exist.”
After this Tanenbaum fixed MINIX, which bings us to Linux. Tanenbaum wanted to keep MINIX small for teaching, and one of his students Linux Torvolds wanted more. They were working and sharing ideas on a news group, which led to Linus growing Linux. He only had a working Kernel but with GNU Tools being around he was able to marry the two into a fully working operating system.
Now, it’s worth mentioning that MINIX is a micro kernel while Linux and Unix are monolithic kernels. The difference in short is in a monolithic kernel all device drives are included which give them super power, and can result in security issues. Most of a kernel today are drivers, and drivers potentially insecure. Most programmers are interested in memory management or the scheduler. Drivers are rarely worked on after published, nor tested well in some cases.
In MINIX, an audio driver cannot write to the disk nor spawn processes without the kernel’s approval. This back and forth causes latency, so most large operating systems do not use it. However micro kernels are in CPU chips and the like.
So we can see if Andrew S. Tanenbaum gave up on MINIX, the landscape would look different today.
I hope you enjoyed this article as much as I did writing it. I will include the line here to Andrew S. Tanenbaum: The Impact of MINIX.
