# 🗺️ 操作系统课程导航 > **课程**:操作系统 | **对象**:软件工程 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 |