An operating system (OS), in its most general sense, is software that allows a user to run other applications on a computing device.
The operating system manages a computer’s software hardware resources, including:
The OS also provides services to facilitate the efficient execution and management of, and memory allocations for, any additional installed software application programs.
If several programs are running at the same time (such as an Internet browser, firewall, and antivirus), the OS will allocate the computer’s resources (memory, CPU, and storage) to make sure that each one of them receives what is needed to function.
While it is possible for a software application to interface directly with hardware, the vast majority of applications are written for an OS, which allows them to take advantage of common libraries and not worry about specific hardware details.
In this regard, the OS acts as a comprehensive framework with which all applications can interact in a consistent way, vastly simplifying the whole development process.
Examples for OSs include:
Some operating systems were developed in the 1950s, when computers could only execute one program at a time. Later in the decade, computers included many software programs, sometimes called libraries, which were linked together to create the beginning of today’s operating systems.
The OS consists of many components and features. Which features are defined as part of the OS vary with each OS.
This provides basic-level control over all of the computer hardware devices.
Main roles include reading data from memory and writing data to memory, processing execution orders, determining how data is received and sent by devices, such as the monitor, keyboard and mouse; and determining how to interpret data received from networks.
Monolithic kernels have a simpler design and consist of a single code that communicates with all hardware and software.
Microkernels implement user and kernel services in different address spaces, reducing their size, but forcing the use of message passing to execute services.
This component allows interaction with the user, which may occur through graphical icons and a desktop or through a command line.
The UI is further divided into Command Line Interface (CLI), consisting of a text-based interface where advanced users can prompt specific commands by typing them, and a Graphical User Interface (GUI).
The latter is a visual interface that allows the end user to issue commands by interacting with symbols, icons, and menus using an input device such as a mouse or touchpad.
This component allows application developers to write modular code.
An API defines how other systems or components can use a certain application.