An operating system (OS) is system software that manages a computer’s hardware resources and provides services for application programs. It coordinates processor time, memory, storage, and input/output devices, while establishing rules for sharing and protecting those resources. By presenting abstractions such as processes, address spaces, and files, it allows applications to work without controlling every hardware detail directly. Operating systems range from general-purpose environments supporting many applications and users to specialized systems with tightly constrained resources or timing requirements. (pages.cs.wisc.edu)
Structure and interfaces
The kernel is the central component responsible for privileged operations and core resource management. In systems with hardware-enforced privilege separation, applications normally execute in user mode, whereas the kernel executes in a more privileged mode. This distinction restricts an application’s ability to modify protected memory or perform operations that could affect the entire machine. Some drivers also execute in kernel mode, making their correctness important to system stability. (learn.microsoft.com)
Applications request kernel services through system calls, including operations that create processes, access files, or allocate resources. Libraries often provide convenient interfaces around these requests. A system call transfers control through a controlled entry point; it is therefore different from an ordinary function call within an application. The complete operating environment extends beyond the kernel: it may include libraries, command interpreters, background services, and user-interface software. The boundary between the operating system and accompanying utilities varies across systems. (pages.cs.wisc.edu)
Processes and processor management
A process is an executing program together with resources and state needed for its execution. A thread is an execution sequence within a process. Threads belonging to one process typically share its address space and resources, while maintaining individual execution state, such as registers and stacks. This permits several activities within an application to proceed independently. (learn.microsoft.com)
Processor scheduling determines which runnable thread or process receives processor time. Scheduling policies use an algorithm to balance objectives such as responsiveness, fairness, and throughput. Preemptive systems can interrupt execution and transfer the processor to another task. Switching requires saving and restoring execution state, a procedure called a context switch. Time-sharing uses such mechanisms to support interactive work by multiple programs or users. On multicore hardware, the operating system can also support parallel computing, where tasks execute simultaneously rather than merely taking turns. (pages.cs.wisc.edu)
Memory and concurrency
Virtual memory gives a process a logical address space whose addresses are mapped to physical memory. This abstraction supports isolation, controlled sharing, and flexible memory allocation. With paging, address spaces are divided into fixed-size pages, which need not occupy consecutive physical locations. Depending on the system, some pages can be held in secondary storage and brought into memory when needed. Virtual memory is therefore more than a technique for extending memory capacity: it is also an organizational and protection mechanism. (pages.cs.wisc.edu)
Controlled shared memory allows otherwise separate execution contexts to exchange data. However, concurrent computing creates coordination problems when operations overlap. If several threads modify shared state without appropriate control, results may depend on their execution order. Synchronization mechanisms, including locks and condition variables, regulate access and coordinate progress. Poor coordination can cause deadlock, in which participants cannot proceed because they are waiting for one another’s resources or actions. (pages.cs.wisc.edu)
Storage, devices, and communication
A file system organizes persistent data into files and directories, records metadata, and implements operations such as opening, reading, writing, and deleting files. File names provide a human-oriented organizational layer, while file descriptors or handles identify opened resources within programs. Storage management also involves allocating space and maintaining consistency as data changes; these concerns are distinct from merely transferring bytes to a device. (pages.cs.wisc.edu)
A device driver connects operating-system services to particular hardware. Drivers handle device-specific commands and interactions while exposing interfaces usable by other software. Networking support similarly provides communication mechanisms rather than requiring each application to implement hardware access independently. Network stacks can implement protocols such as TCP/IP, allowing applications to communicate through standardized services. (pages.cs.wisc.edu)
Protection and kernel architectures
Operating-system protection separates execution contexts and limits access to resources. In Windows, for example, a process has a security context as well as its own virtual address space. These mechanisms form part of cybersecurity, but privilege separation does not eliminate all vulnerabilities: faulty privileged code can still compromise the system. (learn.microsoft.com)
In a monolithic kernel, substantial operating-system functionality resides within a shared privileged address space. A microkernel retains a smaller set of mechanisms, with higher-level services implemented outside that core. The distinction concerns where functionality executes, not simply how many features the complete system offers. Microkernel-based systems still need components such as drivers and file services. Architecture affects communication costs, isolation boundaries, and the amount of code entrusted with broad privileges. (arxiv.org)
Historical development and specialized systems
Early operating systems developed mechanisms for automatically managing program execution; later systems expanded interactive resource sharing. Unix began taking shape at Bell Labs in 1969, with process management, a file system, utilities, and a command interpreter. Its separation between kernel facilities and user-level tools became an influential organizational approach. Linux is a Unix-like kernel; a Linux distribution combines it with other software to provide a complete operating environment. (pages.cs.wisc.edu)
A real-time operating system emphasizes predictable scheduling and timely responses to events. Real-time requirements concern deadlines, not merely high average speed; meeting them depends on the behavior of the complete application and system. Another distinction concerns execution environments: an operating system may run inside a virtual machine rather than directly on physical hardware. Resource isolation remains necessary within these environments, and sharing resources between a guest and host changes their protection boundaries. (freertos.org)