Operating System Theory Learning Guide
Introduction
This folder contains materials for systematically learning Operating System (OS) theory. You can progressively learn core OS concepts from process management to memory management and file systems.
Target Audience: Developers with C/C++ programming experience, those studying CS fundamentals
Learning Roadmap
[OS Basics] [CPU/Synchronization] [Memory/Files]
β β β
βΌ βΌ βΌ
OS Overview ββββββββββΆ CPU Scheduling Basics βββββΆ Memory Management Basics
β β β
βΌ βΌ βΌ
Process Concepts βββββββββΆ Scheduling Algorithms βββββΆ Virtual Memory
β β β
βΌ βΌ βΌ
Threads/Multithreading βββΆ Advanced Scheduling βββββββββΆ Page Replacement
β β β
βΌ βΌ βΌ
ββββββββββββββββΆ Synchronization Basics ββββββΆ File Systems
β β
βΌ βΌ
Synchronization Tools βββββββΆ I/O Systems
β
βΌ
Deadlock
Prerequisites
- C/C++ Programming: Pointers, memory management, multithreading basics
- Computer Architecture Basics: CPU, memory hierarchy, interrupts
- Basic Data Structures: Queue, stack, linked list
- Basic Algorithms: Complexity analysis (Big O)
File List
OS Basics (01-03)
CPU Scheduling (04-06)
Process Synchronization (07-09)
Memory Management (10-13)
Virtual Memory (14-15)
File Systems and I/O (16-18)
Recommended Learning Order
Stage 1: OS Basics (1 week)
01_OS_Overview β 02_Process_Concepts β 03_Threads_and_Multithreading
Understand basic OS concepts and differences between processes/threads.
Stage 2: CPU Scheduling (1-2 weeks)
04_CPU_Scheduling_Basics β 05_Scheduling_Algorithms β 06_Advanced_Scheduling
Learn CPU scheduling goals and various algorithms.
Stage 3: Process Synchronization (1-2 weeks)
07_Synchronization_Basics β 08_Synchronization_Tools β 09_Deadlock
Study concurrency issues and solutions in depth.
Stage 4: Memory Management (1-2 weeks)
10_Memory_Management_Basics β 11_Contiguous_Memory_Allocation β 12_Paging β 13_Segmentation
Stage 5: Virtual Memory (1 week)
14_Virtual_Memory β 15_Page_Replacement
Stage 6: Files/I/O (1 week)
16_File_System_Basics β 17_File_System_Implementation β 18_IO_and_IPC
Practice Environment
# Linux environment (recommended)
# Ubuntu, Fedora, or macOS
# GCC compiler
gcc --version
g++ --version
# pthread library (multithreading)
# Included by default on Linux
# Process monitoring
ps aux
top
htop
# CPU information
cat /proc/cpuinfo
# Memory information
cat /proc/meminfo
free -h
# Process status
cat /proc/[PID]/status
Core Concepts Quick Reference
Process State Transitions
New
β
βΌ
βββββββ Dispatch βββββββ
βReadyβββββββββββββΆβRun β
β ββββββββββββββ β
βββββββ Timeout βββββββ
β² β
β I/O Complete β I/O Request
β βΌ
β βββββββ
ββββββββββββββββWait β
β β
βββββββ
Scheduling Algorithm Comparison
| Algorithm |
Preemptive |
Starvation |
Features |
| FCFS |
Non-preemptive |
None |
Simple, convoy effect |
| SJF |
Non-preemptive |
Possible |
Optimal average waiting time |
| SRTF |
Preemptive |
Possible |
Preemptive SJF |
| Priority |
Both |
Possible |
Solve with aging |
| RR |
Preemptive |
None |
Time-sharing, time quantum important |
| MLFQ |
Preemptive |
Possible |
Adaptive, practical |
| Tool |
Value Range |
Use Case |
| Mutex |
0/1 |
Mutual exclusion |
| Binary Semaphore |
0/1 |
Mutual exclusion |
| Counting Semaphore |
0~N |
Resource counting |
| Monitor |
- |
Advanced synchronization |
Links with Other Folders
External Resources
Learning Tips
- Practice is Essential: Write and execute code yourself
- Visualization: Draw process states, scheduling Gantt charts yourself
- Use Linux: Check real system status with /proc filesystem
- Step-by-Step Learning: Fully understand basic concepts before moving to next stage
- Problem Solving: Make sure to solve practice problems in each lesson