J-F Bilodeau's Blog @ chronogears.com

Saturday, March 22, 2008

What is Linux?

Talking to Microsoft Windows users I find the conversation usually goes the following way:
  1. They spout out what little they know about Linux from a Microsoft perspective, trying to sound like they actually know what this Linux thing is.
  2. There is a silence in the conversation.
  3. I'm asked the question: 'Is Linux really that different from Windows?'

It's a simple question, but I find it a tough one to answer. What makes it difficult is the fact that most users equate GUI (Graphical User Interface) with the OS (operating system).
Before moving along, let's make sure that we understand the difference between a GUI and an OS. For starters, Windows is an operating system that includes a GUI. Mac OS X is an operating system that includes a GUI. Linux is an operating system that may or may not include a GUI.

So, what's an OS?
The simplest way to think of an operating system is in terms of hardware vs. software. The hardware consists of the parts of your computer that you can touch. Software is the logical, invisible part that makes your hardware do things. Software is simply a series of instructions that your computer follows. The software is typically packaged up in 'programs,' like OpenOffice, Microsoft Office, Firefox, etc...

Computers are really dumb and don't think. They blindly follow whatever instructions they are given.
This said, the operating system is a program that exists to control access to hardware and software resources like your memory (RAM), hard-drives, network, display, keyboard, mouse and so on.
Thus, a program like OpenOffice needs to ask the OS which keys were pressed on the keyboard. OpenOffice also needs to ask the operation system to draw letters on the screen. Behind the scenes, OpenOffice also needs to ask the operating system to allocate memory, load and save information to the hard disk, and send printing instructions to your printer.
The application communicates to the operating system using services or APIs (Application Programming Interface).

In turn, the operating system will rely on a 'kernel' to translate the service request to commands that the specific hardware of your machine can understand.
The following diagram displays the relationships between some applications and the operating system.
Operating System Layers
Let's go back to the original question: What is Linux?
The answer is: Linux is a kernel. No more. No less. It is the fundamental piece of code that controls the resources on your machine. Windows has a kernel. Mac OS X has a kernel. Pretty much every operating system has a kernel.
However, a kernel provides API that computer programmers use to write programs. End users do not interact directly with the kernel. To allow users to interact with their computer, a set of tools are provided with the operating system. In the world of Windows, you are familiar with the Start menu, the Control Panel and the Windows Explorer. These are some of the operating system's tools that one uses everyday to control the machine. These program are part of the operating system, but run on top of the operating system APIs. Such tools are sometimes called shell programs.

Linux is only a kernel. It does not include a shell or programs. However, Linux is most commonly packaged with a combination of free programs from another--as of yet incomplete--operating system called GNU. Because it borrows from the GNU project, you may hear people refer to the operating system as GNU/Linux.
With the combination of the GNU tools and the Linux kernel, we now have a complete operating system.
Well, it's complete in terms of functionality, but the average, everyday user would not consider it complete due to the fact that you do not have a GUI at this point. In other word, there are no graphics, icons, mouse, etc. Just 'cryptic' commands typed on a white on black screen.
So, the answer to the question: Is Linux like Windows seems to be no for multiple reasons.
  1. The Linux kernel has comparable functionality to the Windows kernel, but exposes the API differently. Thus, programs written for Linux do not work on Windows, and vice-versa.
  2. Windows is an operating system, while Linux is just a kernel (a part of the operating system).
  3. Linux is free software that is open to anyone to see and modify. Windows is proprietary and is closed -- no touchy the kernel!

There are more differences to discuss, but I would like to finish this post with the following point to consider. Linux is not a GUI. In other words, it is not the program that controls what you see on the screen and how you interact with your machine. It is the glue that ties together your hardware with your machine. The nitty-gritty technical details are very different from Windows.

BUT, we haven't talked GUI. In the world of Linux, there is not one GUI, not two GUIs, not three GUIs, but dozens of GUIs available. Linux has been used anywhere from digital video recorders to supercomputers to your average, every day desktop machine (like mine ;)).
In future installments, I would like to discuss how Linux can look and behave in a fashion that is familiar to Windows users. However, I will continue to emphasize that Linux is not like Windows...and why that's a good thing!

Labels: , , , , ,

0 Comments:

Post a Comment



Links to this post:

Create a Link

<< Home