操作系统2(多处理器编程)
一、并发
1.操作系统是最早的并发程序之一
2.并发的基本单位:线程
共享内存的多个执行流
- 执行流拥有独立的堆栈/寄存器
- 共享全部的内存(指针可以互相引用)
3.实现原子性
- lock(&lk)
- unlock(&lk)
- 实现临界区(critical section)之间的绝对串行化
- 程序的其他部分依然可以并行执行
99%的并发问题都可以用一个队列解决
- 把大任务切分成可以并行的小任务
- worker thread 去锁保护的队列里取任务
- 除去不可并行的部分,剩下的部分可以获得线性的加速