1 Definition and purpose

An operating system is the principal software layer that coordinates computer hardware and supports application programs. It provides a managed environment in which software can run, resources can be shared, and common services can be accessed in a consistent way. By handling tasks such as scheduling, storage access, input and output, and protection, it reduces the need for each program to interact directly with the machine.

In practice, the operating system helps make a computer usable, stable, and efficient. It also establishes the rules by which programs request resources, communicate with devices, and interact with users.

1.1 Core functions

Core functions include managing processes, allocating memory, organizing files, controlling devices, and enforcing security rules. The operating system also offers interfaces that programs use to request services, such as opening a file or sending data over a network.

Another central function is resource coordination. Since many programs may compete for the same CPU, memory, and hardware devices, the operating system must distribute these resources in an orderly manner.

1.2 Role in a computer system

The operating system sits between the hardware and the software that people use directly. It translates high-level requests from applications into low-level hardware operations and returns results in a form the program can use.

This intermediary role allows a wide variety of hardware components to be supported through common software abstractions. As a result, programs can often run without needing to know the exact details of the underlying machine.

1.3 User-facing and background roles

Some operating system functions are visible to users, such as the desktop, settings tools, or file browser. Other functions operate in the background, including memory management, process scheduling, and device control.

Both kinds of roles are necessary. The visible layer provides a practical means of interaction, while the background layer maintains the functioning of the system as a whole.

2 History

Operating systems developed alongside the evolution of computers themselves. Early systems were simple, often tied closely to a single machine and a narrow set of tasks. Over time, they became more general, interactive, and portable across different hardware platforms.

2.1 Early batch systems

Early computers commonly ran batch systems, in which jobs were collected and processed one after another with little or no user interaction. Operators prepared jobs on punched cards, tape, or similar media, and the machine executed them in sequence.

These systems emphasized throughput rather than responsiveness. Although limited by modern standards, they established basic ideas such as job control, device management, and resource allocation.

2.2 Time-sharing systems

Time-sharing systems introduced interactive use by allowing multiple users or programs to share the computer in short time slices. This made it possible for people to work at terminals and receive immediate feedback.

Time-sharing influenced many later operating systems. It encouraged multitasking, user accounts, protection mechanisms, and more sophisticated memory management.

2.3 Personal computer operating systems

With the rise of personal computers, operating systems became designed for individual users and desktop applications. These systems typically emphasized graphical interfaces, file management, and broad hardware compatibility.

As home and office computing expanded, personal computer operating systems became the dominant platform for productivity software, games, and general-purpose applications.

2.4 Mobile and embedded operating systems

Mobile and embedded systems placed new demands on operating systems, including low power use, compact size, and support for touch-based interaction or specialized devices. These systems often run on limited hardware and must be optimized for stability and efficiency.

In mobile devices, the operating system also manages sensors, wireless communication, and app permissions. In embedded settings, it may be tailored for appliances, vehicles, or industrial equipment.

3 Architecture

Operating system architecture describes how the major software parts are arranged and how they interact. Different designs balance performance, reliability, simplicity, and portability in different ways.

3.1 Kernel

The kernel is the central component of an operating system. It has direct control over hardware resources and provides essential services such as scheduling, memory management, and device coordination.

Because the kernel operates at the most privileged level, errors in this part of the system can affect overall stability. For that reason, kernel design is a major concern in operating system engineering.

3.1.1 Monolithic kernels

Monolithic kernels place many operating system services inside a single kernel space program. This can offer strong performance because functions communicate with one another with relatively low overhead.

However, a large monolithic kernel can be more complex to maintain. A fault in one component may affect others, so careful design and testing are important.

3.1.2 Microkernels

Microkernels keep the kernel small by moving many services into separate user-space processes. The kernel generally handles only the most basic tasks, such as communication, scheduling, and low-level memory management.

This structure can improve modularity and fault isolation. It may also introduce additional communication overhead compared with more integrated designs.

3.1.3 Hybrid kernels

Hybrid kernels combine features of monolithic and microkernel approaches. They often keep performance-critical services in kernel space while preserving some modular design principles.

This model is used to balance efficiency with maintainability. In practice, hybrid systems vary widely in how much functionality remains in the kernel.

3.2 System libraries and utilities

System libraries provide reusable functions that applications and system tools can call to access operating system services. Utilities are companion programs that perform tasks such as file management, configuration, and diagnostics.

Together, libraries and utilities form an important layer between the kernel and the user. They make system functions easier to use and help standardize how software interacts with the operating environment.

3.3 User space and kernel space

User space is the part of the system where ordinary applications run, with limited direct access to hardware. Kernel space is reserved for the operating system’s most privileged code.

This separation improves safety and stability. If an application fails, it is less likely to damage the rest of the system. Access to sensitive operations is mediated through controlled interfaces.

