7.8 KiB
7.8 KiB
🗺️ 操作系统课程导航
课程:操作系统 | 对象:软件工程 3、4 班 | 主讲:徐钦桂 教材:汤小丹《计算机操作系统》、《操作系统概念》、《Linux编程》 资料来源:
F:\操作系统\目录下的课件(.ppt/.pptx)、实验指导书(.doc)、源代码
📚 课程内容总览
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服务器初步实现
多进程多线程服务器
线程池与业务分割模型
🛤️ 推荐学习路线
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 |