Files
obsidian/操作系统/00_课程导航.md

178 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🗺️ 操作系统课程导航
> **课程**:操作系统 | **对象**:软件工程 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/` | 文件IOcpfile.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/` | IPCpipe1.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 |