3.4 Boot process

The boot process begins when a computer is powered on and continues until the operating system is fully loaded. Firmware performs initial hardware checks and starts the software that loads the kernel.

After the kernel begins running, it initializes devices, mounts storage, starts system services, and prepares the user environment. The exact sequence depends on the design of the machine and the operating system.

4 Core components

The core components of an operating system provide the basic services needed for everyday computing. These components work together to manage execution, memory, storage, devices, and network communication.

4.1 Process management

Process management controls the creation, execution, and coordination of programs while they are running. It ensures that each process receives processor time and can interact safely with other parts of the system.

4.1.1 Process creation and termination

A process is created when a program is launched and ends when it completes or is stopped. The operating system sets up the resources needed for execution, such as memory and access permissions.

Termination releases those resources. Proper cleanup is important to prevent leaks, lingering locks, or unfinished operations.

4.1.2 Scheduling

Scheduling determines which process runs on the CPU and for how long. Because many tasks may be ready at the same time, the scheduler must choose among them efficiently.

Different scheduling policies emphasize responsiveness, fairness, or throughput. The choice of strategy can affect how smooth and fast the system feels under load.

4.1.3 Synchronization and communication

Processes often need to coordinate their actions or exchange data. Synchronization mechanisms help prevent conflicts when multiple tasks access shared resources, while communication tools let programs send messages or share information.

These mechanisms are essential in multitasking systems. They help avoid inconsistent data, race conditions, and other coordination problems.

4.2 Memory management

Memory management tracks the use of main memory and ensures that programs have the space they need to run. It also isolates processes from one another to reduce interference.

Efficient memory handling is central to system performance. Poor management can lead to slowdowns, instability, or inability to launch new programs.

4.2.1 Virtual memory

Virtual memory gives each process the illusion of a large, private address space. The operating system and hardware work together to map virtual addresses to physical memory.

This approach improves isolation and allows programs to use more memory than is physically installed, though heavily relying on slower storage can reduce performance.

4.2.2 Paging and segmentation

Paging divides memory into fixed-size blocks, making allocation and relocation more manageable. Segmentation divides memory into logical regions such as code, data, or stack.

Modern systems often rely primarily on paging, sometimes with additional segmentation concepts. These methods help control protection, sharing, and memory organization.

4.2.3 Memory allocation

Memory allocation is the process of giving programs space for data and instructions. The operating system may allocate memory dynamically as programs request it and reclaim it when they are finished.

Good allocation strategies reduce waste and fragmentation. They also help ensure that multiple programs can coexist without interfering with one another.

4.3 File systems

File systems organize data on storage devices into files and directories. They define how names, metadata, and stored content are arranged and retrieved.

A file system makes long-term storage manageable and consistent. It also supports access control, recovery, and efficient use of disk or flash memory.

4.3.1 Directories and files

Files store data, while directories group and organize those files into a hierarchy. This structure helps users and programs find and manage information more easily.

File names, paths, and metadata provide additional context. These elements support navigation, organization, and identification.

4.3.2 Permissions and ownership

Permissions and ownership determine who can read, modify, or execute a file. These rules help protect data from unauthorized access or accidental damage.

Operating systems often assign files to users and groups. This system supports collaborative work while maintaining control over sensitive resources.

4.3.3 Journaling and recovery

Journaling file systems record pending changes before fully applying them. If power fails or the system crashes, the journal can help restore consistency more quickly.

Recovery features reduce the risk of corruption after an interruption. They are especially useful on systems where unexpected shutdowns may occur.

4.4 Device management

Device management allows the operating system to communicate with hardware such as keyboards, displays, storage drives, printers, and sensors. It provides a standard way to control equipment with different capabilities.

Because hardware varies widely, device support is often one of the most complex parts of an operating system. Abstraction helps applications use devices without knowing every technical detail.

4.4.1 Drivers

Drivers are specialized software components that translate operating system requests into device-specific instructions. They are essential for hardware compatibility.

A driver may be supplied by the operating system vendor or by hardware manufacturers. Its quality strongly influences stability and performance.

4.4.2 Input and output control

Input and output control manages the flow of data to and from devices. The operating system handles buffering, timing, and coordination so that applications do not need to manage every detail themselves.

This control is important for both speed and reliability. It helps prevent data loss and keeps hardware use efficient.

4.4.3 Plug and play support

Plug and play support allows devices to be recognized and configured automatically when connected. The operating system may detect the hardware, load a driver, and make it available with minimal user action.

This feature simplifies setup and improves usability. It is especially valuable in systems with many peripheral devices.

4.5 Networking

Networking enables a computer to communicate with other machines and services. The operating system provides the foundation for data exchange across local networks and the internet.

