As for a definition of "operating system" -- well, it just doesn't happen, even in the DOS reference texts I have available. How many others out there hear the term "DOS" all the time wherever "personal" computers are discussed, but don't want to admit that they aren't sure what it refers to? No, you don't have to put your hand up -- just read on, if you'd like a little light cast on the subject.
Well, you already know by now that "DOS" stands for "Disk Operating System". What's an "operating system", you ask? The best definition I have seen appeared in the January, 1993 edition of PC/Computing (c. 1992, Ziff-Davis Publishing Company), in John Dickinson's column. He makes it sound so simple:
"Operating systems are really just programs that provideYup. Sounds good. "'Environmental services'?", you're saying? "That's nice, but somehow I don't think it relates much to preserving the Amazon rain forests or recycling our garbage." You're right -- it doesn't. John is referring to services provided by the computer system itself so that the guy who wrote your favourite word-processing program doesn't have to worry about writing them into his program. Services like finding and retrieving the program code from your hard drive. Or allocating memory space to your program and the document file you're creating. Or like copying that document from your computer's memory to the printer or a disk file so that it doesn't evaporate when you turn off the computer. Or... Hmmm. This is getting a bit technical. Let's back up a bit and define some terms, then look at computer systems in a very general sense so that we can get a better idea of where an operating system fits in the grand scheme of things.
environmental services commonly needed by all software."
First, the easy part. In front of you, you have the hardware: the keyboard, the monitor, and the box which contains most of the other equipment, including your computer's memory banks, floppy drives, your hard drive, and a large circuit board (the "motherboard") on which is mounted the CPU (central processor unit -- the "brain" of your computer). The hardware is just that: hardware. You can pat it or throw it out the window, but it won't do a blessed thing for you unless you tell it -- very explicitly -- what to do.
That's where software comes in. Computers don't think, they just follow instructions. Very, very quickly. Like, millions of instructions per second. A set of instructions is a program, and it must be written to deal with every little detail of what's supposed to happen. The computer will do only what it is told to do, no more and no less. Even if the instructions are wrong, the computer will blissfully follow those instructions, and will do exactly what it was told to do, completely unmindful of the havoc which may result. That's why another friend of mine calls his computer "TOM" -- for "Totally Obedient Moron". (However, he has other names for it when it doesn't do what he expected it to.)
"Software" is the usual name for program code, of whatever kind. Unlike hardware, you can't touch it, or even see it unless it's converted to some visual representation. (Well, maybe YOU can see the magnetic encoding on my floppy disks, but I can't!) Software comes in a variety of forms. We see it as diskettes you load into your computer; the CPU of your computer sees it as a string of voltage pulses in binary code. Without software, your shiny expensive hardware is just a boat anchor, and not a very good one.
There are two basic classes of software: operating systems, and application programs. In the latter category, I am including programs like your word-processor or database or spreadsheet, your utilities, and your games and other entertainment software. Operating systems are really intended for your application programs to use to "talk" to the hardware, i.e., they provide an interface between, say, your word-processor and the hardware. The programmer who wrote your word-processing software could have provided "environmental services" from scratch within the program, but it would make the program much larger and more complicated -- and much more time-consuming to write and test. So he relies on the operating system to provide those services for him. These services are carefully documented by the publisher of the operating system, and that documentation is available to any programmer who wants to write software to run under that operating system.
Operating systems do a lot of other things as well. For instance, it is the operating system which organizes the data on your floppy and hard disks so that you and your application programs can find that data. The operating system allocates memory space to your application software and the data files they create, and also allocates memory space for the hardware items which need it -- like your video adapter, your hard drive controller, your network adapter (if you have one), and other such things. The computer itself also needs memory space to hold certain parts of its internal program code. Your operating system is responsible for ensuring that all of these things stay out of each other's way.
On top of that, your operating system provides a bunch of utilities for you, so that you can format any disk drive you want to, copy a file from one disk to another -- that kind of stuff. Those utilities have tended to be pretty basic (or even non-existent) in MS-DOS and its lookalikes, so there are lots of third-party vendors out there just screaming for the chance to offer you a better set of utilities than DOS provides -- at a price. However, the advent of MS-DOS 6.0 suggests that there will be less need for third-party utilities in the future.
So far, I've been speaking about operating systems in general. There are really umpteen different "DOS's" out there; they all refer to an operating system written for a computer system which has one or more disk drives as its primary or only storage medium. There are also some entirely different operating systems in addition to all the "DOS's" -- not all computers use disks for primary storage; for example, the old IBM 360 mainframes used refrigerator-sized high-speed tape drives which you still see in the occasional B-grade sci-fi flick. If you want to be fussy, the expression "DOS" should be prefixed with some indication of which "DOS" is referred to. For instance, "MS-DOS" refers specifically to the versions of DOS produced by Microsoft Corporation, while "DR-DOS" refers to the disk operating system produced by Digital Research Corp. as a direct replacement for MS-DOS in IBM-compatible microcomputers. IBM also produces its own version, known as "PC-DOS", and tailors it for the IBM PC and its successors. It is also essentially interchangeable with MS-DOS in most circumstances -- nearly any program which will run on MS-DOS will also run on DR-DOS and PC-DOS. However, because of Microsoft's overwhelming dominance of the disk operating system market, the expression "DOS" all by itself is usually assumed to refer to MS-DOS and all of its variations and competitors, and therefore is taken to refer to that entire family of disk-based operating systems written for the so-called "IBM-compatible" CPU's and their clones. Strictly speaking, this isn't entirely accurate -- after all, computers do exist which require a disk operating system but which cannot use MS-DOS or its lookalikes. But, that's life. Nobody promised me it had to make sense.
There are other operating systems written for the Intel family of processors. I've already mentioned DR-DOS and PC-DOS, but as I've said, these are kissing cousins of MS-DOS. Some of these other operating systems for the Intel processor family are becoming more popular, particularly as the high-powered hardware needed to take advantage of their advanced abilities has decreased sharply in cost over the last year. IBM's OS/2 Version 2.0 has become a force to be reckoned with and is gaining ground; and various flavours of UNIX for IBM-compatible computers have been around for years, but have been popular only among "power-users" and for special applications on the microcomputer platform. Windows NT has been much ballyhooed, but hasn't appeared yet -- Microsoft keeps telling us it will be shipped "soon". Like OS/2 2.0, it is said to offer advanced capability and will require top-end microcomputer hardware.
The Microsoft Windows (as distinct from Windows NT) which has taken the IBM-compatible world by storm is not a true operating system -- it needs an operating system underneath it to run. The same applies to Geowork's Ensemble, Digital Research's GEM, and to Quarterdeck's DESQview. More accurately, they provide a Graphic User Interface (GUI for short -- pronounced "gooey") between the operating system, the application program, and the user. Nevertheless, these GUI's do have some of the characteristics of an operating system: for instance, because DOS itself cannot provide some of the advanced services requested by Windows applications, Windows often bypasses DOS and communicates directly with the hardware, thus itself providing the requested services to the application. Because of that, a Windows program will not run on DOS alone, or on any other operating system which does not specifically provide support for Windows applications -- such as the early versions of OS/2.
There are other microcomputer hardware platforms as well, each of which has its own operating system. For instance, there is the NeXT computer system, which runs on a variant of UNIX known as NeXTStep; the Macintoshes use the System 7 operating system; Amiga runs on AmigaDOS; and Atari, which also has its own operating system which is usually stored on a chip within the computer. There are several others as well. Many of those computers run on the Motorola family of processors, so cannot run on Microsoft's MS-DOS or its cousins (although some of them can read or even write MS-DOS-compatible files). And then there are the minicomputers and mainframes, each of which has its own operating system. Because each operating system is different, an application program written for one operating system cannot run under another unless the other specifically provides support. For instance, OS/2 2.0 and later provides support for DOS and Windows programs as well as for OS/2 programs -- but a UNIX application program won't run under OS/2, or under MS-DOS or its cousins.
Each new version of an operating system provides more utilities, and often, better optimization of its existing features. Each new version also will take advantage of capabilities in new hardware which didn't exist when previous versions were written. For instance, MS-DOS 1.0 and 1.1 did not support hard drives at all; 360KB diskettes were not supported until Version 2.0 became available; MS-DOS 3.3 was the first version of MS-DOS to support 1.44MB floppy drives, and the new 2.88MB floppy drives are not supported by any version of MS-DOS earlier than MS-DOS 5.0. While every operating system update tries very hard to provide "backward compatibility" so that older application programs can continue to use the newer version of the operating system, application programs now being written will often take advantage of services provided by newer operating system versions which don't exist in the older versions. So if you have an older version of DOS and are buying new application software, either upgrade your operating system or make sure that your new application package has been tested on your existing version of DOS. For example: many DOS-based application programs available now will run only on MS-DOS 3.0 or later. Windows itself requires MS-DOS 3.1 or later. If you are still running your system on DOS 2.0, you may have difficulty buying application software today which will run on that system!
Still not entirely clear on what an operating
system is? Let's try an analogy. You'll remember that the application software
"teaches" your computer how to handle a particular task you want it to
do, while the operating system talks to the hardware. Let's say your personal
"application programming" is what you went to school for years and years
to learn, so that you know how to read this article and solve the problems
that come up from day to day without having to go dig up a text-book. On
that basis, your "operating system" is what lets you walk around without
falling down -- and without requiring that you think very much about it,
even when chewing gum at the same time. Your "application program" decides
where you want to walk to, and communicates that to your "operating system.
Your "operating system" then looks after the mechanics of moving your legs
in the right way at the right time so that you don't fall on your face.
Your "operating system" also does things for you like keeping your lungs
and heart going at the rate you need at the time, and therefore providing
sufficient blood to your brain so that it can run your "application programs"
without crashing. And while your "operating system" is doing all that without
any conscious thought on your part, it's also attending to the digestion
of that humungous pizza you had for lunch -- anchovies and all. Just think
how complicated school would have been if you'd had to learn how to do
all that as well!
Robert Mayhew
copyright 1993