操作系统2(多处理器编程)

一、并发

1.操作系统是最早的并发程序之一

2.并发的基本单位:线程

共享内存的多个执行流

  • 执行流拥有独立的堆栈/寄存器
  • 共享全部的内存(指针可以互相引用)

3.实现原子性

  • lock(&lk)
  • unlock(&lk)
    • 实现临界区(critical section)之间的绝对串行化
    • 程序的其他部分依然可以并行执行

99%的并发问题都可以用一个队列解决

  • 把大任务切分成可以并行的小任务
  • worker thread 去锁保护的队列里取任务
  • 除去不可并行的部分,剩下的部分可以获得线性的加速
    • T_{n}<T_{\infty }+\frac{T_{1}}{n}

你可能感兴趣的:(linux,c语言)