Network support includes configuration, communication protocols, and tools for accessing remote resources. It is now a standard feature of most general-purpose systems.

4.5.1 Protocol stacks

Protocol stacks implement the layers of communication used to send and receive data. They handle addressing, routing, reliability, and other network functions.

By following standard protocols, operating systems can work with diverse hardware and services. This interoperability is crucial for modern connectivity.

4.5.2 Network services

Network services include features such as name resolution, file sharing, printing, synchronization, and server management. These services allow systems to cooperate and resources to be shared efficiently.

Some services run locally while others operate across a network. The operating system often manages them through background daemons or service processes.

4.5.3 Remote access

Remote access lets users or programs interact with a computer from another location. This may involve secure shells, remote desktops, file transfer tools, or managed administrative connections.

Remote access expands flexibility, but it also requires strong authentication and network protection. Proper configuration is important for safe use.

5 User interface

The user interface is the part of the operating system that people directly perceive and use. It can range from text-based tools to graphical environments and touch-oriented designs.

5.1 Command-line interface

A command-line interface allows users to enter text commands to perform tasks. It is often valued for speed, precision, and automation.

Command-line tools can be combined in scripts and pipelines, making them useful for administration and advanced workflows. They may be less approachable for beginners than graphical tools.

5.2 Graphical user interface

A graphical user interface presents windows, icons, menus, and pointer-based controls. It is designed to make interaction more intuitive and visually oriented.

This style of interface has become common on desktop and many mobile systems. It supports multitasking and helps users manage applications and files more easily.

5.3 Touch and gesture interfaces

Touch and gesture interfaces use taps, swipes, pinches, and similar actions. They are especially common on smartphones, tablets, and hybrid devices.

These interfaces reduce reliance on a keyboard and mouse. They also influence how applications are designed, since screen size and finger input shape the user experience.

5.4 Accessibility features

Accessibility features help users who have visual, auditory, motor, or cognitive impairments. Examples include screen readers, magnifiers, captions, high-contrast settings, and alternate input methods.

Such features improve usability for a broad audience, not only for people with disabilities. They are an important part of inclusive system design.

6 Security

Operating system security protects data, applications, and system resources from unauthorized access or misuse. It depends on identity checks, access controls, isolation, and timely maintenance.

6.1 Authentication

Authentication verifies who a user or service claims to be. Common methods include passwords, biometrics, security tokens, and cryptographic credentials.

Strong authentication reduces the risk of unauthorized entry. It is often the first layer of defense in a secure system.

6.2 Authorization

Authorization determines what an authenticated user or process is allowed to do. It controls access to files, devices, settings, and network resources.

This separation between identity and permission makes it possible to grant limited privileges. Such control is essential for preserving confidentiality and preventing unwanted changes.

6.3 Sandboxing and isolation

Sandboxing restricts a program’s ability to affect other parts of the system. Isolation mechanisms limit access to files, memory, hardware, or networks based on policy.

These techniques reduce the impact of faulty or malicious software. They are widely used in modern application and mobile environments.

6.4 Updates and patch management

Updates and patch management keep the operating system current by correcting defects and closing security vulnerabilities. They may also improve compatibility and performance.

Because vulnerabilities can be discovered after release, regular maintenance is important. Timely updates help preserve system integrity over time.

6.5 Malware defenses

Malware defenses include tools and features that detect, block, or limit harmful software. These may involve permission checks, trusted application signing, scanning utilities, and system hardening measures.

No single defense is sufficient on its own. Effective protection usually combines multiple safeguards with careful user behavior.

7 Types of operating systems

Operating systems can be classified by the environment they serve and the constraints they must meet. Different types emphasize different balances of performance, responsiveness, portability, and resource use.

7.1 Desktop operating systems

Desktop operating systems are built for personal computers used in homes, offices, and schools. They typically support graphical desktops, broad peripheral compatibility, and a wide range of applications.

Ease of use and multitasking are common priorities. These systems also often provide tools for productivity, media, and general administration.

7.2 Server operating systems

Server operating systems are designed for shared services, networking, and reliable long-running operation. They often emphasize stability, security, remote administration, and efficient handling of many simultaneous users.

Such systems are commonly used for web hosting, databases, file services, and enterprise applications. Their interfaces may be less prominent than their background management features.

7.3 Mobile operating systems

Mobile operating systems run on smartphones and tablets. They are optimized for battery life, wireless connectivity, touch input, sensors, and app distribution systems.

Security and permission control are especially important, since mobile devices are personal and frequently connected. The operating system also manages background activity to preserve resources.

7.4 Real-time operating systems

Real-time operating systems are designed to respond within predictable time limits. They are used in settings where delays can cause failure, such as industrial control, robotics, or instrumentation.

