Katana VentraIP

Operating system

An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs.

Time-sharing operating systems schedule tasks for efficient use of the system and may also include accounting software for cost allocation of processor time, mass storage, peripherals, and other resources.


For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between programs and the computer hardware,[1][2] although the application code is usually executed directly by the hardware and frequently makes system calls to an OS function or is interrupted by it. Operating systems are found on many devices that contain a computer – from cellular phones and video game consoles to web servers and supercomputers.


In the personal computer market, as of September 2023, Microsoft Windows holds a dominant market share of around 68%. macOS by Apple Inc. is in second place (20%), and the varieties of Linux, including ChromeOS, are collectively in third place (7%).[3] In the mobile sector (including smartphones and tablets), as of September 2023, Android's share is 68.92%, followed by Apple's iOS and iPadOS with 30.42%, and other operating systems with .66%.[4] Linux distributions are dominant in the server and supercomputing sectors. Other specialized classes of operating systems (special-purpose operating systems),[5][6] such as embedded and real-time systems, exist for many applications. Security-focused operating systems also exist. Some operating systems have low system requirements (e.g. light-weight Linux distribution). Others may have higher system requirements.


Some operating systems require installation or may come pre-installed with purchased computers (OEM-installation), whereas others may run directly from media (i.e. live CD) or flash memory (i.e. USB stick).

Operating systems allocate resources between different applications, deciding when they will receive (CPU) time or space in memory.[10] On modern personal computers, users often want to run several applications at once. In order to ensure that one program cannot monopolize the computer's limited hardware resources, the operating system gives each application a share of the resource, either in time (CPU) or space (memory).[11][12] The operating system also must isolate applications from each other to protect them from errors and security vulnerability is another application's code, but enable communications between different applications.[13]

central processing unit

Operating systems provide an interface that abstracts the details of accessing details (such as physical memory) to make things easier for programmers.[10][14] Virtualization also enables the operating system to mask limited hardware resources; for example, virtual memory can provide a program with the illusion of nearly unlimited memory that exceeds the computer's actual memory.[15]

hardware

Operating systems provide common services, such as an interface for accessing network and disk devices. This enables an application to be run on different hardware without needing to be rewritten. Which services to include in an operating system varies greatly, and this functionality makes up the great majority of code for most operating systems.[17]

[16]

An operating system is difficult to define,[7] but has been called "the layer of software that manages a computer's resources for its users and their applications".[8] Operating systems include the software that is always running, called a kernel—but can include other software as well.[7][9] The two other types of programs that can run on a computer are system programs—which are associated with the operating system, but may not be part of the kernel—and applications—all other software.[9]


There are three main purposes that an operating system fulfills:[10]

Types of operating systems

Multicomputer operating systems

With multiprocessors multiple CPUs share memory. A multicomputer or cluster computer has multiple CPUs, each of which has its own memory. Multicomputers were developed because large multiprocessors are difficult to engineer and prohibitively expensive;[18] they are universal in cloud computing because of the size of the machine needed.[19] The different CPUs often need to send and receive messages to each other;[20] to ensure good performance, the operating systems for these machines need to minimize this copying of packets.[21] Newer systems are often multiqueue—separating groups of users into separate queues—to reduce the need for packet copying and support more concurrent users.[22] Another technique is remote direct memory access, which enables each CPU to access memory belonging to other CPUs.[20] Multicomputer operating systems often support remote procedure calls where a CPU can call a procedure on another CPU,[23] or distributed shared memory, in which the operating system uses virtualization to generate shared memory that does not actually exist.[24]

Distributed systems

A distributed system is a group of distinct, networked computers—each of which might have their own operating system and file system. Unlike multicomputers, they may be dispersed anywhere in the world.[25] Middleware, an additional software layer between the operating system and applications, is often used to improve consistency. Although it functions similarly to an operating system, it is not a true operating system.[26]

Embedded

Embedded operating systems are designed to be used in embedded computer systems, whether they are internet of things objects or not connected to a network. Embedded systems include many household appliances. The distinguishing factor is that they do not load user-installed software. Consequently, they do not need protection between different applications, enabling simpler designs. Very small operating systems might run in less than 10 kilobytes,[27] and the smallest are for smart cards.[28] Examples include Embedded Linux, QNX, VxWorks, and the extra-small systems RIOT and TinyOS.[29]

Real-time

A real-time operating system is an operating system that guarantees to process events or data by or at a specific moment in time. Hard real-time systems require exact timing and are common in manufacturing, avionics, military, and other similar uses.[29] With soft real-time systems, the occasional missed event is acceptable; this category often includes audio or multimedia systems, as well as smartphones.[29] In order for hard real-time systems be sufficiently exact in their timing, often they are just a library with no protection between applications, such as eCos.[29]

Virtual machine

A virtual machine is an operating system that runs as an application on top of another operating system.[15] The virtual machine is unaware that it is an application and operates as if it had its own hardware.[15][30] Virtual machines can be paused, saved, and resumed, making them useful for operating systems research, development,[31] and debugging.[32] They also enhance portability by enabling applications to be run on a computer even if they are not compatible with the base operating system.[15]

 – B5000, 1961 to Unisys Clearpath/MCP, present

Burroughs MCP

IBM  – IBM System/360, 1966 to IBM z/OS, present

OS/360

IBM  – IBM System/360, 1967 to IBM z/VM, present

CP-67

UNIVAC  – UNIVAC 1108, 1967, to OS 2200 Unisys Clearpath Dorado, present

EXEC 8

Set the contents of the CPU's (including the program counter) into the process control block.[86]

registers

Create an entry in the device-status table. The operating system maintains this table to keep track of which processes are waiting for which devices. One field in the table is the memory address of the process control block.

[87]

Place all the characters to be sent to the device into a .[76]

memory buffer

Set the memory address of the memory buffer to a predetermined .[88]

device register

Set the buffer size (an integer) to another predetermined register.

[88]

Execute the to begin the writing.

machine instruction

Perform a to the next process in the ready queue.

context switch

Diversity of operating systems and portability

If an application is written for use on a specific operating system, and is ported to another OS, the functionality required by that application may be implemented differently by that OS (the names of functions, meaning of arguments, etc.) requiring the application to be adapted, changed, or otherwise maintained.


This cost in supporting operating systems diversity can be avoided by instead writing applications against software platforms such as Java or Qt. These abstractions have already borne the cost of adaptation to specific operating systems and their system libraries.


Another approach is for operating system vendors to adopt standards. For example, POSIX and OS abstraction layers provide commonalities that reduce porting costs.

at Curlie

Operating Systems

and the history of operating systems

Multics History