Operating Systems

ProcessesMemoryFile systemsDevices

Course Overview

The operating system is the layer of a computer system that sits closest to the hardware while serving every piece of software above it. It offers applications a single set of abstractions, and it turns CPUs, memory, secondary storage, and devices into resources that can be shared safely and concurrently. This course follows five threads — operating system fundamentals, process management, memory management, file systems, and input/output — and every chapter first explains why a problem appears, then compares the available mechanisms, and finally settles on concrete algorithms and strategies, so that the ideas end up derivable and arguable rather than merely listed.

By the end of this course you will be able to explain the abstractions and key mechanisms an operating system provides, weigh the trade-offs among mainstream algorithms and strategies, and make defensible design judgements about the four problem areas of processes, memory, files, and I/O.

Who This Is For

  • Who it is for: computer science students, developers preparing for graduate entrance exams or technical interviews, and engineers who want to fill the gap in their systems-layer knowledge.
  • Prerequisites: basic C/C++ syntax (pointers, structs, arrays, function calls) and a rough idea of what processes and threads are. No prior coursework in operating systems is assumed.

Learning Path

  1. Operating System Fundamentals — core concepts and the four defining characteristics, historical development and classification, the runtime environment, and kernel architectures. Start here to build the map of the subject.
  2. Process Management — processes and threads, CPU scheduling, synchronization and mutual exclusion, and deadlock. This chapter answers “how do several programs compete for resources without colliding?”
  3. Memory Management — program loading and address translation, contiguous and non-contiguous allocation, and virtual memory. This chapter answers “what do we do when memory runs out?”
  4. File Systems — core concepts, directory structures and allocation methods, access control, and common filesystem types. This chapter answers “how is data made durable, and how do we find it again?”
  5. Input/Output Systems — device classification, I/O control methods, device management, buffer management, and the I/O subsystem. This chapter answers “how are hardware differences abstracted into one uniform interface?”
  6. Exercises, Summary, and Syllabus — the chapter exercises, a set of cross-chapter consolidated exercises, the course summary, and the syllabus. This part pulls the scattered concepts together into a reusable framework.

Chapters 2 and 3 are the foundation for everything that follows, so if your time is limited, start there. The chapter exercises are the fastest way to find the gaps, and the glossary at the end of every page is the fastest way to recover a definition you have forgotten. After the five chapters, read the course summary to see the whole map at once, then work through the comprehensive exercises to test whether you can actually combine two modules.

Found an issue with this content?

Tell us what could be improved.