Predictability is more important than maximizing general-purpose throughput. These systems often use streamlined components and carefully bounded scheduling behavior.

7.5 Distributed operating systems

Distributed operating systems coordinate multiple computers so that they appear as a unified system or cooperate closely. They manage communication, resource sharing, and task distribution across a network.

This model can improve scalability and resilience. It also introduces complexity in synchronization, fault handling, and data consistency.

7.6 Embedded operating systems

Embedded operating systems are used in dedicated devices with specialized functions. They may run in appliances, routers, medical devices, vehicles, or consumer electronics.

These systems are usually compact and tailored to specific hardware. Efficiency, reliability, and limited resource use are often the main design goals.

8 Development and maintenance

Developing and maintaining an operating system requires long-term engineering effort. Because the system must support hardware, software, and users at once, changes must be carefully tested and coordinated.

8.1 System calls and APIs

System calls provide the controlled entry points through which programs request kernel services. APIs present higher-level interfaces that make those services easier to use.

These interfaces allow software to be written against a stable contract even when internal implementation changes. They are central to compatibility and portability.

8.2 Driver development

Driver development focuses on creating software that enables hardware components to work with the operating system. It requires detailed knowledge of both the device and the system’s internal interfaces.

Because drivers run close to the core of the system, errors can have serious effects. Careful validation and adherence to platform rules are important.

8.3 Testing and debugging

Testing and debugging help identify defects in the operating system and its supporting components. Engineers use logging, tracing, emulation, stress tests, and automated test suites to uncover problems.

Given the complexity of system software, thorough testing is essential. Defects may appear only under specific loads, hardware combinations, or timing conditions.

8.4 Performance tuning

Performance tuning improves responsiveness, throughput, and resource efficiency. It may involve adjusting scheduler behavior, memory use, disk access patterns, or network handling.

Tuning must be balanced against stability and maintainability. Changes that help one workload may not benefit another.

8.5 Versioning and support lifecycle

Versioning identifies releases and tracks changes over time. Support lifecycle planning determines how long a version receives fixes, updates, and assistance.

These practices help users and organizations plan upgrades and manage risk. They also clarify which features and security corrections are available in a given release.

9 Examples of operating systems

Many operating systems are widely recognized because of their large user bases, long histories, or broad device support. The following examples illustrate different design traditions and markets.

9.1 Microsoft Windows

Microsoft Windows is a family of operating systems widely used on personal computers and business machines. It is known for its graphical interface, software compatibility, and broad hardware support.

Over time, Windows has also expanded into server and specialized device environments. Its ecosystem includes extensive application and driver availability.

9.2 macOS

macOS is Apple’s desktop operating system for Macintosh computers. It combines a graphical interface with a tightly integrated hardware and software environment.

The system is associated with emphasis on usability, multimedia, and developer tools. It also shares historical roots with Unix-like design principles.

9.3 Linux

Linux is commonly used to refer to operating systems built around the Linux kernel and associated software. These systems are available in many distributions tailored to different purposes.

Linux-based systems are notable for flexibility, strong server use, and wide deployment in embedded and mobile contexts. They are often developed with open-source collaboration.

9.4 Unix and Unix-like systems

Unix and Unix-like systems represent a broad family of operating systems influenced by the original Unix design. They are known for multiuser capability, modular tools, and a strong command-line tradition.

This family has had a major influence on later operating systems and software conventions. Many features common today, including shells, permissions, and process tools, were shaped by this lineage.

9.5 Android

Android is a mobile operating system used on smartphones, tablets, and other connected devices. It is built on a Linux-based foundation and includes a large application ecosystem.

Its design emphasizes touch interaction, app distribution, and flexibility across devices from different manufacturers. It also includes extensive support for wireless services and sensors.

9.6 iOS

iOS is Apple’s mobile operating system for the iPhone, with related platforms extending to other portable devices. It is designed for touch input, energy efficiency, and tightly managed app execution.

The system is known for a consistent interface and integrated hardware-software design. Security and app permissions are central aspects of its architecture.

Operating systems are closely connected to several other layers of computing. Understanding these related concepts helps clarify how a complete computing environment is organized.

10.1 Firmware

Firmware is low-level software stored in hardware components or nonvolatile memory. It often initializes devices and may provide foundational control before the operating system starts.

10.2 Virtual machines

Virtual machines are software emulations of computer systems that can run operating systems in isolated environments. They are useful for testing, consolidation, and running multiple systems on one machine.

10.3 Hypervisors

Hypervisors manage virtual machines and allocate physical hardware among them. They form the basis of many virtualization platforms used in data centers and development environments.

10.4 Application software

Application software consists of programs that perform tasks for users, such as writing documents, browsing the web, or editing images. It relies on the operating system for access to hardware and shared services.