# 🗺️ 操作系统课程导航

> **课程**：操作系统 | **对象**：软件工程 3、4 班 | **主讲**：徐钦桂
> **教材**：汤小丹《计算机操作系统》、《操作系统概念》、《Linux编程》
> **资料来源**：`F:\操作系统\` 目录下的课件（.ppt/.pptx）、实验指导书（.doc）、源代码

---

## 📚 课程内容总览

```mermaid
mindmap
  root((操作系统))
    基础篇
      系统运行机制(中断/MMU/CPU模式/系统调用)
      Linux简介与使用(目录/文件/命令)
      Linux C编程(gdb/make/编译链接)
    文件与存储
      文件IO(UNIX IO/mmap/重定向)
      磁盘空间管理(FAT/NTFS/Ext2/RAID)
      存储管理(分页/分段/段页式)
      虚拟存储器(请求分页/页面置换/工作集)
    进程与线程
      进程控制(fork/exec/wait/signal)
      多线程(互斥/同步/生产者消费者)
      进程间通信(管道/消息队列/共享内存)
      处理机调度(FCFS/SJF/RR/MFQ/CFS)
      死锁(预防/避免/检测/银行家算法)
    网络与并发
      网络编程(socket/客户端服务器)
      并发服务器(多进程/多线程/预线程化)
    系统底层
      程序代码优化
    操作系统实践
      Web服务器初步实现
      多进程多线程服务器
      线程池与业务分割模型
