This is an old revision of this page, as edited by 72.22.138.12 (talk) at 20:57, 26 October 2006 (→Today). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 20:57, 26 October 2006 by 72.22.138.12 (talk) (→Today)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)You must add a |reason=
parameter to this Cleanup template – replace it with {{Cleanup|July 2006|reason=<Fill reason here>}}
, or remove the Cleanup template.
This article needs attention from an expert on the subject. Please add a reason or a talk parameter to this template to explain the issue with the article. When placing this tag, consider associating this request with a WikiProject. |
An operating system (OS) is a software program that manages the hardware and software resources of a computer. At the foundation of all system software, the OS performs basic tasks such as controlling and allocating memory, prioritizing system requests, controlling input and output devices, facilitating networking, and managing files. It also may provide a graphical user interface for higher level functions.
Introduction
Modern general-purpose computers, including personal computers and mainframes, have an operating system (a general purpose operating system) to run other programs, such as application software. Examples of operating systems for personal computers include Microsoft Windows, GNU/Linux, and Mac OS.
The lowest level of any operating system is its kernel. This is the first layer of software loaded into memory when a system boots or starts up. The kernel provides access to various common core services to all other system and application programs. These services include, but are not limited to: task scheduling, memory management, disk access, and access to hardware devices.
Apart from the kernel, an operating system is often distributed with system software that manages a graphical user interface (although Windows and Macintosh have integrated these programs into the operating system), as well as utility programs for tasks such as managing files and configuring the operating system. Oftentimes distributed with operating systems are application software that does not directly relate to the operating system's core function, but which the operating system distributor finds advantageous to supply with the operating system.
Delineating between the operating system and application software is not a completely precise activity, and is occasionally subject to controversy. From commercial or legal points of view, the delineation can depend on the contexts of the interests involved. For example, one of the key questions in the United States v. Microsoft antitrust trial was whether Microsoft's web browser was part of its operating system, or whether it was a separable piece of application software.
Like the term "operating system" itself, the question of what exactly the "kernel" should manage is subject to some controversy, with debates over whether things like file systems should be included in the kernel. Various camps advocate microkernels, monolithic kernels, and so on.
Operating systems are used on most, but not all, computer systems. The simplest computers, including the smallest embedded systems and many of the first computers did not have operating systems. Instead, they relied on the application programs to manage the minimal hardware themselves, perhaps with the aid of libraries developed for the purpose. Commercially-supplied operating systems are present on virtually all modern devices described as computers, from personal computers to mainframes, as well as mobile computers such as PDAs and mobile phones.
Services
Process management
Every action on a computer, be it background services or applications, is run inside a process. As long as a von Neumann architecture is used to build computers, only one process per CPU can be run at a time.
Memory management
According to Parkinson's law "Programs expand to fill the memory available to hold them". Thus the programmers like a memory of infinite size and infinite speed. Nowadays most of the computer's memory is arranged in a hierarchical manner, starting from fastest registers, cache, RAM and disk storage. The memory manager in an OS coordinates the memories by tracking which one is available, which is to be allocated or deallocated and how to swap between the main memory and secondary memories. This activity which is usually referred to as virtual memory management greatly increases the amount of memory available for a process (typically 4GB, even if the physical RAM available is less). This however comes at a speed penalty which is usually low, but can become very high in extreme cases and, again, lead to thrashing.
Another important part of memory management activity is managing virtual addresses, with help from the CPU. If multiple processes are in memory at once, they must be prevented from interfering with each other's memory (unless there is an explicit request to share for a limited amount of memory and in controlled ways). This is achieved by having separate address spaces. Each process in fact sees the whole virtual address space (typically, from address 0 up to the maximum size of virtual memory) as uniquely assigned to it (ignoring the fact that some areas are OS reserved). What actually happens is that the CPU stores some tables to match virtual addresses to physical addresses.
By creating a separate address space for each process, it is also simple for the operating system to free all of the memory that was used by a particular process. If a process does not free memory, this is unimportant once the process ends and the memory is all released.
Disk and file systems
Operating systems have a variety of native file systems.
Networking
Most current operating systems are capable of using the now-universal TCP/IP networking protocols. This means that one system can appear on a network of the other and share resources such as files, printers, and scanners.
Many operating systems also support one or more vendor-specific legacy networking protocols as well, for example, SNA on IBM systems, DECnet on systems from Digital Equipment Corporation, and Microsoft-specific protocols on Windows. Specific protocols for specific tasks may also be supported such as NFS for file access.
Security
Many operating systems include some level of security. Security is based on the two ideas that:
- The operating system provides access to a number of resources, directly or indirectly, such as files on a local disk, privileged system calls, personal information about users, and the services offered by the programs running on the system;
- The operating system is capable of distinguishing between some requestors of these resources who are authorized (allowed) to access the resource, and others who are not authorized (forbidden). While some systems may simply distinguish between "privileged" and "non-privileged", systems commonly have a form of requestor identity, such as a user name. Requestors in turn divide into two categories:
- Internal security: an already running program. On some systems, a program once it has running has no limitations, but commonly the program has an identity which it keeps and is used to check all of its requests for resources.
- External security: a new request from outside the computer, such as a login at a connected console or some kind of network connection. To establish identity there may be a process of authentication. Often a username must be quoted, and each username may have a password. Other methods of authentication such as magnetic cards or biometric data might be used instead. In some cases, especially connections from the network, resources may be accessed with no authentication at all.
Graphical user interfaces
Today, most modern operating systems contain Graphical User Interfaces (GUIs, pronounced gooeys). A few older operating systems tightly integrated the GUI to the kernel—for example, the original implementations of Windows and Mac OS. More modern operating systems are modular, separating the graphics subsystem from the kernel (as is now done in Linux, and Mac OS X, and to a limited extent Windows).
Many operating systems allow the user to install or create any user interface they desire. The X Window System in conjunction with GNOME or KDE is a commonly found setup on most Unix and Unix derivative (BSD, Linux, Minix) systems.
GUIs tend to change with time. For example, Windows has modified its GUI every time a new major version of Windows is released and the Mac OS GUI changed dramatically with the introduction of Mac OS X.
Device drivers
A device driver is a specific type of computer software developed to allow interaction with hardware devices. Typically this constitutes an interface for communicating with the device, through the specific computer bus or communications subsystem that the hardware is connected to, providing commands to and/or receiving data from the device, and on the other end, the requisite interfaces to the operating system and software applications. It is a specialized hardware dependent computer program which is also operating system specific that enables another program, typically an operating system or applications software package or computer program running under the operating system kernel, to interact transparently with a hardware device, and usually provides the requisite interrupt handling necessary for any necessary asynchronous time-dependent hardware interfacing needs.
The key design goal of device drivers is abstraction. Every model of hardware (even within the same class of device) is different. Newer models also are released by manufacturers that provide more reliable or better performance and these newer models are often controlled differently. Computers and their operating systems cannot be expected to know how to control every device, both now and in the future. To solve this problem, OSes essentially dictate how every type of device should be controlled. The function of the device driver is then to translate these OS mandated function calls into device specific calls. In theory a new device, which is controlled in a new manner, should function correctly if a suitable driver is available. This new driver will ensure that the device appears to operate as usual from the operating systems' point of view.
History
Main article: History of operating systemsThe first computers did not have operating systems. However, software tools for managing the system and simplifying the use of hardware appeared very quickly afterwards, and gradually expanded in scope. By the early 1960s, commercial computer vendors were supplying quite extensive tools for streamlining the development, scheduling, and execution of jobs on batch processing systems. Examples were produced by UNIVAC and Control Data Corporation, amongst others.
T
Today
Modern operating systems have a Graphical user interface which uses a pointing device such as a mouse or stylus for input in addition to the keyboard. Older models and Operating Systems not designed for direct-human interaction (such as web-servers) typically use a Command line interface (or CLI) typically with only the keyboard for input. Both models are centered around a "shell" which accepts and processes commands from the user (eg. clicking on a button, or a typed command at a prompt). The choice of OS may depend on the hardware architecture, specifically the CPU, with only Linux and BSD running on almost any CPU. Windows NT has been ported to a few other CPUs (DEC Alpha and MIPS Magnum). Since the early 1990s the choice for personal computers has largely been limited to the Microsoft Windows family and the Unix-like family, of which Linux and Mac OS X are becoming the major alternatives. Mainframe computers and embedded systems use a variety of different operating systems, many with no direct connection to Windows or Unix, but typically more similar to Unix than Windows.
See also
General topics
- Operating systems category
- History of operating systems
- List of operating systems
- Comparison of operating systems
- Comparison of open source operating systems
- Comparison of Linux distributions
- Comparison of BSD operating systems
- Comparison of kernels
- Operating systems timeline
- Important publications in operating systems
- Hollywood operating system - computer clichés in movies and television
Other topics
- Monolithic Kernel – Microkernel – Exokernel – Virtual machine – System call
- Asymmetric and Symmetric Multiprocessing (SMP) – Clustering – Distributed computing
- Real-time operating system – Time-sharing – Multitasking – Embedded system – Single-user – Multi-user
- Orthogonally persistent capabilities versus access control lists
- Object-oriented operating system
- Disk operating systems
- Hard disk drive partitioning
- LiveCD OS - Operating Systems bootable from a CD without need of hard disk installation.
- Operating system advocacy
- OS-tan (Personification of operating systems)
- Open Colinux - Running Linux inside Windows
- ReactOS - Windows Compatible OS
References
This section needs expansion. You can help by making an edit requestadding to it . |
- Deitel, Harvey M. (2004). Operating Systems. Upper Saddle River, NJ: Pearson/Prentice Hall. ISBN 0131828274.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Silberschatz, Abraham (2004). Operating System Concepts. Hoboken, NJ: John Wiley & Sons. ISBN 0471694665.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Tanenbaum, Andrew S. (2006). Operating Systems. Design and Implementation. Upper Saddle River, N.J.: Pearson/Prentice Hall. ISBN 0131429388.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help)
External links
- Operating systems at dmoz.org
- Official OSDev Project list (130+ OS projects)
- Operating systems at TUNES - wiki with reviews of operating systems
- Multics History and the history of operating systems
- operating system at elook.org - explains what an operating system is and provides various examples
- The "Write Your Own Operating System" OS Developer FAQ
- How OSs Work
- Operating System Programming - tutorials and source code
- Operating Systems Technical Comparison
- OSDEV Community - Amateur OS Development
- The DynatOS Project - An operating system project, along with tutorials and a forum
- BonaFide OS Development - resource for operating system developers
- OS History - Historic timeline of Non-Unix OS Developments, over 700 systems and versions
- Humor: If OS's Were Airlines
- OpenVMS: OpenVMS homepage