In computing, an operating system (OS) is the system software responsible for the direct control and management of hardware and basic system operations. Additionally, it provides a foundation upon which to run application software such as word processing programs and web browsers.
Early computers lacked operating systems (see History of operating systems). A human operator would manually load and run programs. When programs were developed to load and run other programs, it was natural to draw their name from the human job they replaced.
Today, the term is most often used colloquially to mean all the software which "comes with" a computer system before any applications are installed.
The operating system ensures that other applications are able to use memory, input and output devices and have access to the file system. If multiple applications are running, the operating system schedules these such that all processes have sufficient processor time where possible and do not interfere with each other.
In general, the operating system is the first layer of software loaded into computer memory when it starts up. As the first software layer, all other software that gets loaded after it depends on this software to provide them with various common core services. These common core services include, but are not limited to: disk access, memory management, task scheduling, and user interfacing. Since these basic common services are assumed to be provided by the OS, there is no need to re-implement those same functions over and over again in every other piece of software that you may use. The portion of code that performs these core services is called the "kernel" of the operating system. Operating system kernels had been evolved from libraries that provided the core services into unending programs that control system resources because of the early needs of accounting for computer usage and then protecting those records.
It is also noteworthy that some people use "kernel" to mean the core piece of the OS that deals most directly with the hardware, and have a slightly broader definition of "operating system". They would define "operating system" to refer to the kernel plus some of the basic computer programs and libraries that are necessary to use the kernel. An interesting essay about the difference between the kernel and the operating system, from the perspective of a broader definition of OS, can be found here: Linux and GNU. It should be stressed that neither definition is completely accepted among the computer science community.
Common core services
As operating systems evolve, ever more services are expected to be common core. These days, an OS may be required to provide network and Internet connectivity. They may be required to protect the computer's other software from damage by malicious programs, such as viruses. The list of common core services is ever expanding.
Programs communicate with each other through Application Programming Interfaces, or APIs, similar to how humans interact with programs through User interfaces. This is especially true between application programs and the OS. The OS's common core services are accessed by application programs through the OS's APIs. Thus an OS enables the communication between hardware and software.
CPU scheduling is also a main function of the operating system.
Today's operating systems
As of 2005, the major operating systems in widespread use on general-purpose computers (including personal computers) have consolidated into two families: the Unix-like family and the Microsoft Windows family. Mainframe computers and embedded systems use a variety of different operating systems, many with no direct connection to Windows or Unix.
The Unix-like family is a more diverse group of operating systems, with several major sub-categories including System V, BSD, and Linux. The name "Unix" is a trademark of The Open Group which licenses it for use to any operating system that has been shown to conform to the definitions that they have cooperatively developed. Unix-type operating systems can also be called Un*x so the registered trademark symbol (R) doesn't have to be used after it is written. The name is commonly used to refer to the large set of operating systems which resemble the original Unix. Unix systems run on a wide variety of machine architectures. Unix systems are used heavily as server systems in business, as well as workstations in academic and engineering environments. Free software Unix variants, such as Linux and BSD are increasingly popular, and have made inroads on the desktop market as well. Apple's Mac OS X, a BSD variant, has replaced Apple's earlier (non-Unix) Mac OS in a small but dedicated market, becoming one of the most popular Unix systems in the process.
The Microsoft Windows family of operating systems originated as a graphical layer on top of the older MS-DOS environment for the IBM PC. Modern versions are based on the newer Windows NT core that first took shape in OS/2. Windows runs on 32- and 64-bit Intel and AMD computers, although earlier versions also ran on the DEC Alpha, MIPS and PowerPC architectures (and there was work in progress to make it work also on the SPARC architecture). Today, Windows is a popular desktop operating system, enjoying a near-monopoly of around 90% of the worldwide desktop market share. It is also widely used on low-end and mid-range servers, supporting applications such as Web servers and database servers.
Mainframe operating systems, such as IBM's z/OS, and embedded operating systems such as QNX, eCos, and PalmOS, are usually unrelated to Unix and Windows.
Older operating systems which are still used in niche markets include the Windows-like OS/2 from IBM; VMS from Hewlett-Packard (formerly DEC); Mac OS, the non-Unix precursor to Apple's Mac OS X; and AmigaOS, the first GUI based operating system with advanced multimedia capabilities available to the general public.
Research and development of new kinds of operating systems is an active subfield of computer science.
Examples of operating systems
Classifications and terminology
An operating system is conceptually broken into three sets of components: a user interface (which may consist of a graphical user interface and/or a command line interpreter or "shell"), low-level system utilities, and a kernel--which is the heart of the operating system. As the name implies, the shell is an outer wrapper to the kernel, which in turn talks directly to the hardware.
Hardware <-> Kernel <-> Shell <-> Applications
In some operating systems the shell and the kernel are completely separate entities, allowing you to run varying combinations of shell and kernel (eg UNIX), in others their separation is only conceptual.
Kernel design ideologies include those of the monolithic kernel, microkernel, and exokernel. Traditional commercial systems such as UNIX and Windows (including Windows NT), and the newer Linux, use a monolithic approach, while the trend in more modern systems is to use a microkernel (such as in AmigaOS, QNX, BeOS, Mac OS X etc). The microkernel approach is also very popular among research OSs. Many embedded systems use ad hoc exokernels.