```

---

## 🛤️ 推荐学习路线

```mermaid
graph LR
    A["第01讲 系统运行机制
中断·MMU·系统调用"] --> B["第02讲 Linux基础
目录·文件·命令"]
    B --> C["第03讲 C编程基础
gdb·make·编译"]
    C --> D["第04讲 文件IO
open·read·write·mmap"]
    D --> E["实验01 IO编程"]
    C --> F["第05讲 进程控制
fork·exec·signal"]
    F --> G["实验02 进程控制"]
    F --> H["第06讲 多线程
mutex·sem·生产者消费者"]
    H --> I["实验03 多线程"]
    F --> J["第07讲 进程间通信
pipe·shm·msg"]
    J --> K["实验04 IPC"]
    D --> L["第08讲 网络编程
socket·toggle"]
    L --> M["实验05 网络通信"]
    L --> N["第09讲 并发服务器
多进程·多线程·预线程化"]
    N --> O["实验06 并发服务器"]
    A --> P["第11讲 处理机调度
FCFS·SJF·RR·MFQ·CFS"]
    P --> Q["第12讲 死锁
银行家算法·检测·解除"]
    D --> R["第10讲 磁盘管理
FAT·Ext2·RAID"]
    D --> S["第13讲 存储管理
分页·分段·TLB"]
    S --> T["第14讲 虚拟存储器
请求分页·置换算法"]
    C --> U["第15讲 代码优化"]
```

---

## 📖 各讲笔记

### 基础篇
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[01_系统运行机制]] | 系统运行机制 | 中断机制、MMU地址变换、CPU双模式、系统调用 | 第01讲_系统运行机制.ppt |
| [[02_Linux基础]] | Linux简介与使用 | UNIX/Linux历史、目录结构、文件操作、权限 | 第02讲_Linux简介与使用.pptx |
| [[03_C语言编程基础]] | Linux C编程 | 编译链接过程、gdb调试、Makefile、wrapper库 | 第03讲/Linux C编程 |

### 文件与IO
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[04_文件IO编程]] | 文件IO编程 | open/read/write/close、mmap、dup2、文件共享 | 第04讲/实验01 |
| [[05_磁盘空间管理]] | 磁盘空间管理 | 连续/链接/索引组织、FAT12/16/32、NTFS、Ext2、RAID | 第04讲_磁盘空间管理.ppt |

### 进程与线程
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[06_进程控制]] | 进程控制 | fork/exec/wait/exit、信号机制、shell实现 | 第05讲/实验02 |
| [[07_多线程编程]] | 多线程编程 | pthread、互斥锁、信号量、生产者消费者、并行计算 | 第06讲/实验03 |
| [[08_进程间通信]] | 进程间通信 | 管道、FIFO、消息队列、共享内存、IPC信号量 | 第07讲/实验04 |

### 网络与并发
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[09_网络编程基础]] | 网络编程 | socket API、gethostbyname、客户端服务器模型 | 第08讲/实验05 |
| [[10_并发服务器]] | 并发网络服务器 | 多进程/多线程/预线程化服务器、sbuf缓冲区 | 第09讲/实验06 |

### 系统管理
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[11_处理机调度]] | 处理机调度 | FCFS/SJF/HRRF/RR/优先级/MFQ、Linux CFS调度 | 第10讲_处理机调度.ppt |
| [[12_死锁]] | 死锁 | 四个必要条件、预防/避免/检测/解除、银行家算法 | 第11讲_死锁.ppt |

### 存储管理
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[13_存储管理基础]] | 存储管理概念与程序装入 | 逻辑/物理地址、地址空间、装入链接、内核/用户空间 | 第12讲_存储管理概念与程序装入.ppt |
| [[14_分页存储管理]] | 分页存储管理 | 页表、地址变换、TLB快表、多级页表、倒转页表 | 第12讲_分页式存储管理.ppt |
| [[15_段式存储管理]] | 段式存储管理 | 分段原理、段表、段页式存储管理 | 第12讲_段式存储管理.ppt |
| [[16_虚拟存储器]] | 虚拟存储器 | 局部性原理、请求分页、页面置换算法、工作集、抖动 | 第12讲_虚拟存储器.ppt |

### 系统底层
| 讲次 | 主题 | 核心内容 | 课件 |
|------|------|----------|------|
| [[17_程序代码优化]] | 程序代码优化 | 编译优化、循环优化、缓存友好编程 | 第14讲_程序代码优化.ppt |

---

## 🔬 实验指南

| 实验 | 主题 | 核心任务 | 涉及章节 |
|------|------|----------|----------|
| [[实验01_IO编程]] | Linux IO编程 | student.txt处理、结构体IO、测时、词频统计 | 第04讲 |
| [[实验02_进程控制]] | 进程控制编程 | 进程树、shell实现、daemon监控、信号管理 | 第06讲 |
| [[实验03_多线程编程]] | 多线程编程 | 3线程打印、信号量互斥、生产者消费者、并行求和 | 第07讲 |
| [[实验04_进程间通信]] | 进程间通信 | 管道通信、消息队列CS、共享内存+信号量同步 | 第08讲 |
| [[实验05_网络通信]] | 网络通信编程 | toggle测试、weblet服务器、文件下载、远程shell | 第09讲 |
| [[实验06_并发服务器]] | 并发网络应用 | 多进程/多线程/预线程化weblet、web代理 | 第10讲 |

---

## 🖥️ 操作系统实践

| 实践 | 主题 | 核心内容 | 涉及章节 |
|------|------|----------|----------|
| [[实践01_Web服务器初步实现]] | Web服务器初步实现 | 单进程迭代式服务器、HTTP请求处理、RIO函数库、性能测试与优化 | 第09讲、第10讲、第18讲 |
| [[实践02_多进程多线程服务器]] | 多进程多线程服务器 | fork并发、pthread并发、select/epoll多路复用、性能对比 | 第06讲、第07讲、第10讲 |
| [[实践03_线程池与业务分割]] | 线程池与业务分割模型 | 线程池实现、预线程化、sbuf生产者消费者、业务分割模型 | 第07讲、第10讲 |

---

## 📎 附录

- [[附录A_Wrapper库参考]] — 课程提供的C语言包装库（wrapper.h/libwrapper.a）
- [[附录B_术语表]] — 操作系统核心术语速查
- [[附录C_学习路径指南]] — 根据基础定制学习方案

---

## 📂 源代码索引

课程源代码位于 `F:\操作系统\` 下：

| 目录 | 内容 | 文件数 |
|------|------|--------|
| `chap3/` | C语言基础（hello.c, sum.c, gdbuse.c, cmdpar.c等） | ~10 |
| `chap4/` | 文件IO（cpfile.c, fcopy1.c, lseek1.c, mmap1.c, dup2.c等） | ~15 |
| `chap5/` | 进程控制（fork1-3.c, exec1.c, waitpid1.c, signal1.c, shellex.c等） | ~20 |
| `chap6/` | 多线程（pthread1.c, threadrace.c, mutex1.c, norace.c等） | ~15 |
| `chap7/` | IPC（pipe1.c, fifo1.c, shmread.c, msgsnd1.c等） | ~20 |
| `chap8/` | 网络编程（hostinfo.c, toggle.c, togglec.c等） | ~15 |
| `chap9/` | 并发服务器（toggless1-2.c, togglest.c等） | ~15 |
| `lib/` | wrapper库（wrapper.h, libwrapper.a） | 2 |
