周志遠教授作業系統_chap04ˍOperating System Chap4 Multithreaded Programming.pdf
1. 线程介绍
- 线程-轻量进程,CPU利用的基本单元
- 相同进程的所有线程共享
- 每个线程有各自的stack
- thread control block

1.1 案例
- web browser 多线程加载内容
- web server
- 1请求/进程:表现差
- 1请求/线程:因为共享资源和code,表现好
- rpc
- 游戏-多线程控制不同物件,必要时同步沟通
1.2 多线程的好处
- 响应式(Responsiveness): 即使程序block/执行长时间操作时也能继续执行
- 资源共享:许多不同活动线程共享系统地址空间
- MP arch.(多处理器架构)利用 :许多线程并行运行在不同处理器
- 经济:创建process cost高,需要call kernel等操作,甚至有些即使没有内存管理工作也需要寄存器等。
1.3 Why Thread?
Software角度

HardWare角度-多核心
- 提供机制更好利用多核并提高并行性
- 两面性:设计程序存在困难
e.g. hyper-threading - intel CPU也给线程调度,承担一部分OS功能
1.4 多核编程的困难
- 划分不同任务给不同核心
- 平衡核心和任务
- 数据分割
- 数据存在依赖
- debug很难,多线程/不同PC协作debug难
1.5 User vs. Kernel Threads