Home
next up previous contents
Next: The Human Up: The Computer Previous: Information Processing

>

Operating System Concepts

As pointed out in section 2.1.3, operating systems serve two purposes, both making it easier for users to interact with a machine: managing a system's resources on the one hand and shielding users from the hardware on the other hand (3-5). System resources include, for example, CPU time, peripherals, and memory (4).
Most computers, for example, allow users to work with several programs, but only one process can run at any one time (Tanenbaum 27).32 A so-called scheduler, which is part of the operating system, switches from one program to another after a tenth or hundredth of a millisecond, so that the user has the illusion of several programs running at one time (61-63). Furthermore, without an operating system, users would have to cope with the motor of a floppy disk drive, the disk arm, and so on in order to write data on a floppy disk (3-4). Since programmers and users do not want to cope with the details of every piece of hardware of a machine, they are presented an abstraction of the underlying hardware.
Computer systems are often regarded as a system of layers; Tanenbaum, for example, differentiates between:

  • the physical devices, such as flopy disk drives, hard disk drives, etc.,
  • the microprogramming, which is the software controlling the physical devices,
  • the machine language, which is defined as the set of instructions interpreted by the microprogram
  • the "pure" operating system, often referred to as the "kernel",
  • system programs like command interpreters and editors,
  • and, finally, application programs, such as text processing software, and games (2).

While this differentiation is debatable according to Silberschatz and Galvin, who point out that there is no universially accepted definition of what is part of the operating system and what is not (5), it gives an idea of how each layer provides a cleaner interface to the next layer (Tanenbaum 2). In other words, each layer could be regarded as a translator to the next layer, providing easier to use functions.
Programers rely on some of these functions when writing code for a computer, using so-called libraries or Application Programming Interfaces (Chernicoff 13; Silberschatz and Galvin 662-663). These libraries allow programmers to read a file from a floppy disk without knowing anything about the technical specifications of the floppy disk drive.


 
Figure 1: A MacOS Error Message


Unfortunately, this makes the undertaking of this paper a difficult one. A user's "conversation" with a computer system has to be regarded as a conversation with one or more layers, although the user only interacts with the surface. Thus, several parties may be responsible for utterances made by a system, the programmer(s) of a program, the programmers of an operating system, hardware suppliers, even administrators of a remote system (the latter will be further discussed in section 5.3.3). Furthermore, as pointed out in the previous section, errors occur due to different performance problems, be it a busy CPU or a network error. Figure 1, for example, shows an error message box from the Macintosh which was displayed after an application crash. Which layer is responsible for this error? Several factors may account for it, for example

  • the program may have a bug (a software error),
  • the operating system respectively the libraries may have a bug,
  • the disk from which the application tried to read a file may have caused the crash.33

Moreover, most users do not know anything about the layers of a system (and are not supposed to); thus, they are less likely to understand the reason for the crash. This point will be further discussed in section 5.3.

>


next up previous contents
Next: The Human Up: The Computer Previous: Information Processing

Tom Alby
2000-05-30
> _uacct = "UA-276221-6"; urchinTracker();