The software component of a computer system that is responsible for the management and coordination of activities and the sharing of the resources of the computer. The operating system (OS) acts as a host for application programs that are run on the machine. As a host, one of the purposes of an operating system is to handle the details of the operation of the hardware. This relieves application programs from having to manage these details and makes it easier to write applications. Almost all computers, including hand-held computers, desktop computers, supercomputers, and even modern video game consoles, use an operating system of some type. See also Computer systems architecture.
Operating systems offer a number of services to application programs and users. Applications access these services through application programming interfaces (APIs) or system calls. By invoking these interfaces, the application can request a service from the operating system, pass parameters, and receive the results of the operation. Users may also interact with the operating system by typing commands or using a graphical user interface (GUI, commonly pronounced “gooey”). For hand-held and desktop computers, the GUI is generally considered part of the operating system. For large multiuser systems, the GUI is generally implemented as an application program that runs outside the operating system. See also Computer programming; Human-computer interaction.
Modern operating systems provide the capability of running multiple application programs simultaneously, which is referred to as multiprogramming. Each program running is represented by a process in the operating system. The operating system provides an execution environment for each process by sharing the hardware resources so that each application does not need to be aware of the execution of other processes. The central processing unit (CPU) of the computer can be used by only one program at a time. The operating system can share the CPU among the processes by using a technique known as time slicing. In this manner, the processes take turns using the CPU. Single-user desktop personal computers (PCs) may simplify this further by granting the CPU to whichever application the user has currently selected and allowing the user to switch between applications at will.
The main memory of a computer (referred to as random access memory, or RAM) is a finite resource. The operating system is responsible for sharing the memory among the currently running processes. When a user initiates an application, the operating system decides where to place it in memory and may allocate additional memory to the application if it requests it. The operating system may use capabilities in the hardware to prevent one application from overwriting the memory of another. This provides security and prevents applications from interfering with one another. See also Computer storage technology.