Operating systems

  • Authors:
  • Peter J. Denning;Walter F. Tichy;Edward D. Lazowska;Jochen Liedtke

  • Affiliations:
  • -;-;-;-

  • Venue:
  • Encyclopedia of Computer Science
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

Early operating systems were control programs a few thousand bytes long that scheduled jobs, drove peripheral devices, and kept track of system usage for billing purposes. Modern operating systems are much larger, ranging from hundreds of thousands of bytes for personal computers (e.g. MS-DOS, Xenix) to tens of millions of bytes for mainframes (e.g. Honeywell's Multics, IBM's MVS, AT&T's Unix) and hundreds of millions of bytes for some servers (Microsoft's Windows NT). In addition to managing processors, memory, and dozens of input-output devices, modern operating systems also provide numerous services such as Internet communications, Web communications, interprocess communications, file and directory systems, data transfer over local networks, and command languages and graphical user interfaces for invoking and controlling programs. These high-level services hide the primitive facilities of the base computer, such as interrupts, status registers, and device interfaces, from the user. The operating system builds its high- level services by wrapping the low-level hardware facilities in layers of software, resulting in a powerful virtual machine that is much easier to use than the basic hardware. Thus an operating system provides two classes of functions: orderly allocation of computing resources among processes contending for them, and an extended machine that provides a powerful programming environment. These two classes are not independent; poor structure can make resource allocation a nightmare. The microkernel architecture to be discussed below is a good structure that enables efficient resource allocation and powerful programming environments.