CSS Optional — Paper-II, Section-A · P-II.III.I (cont.) · Previously missing from this vault — added because "Design and Components of OS" is named explicitly in the syllabus line for this topic. This page answers "what must an OS achieve, and what pieces does it break into" — the companion [OS Structures and Operations] page answers "how is it physically architected."

1. Design Goals

User goals System goals
Convenient to use Easy to design, implement, and maintain
Easy to learn Flexible
Reliable, safe, fast Reliable, error-free, efficient

These two goal-sets are sometimes in tension (e.g. maximum safety/protection checks can cost raw speed) — OS design is a continual balancing act between them.

2. Mechanisms vs Policies (a classic separation-of-concerns principle)

Good OS design keeps mechanism and policy separate — the same underlying mechanism (a preemption timer) can then support many different policies (FCFS, RR, Priority, MLFQ) without redesigning the hardware/low-level support each time. This separation is why, e.g., Linux can offer several pluggable schedulers on the same kernel mechanisms.

3. Components of an Operating System

graph TD
    OS["Operating System"] --> PM["Process Management"]
    OS --> MM["Memory Management"]
    OS --> FM["File Management"]
    OS --> IO["I/O System Management"]
    OS --> SM["Secondary Storage Management"]
    OS --> NW["Networking"]
    OS --> PROT["Protection System"]
    OS --> CI["Command-Interpreter / UI"]

Kernel responsibilities recap (frequently asked as a standalone short-note): the kernel is the privileged core implementing most of the above — process management/scheduling, memory management, file-system management, device management via drivers, IPC/synchronization primitives, system-call interface, and security/access-control enforcement.

4. Protection & Security as a Design Component