Operating System Theory Learning Guide

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)

File Difficulty Key Topics
01_OS_Overview.md ⭐ OS definition, roles, history, kernel architecture
02_Process_Concepts.md ⭐⭐ Process memory structure, PCB, state transitions
03_Threads_and_Multithreading.md ⭐⭐ Thread vs process, multithreading models

CPU Scheduling (04-06)

File Difficulty Key Topics
04_CPU_Scheduling_Basics.md ⭐⭐ CPU/I/O burst, scheduling goals, scheduler types
05_Scheduling_Algorithms.md ⭐⭐⭐ FCFS, SJF, SRTF, Priority, RR, Gantt charts
06_Advanced_Scheduling.md ⭐⭐⭐ MLFQ, multiprocessor scheduling, real-time scheduling

Process Synchronization (07-09)

File Difficulty Key Topics
07_Synchronization_Basics.md ⭐⭐⭐ Race conditions, critical sections, Peterson's Solution
08_Synchronization_Tools.md ⭐⭐⭐ Mutex, semaphore, monitor, classic synchronization problems
09_Deadlock.md ⭐⭐⭐ Deadlock conditions, prevention, avoidance, detection, Banker's algorithm

Memory Management (10-13)

File Difficulty Key Topics
10_Memory_Management_Basics.md ⭐⭐ Address binding, swapping, memory allocation overview
11_Contiguous_Memory_Allocation.md ⭐⭐⭐ First-fit, best-fit, fragmentation, compaction
12_Paging.md ⭐⭐⭐ Page table, TLB, multilevel paging
13_Segmentation.md ⭐⭐⭐ Segment table, comparison with paging

Virtual Memory (14-15)

File Difficulty Key Topics
14_Virtual_Memory.md ⭐⭐⭐ Demand paging, page fault, valid/invalid bit
15_Page_Replacement.md ⭐⭐⭐ FIFO, LRU, LFU, Clock, thrashing

File Systems and I/O (16-18)

File Difficulty Key Topics
16_File_System_Basics.md ⭐⭐ File concepts, directory structure, access methods
17_File_System_Implementation.md ⭐⭐⭐ Allocation methods, FAT, inode, journaling
18_IO_and_IPC.md ⭐⭐⭐ I/O hardware, DMA, IPC communication

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

Required Tools

# 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

System Information

# 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

Synchronization Tool Comparison

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

Folder Related Content
Linux/ Linux system programming, process management
Computer_Architecture/ CPU architecture, memory hierarchy, interrupts
C_Programming/ System calls, multithreading programming
Networking/ Socket programming, I/O models

External Resources


Learning Tips

  1. Practice is Essential: Write and execute code yourself
  2. Visualization: Draw process states, scheduling Gantt charts yourself
  3. Use Linux: Check real system status with /proc filesystem
  4. Step-by-Step Learning: Fully understand basic concepts before moving to next stage
  5. Problem Solving: Make sure to solve practice problems in each lesson
to navigate between lessons