|< Free Open Study >|| |
All this talk of flavors and the Unix alphabet soup is probably making you wonder what the difference is between all of them. If you've heard anything at all about Linux in the media, you've probably heard it described in a number of (sometimes inaccurate) ways: "Alternative Operating System", "Upstart OS", or "Competitor to Microsoft Operating Software." These are true to a degree, but like so many other things, it unfortunately depends on how you define an operating system, and on how you define Linux itself.
The technical definition of an operating system is generally accepted to be a piece of software that performs resource and process management tasks for application software. Now, that's a pretty dry definition, so let's break it down a bit into the following categories:
A resource is anything that an application might want to make use of. System memory, hard disk drives, serial ports, video cards, display adapters, and network cards are all examples of resources that need to be managed—essentially, any hardware in the computer. The operating system must manage these resources— and protect them! On multiuser systems you don't want hostile users to be able to access your resources and data, and even on single-user systems you don't want one program's mistake to crash an innocent "byte-stander." To this list of resources, you can actually add the CPU (or CPUs, if you have a multi-processor computer). A CPU can only execute one instruction at a time, so if multiple programs need to run at the same time, they have to be managed. This management of the CPU and the related tasks of managing which program gets to run on the CPU in what order (and how to start new programs) is called process management.
So, in a nutshell, an operating system generally only has to provide a framework that a user's application software can run within. This definition doesn't say anything at all about a graphical user interface (GUI), or even any user interface at all. However, since a computer system isn't really usable without these features, many people extend the definition of an operating system to include some kind of user interface. Generally, then, an operating system is usually split into two parts: the kernel (sometimes called the monitor, among other things) and the system libraries.
The kernel is the part of the operating system that fulfills the core parts of the definition. The kernel manages I/O, system memory, the disk drives, and any other hardware that's been put into the system, and also performs process management (i.e., starting and multitasking programs). The kernel can be thought of as the bare-bones framework that everything else depends on and runs within. Since the kernel (by definition) does not include a user interface, users never see or interact with it directly; in a very real sense, kernels are indistinguishable from the perspective of end users, except insofar as one kernel may appear to perform better than another. (Kernels are, of course, very different from the perspective of software developers.)
The system libraries are what truly distinguish operating systems from each other. These are the tools and programs that actually implement the basic system services, such as a GUI, or a text interface. These are the libraries that actually make the system usable. However, these libraries do not provide any actual programs; for example, an email client or web browser would not be part of the system libraries, but would instead be considered a user application.
If you're a bit (or a lot!) confused by this mincing of words, you're not alone. This is just one author's way of describing these concepts. In practice, different operating systems actually draw these boundaries in different places. Where kernel space ends and user space begins varies by product, and sometimes even by product version. In other words, the definition of an operating system can vary by operating system vendor. Different operating systems have equally different architectures, and you generally don't need to care about the architecture of any system other than your own. So, the next question is, "What about Linux?"
Strictly speaking, Linux is "merely" a kernel. That is, Linux is a piece of software that manages resources and processes, but provides no system libraries or user interface. Since Linux is just a kernel, it requires a set of system libraries to become a useful environment.
If Linux is just a kernel, where do these system libraries come from? Who writes them? Who maintains them? Obviously, whoever maintains these libraries makes a huge contribution to Linux systems in general. In the vast majority of Linux installations, the system libraries are the GNU utilities, written and maintained by the Free Software Foundation.
|< Free Open Study >|| |