# UNIX环境高级编程(下篇)独立导读

本课程是《UNIX环境高级编程》体系中的进阶核心,主要聚焦于信号机制、线程并发、高级I/O模型以及进程间通信等深层操作系统原理。对于希望从应用层开发向系统级开发转型的工程师而言,掌握这些内容是从“写代码”迈向“懂系统”的关键一步。

**学习门槛与前置基础**
学习本课前,建议您已经熟练掌握C语言编程,并对Linux下的文件操作、进程控制及基本Shell命令有实际操作经验。若您对`fork`、`exec`或标准IO库尚不熟悉,建议先回顾相关基础,否则在理解信号处理或管道通信时可能会遇到理解障碍。此外,具备基本的计算机网络知识将有助于更好地吸收套接字API部分的内容。

**课程学习路径建议**
建议按照以下顺序循序渐进:
1. **信号模块**:从信号概念入手,重点区分可靠与不可靠信号,掌握`sigaction`等处理函数,这是理解后续线程与信号交互的基础。
2. **线程模块**:深入理解线程原语、同步机制(互斥锁、条件变量)及线程安全,明确线程私有数据的用法,避免并发陷阱。
3. **高级I/O模块**:系统学习非阻塞IO、多路复用(epoll/select)及mmap技术,这是构建高性能网络服务器的必备技能。
4. **IPC模块**:对比管道、消息队列、信号量与共享内存的异同,根据业务场景选择最合适的通信方式。

**学完后的核心产出**
完成本课程后,您将能够:
- 独立设计并实现健壮的多线程服务端程序,有效处理并发竞争与同步问题。
- 熟练运用高级I/O模型优化网络应用性能,解决高并发场景下的阻塞瓶颈。
- 精准选择合适的进程间通信机制,提升模块间数据交换的效率与安全性。
- 深入理解Unix/Linux系统底层机制,为阅读开源项目源码及解决复杂线上故障奠定坚实基础。

**资料包使用指南**
课程配套的资料包包含了各章节的演示代码与练习题。请勿仅被动观看视频,务必对照目录中的示例代码在本地环境编译运行,尝试修改参数观察现象变化。对于“信号”和“线程”章节,建议亲手复现死锁场景以加深理解;对于“高级I/O”章节,可尝试将阻塞IO改写为IO复用模型,直观感受性能差异。通过动手实践,将理论知识转化为实际的工程能力。

本课程虽有一定难度,但内容扎实,适合追求技术深度的开发者系统钻研。

课程目录

1 信号的概念和信号处理函数 (27:19)
2 可靠信号和不可靠信号及其编程 (21:26)
3 线程简介 (05:05)
4 线程原语 (24:35)
5 线程同步 (19:25)
6 线程安全 (05:47)
7 线程私有数据 (04:38)
8 线程和信号 (07:39)
9 高级IO: 非阻塞IO,多路复用IO,信号IO,异步IO (01:04:14)
10 高级IO: 记录锁(文件锁) (24:02)
11 高级IO: 存储映射mmap (20:19)
12 进程间通信的分类 (03:24)
13 管道 (18:21)
14 命名管道 (07:46)
15 消息队列 (22:01)
16 信号量 (15:36)
17 共享内存 (16:28)
18 套接字API (52:11)
19 结束语 (02:19)