Skip to content

Operating Systems

Operating Systems

An operating system (OS) is system software that manages computer hardware and software resources and provides services for application programs. It acts as an intermediary between users and the computer hardware, allocating resources such as CPU time, memory, and I/O devices efficiently and fairly among competing processes.

Key Concepts

Process management involves scheduling algorithms that determine which process executes on the CPU at any given time, using metrics such as turnaround time and response time to evaluate performance. Synchronisation mechanisms, including semaphores and monitors, prevent race conditions when concurrent processes access shared resources. Memory management techniques such as paging and virtual memory enable programs to operate with addresses that exceed physical memory capacity.

Contents

  1. Introduction to Operating Systems
  2. Process Management
  3. Synchronisation
  4. Deadlocks
  5. Memory Management
  6. File Systems
  7. I/O Systems
  8. Virtualization
  9. Security
  10. Problem Set

Overview

University-level operating systems notes covering processes, memory, file systems, and virtualisation.

Topics Covered

  • Process Management: Scheduling, threads, inter-process communication
  • Synchronisation: Semaphores, monitors, condition variables
  • Memory Management: Paging, segmentation, virtual memory
  • File Systems: Implementation, performance, reliability

Prerequisites

  • Basic programming experience
  • Computer architecture fundamentals
  • Understanding of binary representation

How to Use These Notes

Start with process management to understand the foundational concepts, then progress to memory and file systems. Each section includes worked examples and practice problems.

Use the sidebar to browse topics, or start with the introductory pages linked from the sidebar.

Additional Resources

Each section includes:

  • Detailed explanations of key concepts
  • Worked examples with step-by-step solutions
  • Practice problems with answers
  • Common pitfalls and how to avoid them
  • Connections to other areas of computer science

Study Tips

  1. Understand abstractions: Focus on how the OS abstracts hardware complexity
  2. Practice visualisation: Draw process states, memory layouts, and scheduling diagrams
  3. Learn synchronisation: Master mutexes, semaphores, and condition variables
  4. Analyse trade-offs: OS design always involves trade-offs (performance vs. fairness)
  5. Connect to real systems: Study Linux/Unix internals to understand theoretical concepts