operating-systems

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

An operating system (OS) is the foundational software that manages a computer's hardware resources and provides a platform for application software to run. Architecturally, an OS typically consists of several key components, including the kernel, [process management](/en/terms/process-management), memory management, file system management, and device management. The kernel acts as the core, interfacing directly with the hardware, handling low-level tasks such as CPU scheduling, interrupt handling, and system calls. Process management involves creating, scheduling, and terminating processes (running instances of programs), enabling multitasking and concurrency. Memory management allocates and deallocates memory space to processes, ensuring efficient utilization and preventing conflicts. The file system organizes and manages data storage on persistent media, providing a structured way to access files and directories. Device management handles communication with hardware peripherals (e.g., keyboards, displays, printers) through device drivers. Trade-offs in OS design often involve balancing performance, security, stability, and resource utilization. For instance, monolithic kernels offer high performance due to direct function calls but can be less modular and harder to debug, while microkernels enhance modularity and security at the potential cost of performance due to increased inter-process communication overhead. Modern OSs also incorporate sophisticated security features like user permissions, memory protection, and secure boot processes to safeguard against unauthorized access and malware.

        graph LR
  Center["operating-systems"]:::main
  Pre_computer_science["computer-science"]:::pre --> Center
  click Pre_computer_science "/terms/computer-science"
  Rel_linux["linux"]:::related -.-> Center
  click Rel_linux "/terms/linux"
  Rel_distributed_systems["distributed-systems"]:::related -.-> Center
  click Rel_distributed_systems "/terms/distributed-systems"
  Rel_cpu["cpu"]:::related -.-> Center
  click Rel_cpu "/terms/cpu"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explain Like I'm 5

Think of the OS as the boss of the computer. It tells all the different parts (like the screen, keyboard, and brain) what to do and helps all your apps (like games and browsers) work together smoothly.

🤓 Expert Deep Dive

Modern operating systems employ complex scheduling algorithms (e.g., Completely Fair Scheduler, O(1) scheduler) to optimize CPU utilization and responsiveness. Memory management techniques like virtual memory, paging, and segmentation are crucial for efficient resource allocation and protection, allowing processes to use more memory than physically available and isolating them from each other. File systems (e.g., ext4, NTFS, APFS) implement sophisticated data structures (inodes, B-trees) for efficient data retrieval and integrity checks. Security architectures often involve mandatory access control (MAC) and discretionary access control (DAC) models, sandboxing mechanisms, and exploit mitigation techniques like Address Space Layout Randomization (ASLR) and Data Execution Prevention (DEP). Architectural trade-offs are evident in the kernel design (monolithic vs. microkernel vs. hybrid), the choice of scheduling policies, and the granularity of security permissions, each impacting system overhead, robustness, and attack surface.

🔗 Related Terms

Prerequisites:

📚 Sources