Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
User Journal

Journal severoon's Journal: What is an Operating System? 1

I was recently involved in a discussion right here on /. in which the various parties involved were at loggerheads because they did not share a common view of what exactly an "operating system" is. I thought I'd dash off a quick response and tell them the proper definition of the term so we could get on to the heart of the matter. Five minutes into rewriting my post, I realized I myself don't really know exactly where OSes end and applications begin these days.

So, I did what a tech geek does...I googled definition of operating system. This created more questions than answers, particularly this link right back here to /. (this site seems to be the Tigris and Euphrates of tech geek discussions). Uh oh, I thought, Looks like I'm gonna have to get theoretical on this problem.

So I defer to the man who literally wrote the book on operating systems, Andrew S. Tanenbaum's seminal work on the subject, appropriately titled Modern Operating Systems, my college text. Below is an extremely abridged account of his definition.

Computer software can be roughly divided into two kinds: the system programs, which manage the operation of the computer itself, and the application programs, which solve problems for their users. The most fundamental of all the system programs is the operating system, which controls all the computer's resources and provides the base upon which the application programs can be written.

Next there is a figure that nicely sums up the whole of a computer system consisting of six layers, the top two of which are divided into three parts each. Starting from the bottom, the layers are: Physical devices, microprogramming, machine language, operating system, compilers/editors/command interpreter, banking system/airline reservation system/adventure game. The bottom three layers are designated as "hardware" (with the proviso that machine language is simply a specification built into the hardware, though manufacturers typically treat it in their manuals as hardware), the next two are "system programs", and the top layer is "application programs". It is interesting to note that though Tanenbaum recognizes the command interpreter, or shell, with the same classification of "system programs" as the OS, he considers it distinct from the OS itself. In other words, a shell is not part of the operating system, which directly contradicts the thoughts of many of the participants in the above-linked /. discussion.

He goes on to say:

Most computer users have had some experience with an operating system, but it is difficult to pin down precisely what an operating system is. Part of the problem is that operating systems perform two basically unrelated functions, and depending on who is doing the talking, you hear mostly about one function or the other. Let us now look at both.

This is followed by two sections entitled The Operating System as an Extended Machine and The Operating System as a Resource Manager. By way of example, the first section talks about how complicated it is to read a file off of a floppy disk if one must deal directly with hardware using machine langauge. Working through assembly port space, the floppy drive must be instructed to start spinning, the appropriate amount of time must pass for the drive to spin up, the disk arm must be moved to the appropriate locations, specific byte patterns representing commands must be issued to retrieve data block by block, etc. Instead of requiring every application developer needing to access data on a floppy, the OS defines a software module that sports a particular interface; all floppy manufacturers must deliver this bit of software with their floppy drives, and that bit of software must implement the required interface for said OS. This bit of software is called a driver. In this way, application programmers need only deal with a software module that does not change from floppy drive to floppy drive and also provides a highly abstract view of the floppy drive that can act on instructions such as get me the file named x.txt .

In the second section, Tanenbaum talks about the OS as a resource manager. The example in this section refers to a situation where several applications are sending documents to the printer simultaneously. If all these apps were allowed to simply deal directly with the printer driver, it would receive the requests all at once and would process them as such, printing one or more characters from document 1, then randomly switching to document 2, then 3, etc. The role of the OS in this scenario is to buffer all requests of a particular shared resource to memory or disk and then send them off in an orderly fashion, one after the other, fully completing each job before starting the next one.

This seems to me to be a very sensible definition of an operating system. Some might be uncomfortable with it, though, because it doesn't include a shell--in fact it specifically excludes it. We are used to thinking of a machine with an operating system as being a usable computer. Without some kind of interface to the OS, the machine is still, as Tanenbaum calls it, "a useless lump of metal." But to these people I would point out that there's really no reason that usability must enter into this definition. The definition of a computer--that is, the hardware making up a computer--clearly does not include an OS and cannot therefore be useful in any meaningful way. Usefulness doesn't enter into that definition, so it seems arbitrary to require that it be a binding condition of an operating system.

So for the purpose of figuring out where an OS begins and ends, consider this question: what can change about a usable computer system that we would not consider an alteration of the operating system? Clearly, if I take out one floppy disk drive and plug in a different floppy disk drive made by a different manufacturer, we would not say that the operating system has undergone a change. So, we are allowed to change hardware and their associated driver software without changing anything about the OS. However, as I pointed out before, all floppy manufacturers must provide a driver that implements a specific software interface that is defined by that particular OS. So we are allowed to vary the implementation from driver to driver, but not the interface it provides to the OS. So driver interface specification is part of the OS, and if those interface requirements of hardware manufacturers change, this can be said to be an OS change. So that's where an OS begins.

Now let's consider where an OS ends. Let's say we have a Linux system with bash installed, and we install tcsh and remove bash. Have we changed the OS on that computer? I must agree with Tanenbaum here as well and say no...we've merely uninstalled one app and installed another. On the other hand, if we change the way the OS manages drivers, schedules threads for execution, or manages memory, we have changed the OS. If we change the software interface to any of the hardware resources that are shared by all system or application programs, we have changed the OS. Swapping one command shell for another certainly does not require that any program on the system change the way it's accessing any hardware resource via the OS, so a shell cannot be considered a part of the OS.

This is all very interesting when we consider a modern "operating system" like Windows 2000. With a standard installation of this OS, we not only have an operating system but a whole lot of system and application programs, such as the NT command shell, Windows Explorer, Internet Explorer, and Notepad, just to name a few. Heck, the GUI itself is nothing more than a complicated kind of visual command shell on steroids, so even that is not part of the OS itself. (This is obvious in Linux, with a wide choice of GUIs such as KDE, Gnome, Enlightenment, WindowMaker, owl, etc.) Of course, because it's always been historically delivered together as one big bundle since Windows 95 (and some would argue, even Windows 3.1), consumers have been trained to think of it as part of the OS. But in truth, the only thing stopping other companies from writing alternative GUIs for Windows is that Microsoft will not publish the entire set of software interfaces that sit atop the OS proper. It may even be the case that there is no strict software separation between the GUI environment layer and the OS proper. Still, if MS updates the way windows are drawn on screen, I would say that nothing about the OS has changed, same as if they changed the way the NT command shell works.

There is a reason I'm taking such great pains to clearly delineate the boundaries between programs and the operating system. With this understanding, it is easy to see the court case against Microsoft's bundling of Internet Explorer with Windows in a new light. If it is acceptable that Windows should come with the NT command shell, a GUI environment, and Notepad, why not Office and Internet Explorer? They are simply following a long standing tradition of providing various applications with the OS. And if this is allowed, there's no legal reason to earmark one application as being exempt from prosecution while another is not.

In my estimation, a proper understanding of what an operating system is allows one to draw the distinction between OS and application very clearly. This approach would make such rulings against bundling enforcable, which I think is very important because instituting laws that cannot be enforced breeds contempt for all law.

Having said that, I do think that any company ought to be allowed to sell its products in any way it chooses. Even under well-regulated capitalism, I don't see a problem with allowing MS to bundle all of its apps with their OS, selling the whole kit'n'caboodle as a single package if that's what they want to do. Again, making distinctions between apps like Word and Notepad seem arbitrary to me and ultimately hurtful to commerce. If MS will not be required to split the OS from all other code, then they should be allowed to bundle any and all apps they like from a legal standpoint.

This discussion has been archived. No new comments can be posted.

What is an Operating System?

Comments Filter:

The optimum committee has no members. -- Norman Augustine

Working...