2021-10-24

9.内核同步介绍

临界区和竞争条件

临界区就是共享数据的代码段,访问临界区时代码不可被打断。

造成并发执行的原因

由于内核的调度程序,用户进程会在运行时被其他进程抢占,造成伪并发;
内核中造成并发执行的原因:

  • 中断:中断可在任何时刻打断当前代码
  • 软中断和tackest
  • 内核抢占
  • 睡眠和与用户空间的同步:内核进程可能会睡眠导致调度一个新的用户程序运行
  • 对称多处理:进程分别运行在有多个处理器的系统会造成真并发。
    SMP安全代码:对称多处理机器中能避免并发
    抢占安全代码:内核抢占时能避免并发

9.4 征用和扩展性

锁的征用:锁正在被占用时,其他程序试图获得它
扩展性:系统可扩展性的量度,只要是可被计数的设备都有扩展性,但性能和个数不一定成正比。
提高扩展性可以在大型SMP系统,处理能力强大的机器上获得良好效果,比如用一个锁控制一个链表,在很多进程访问它的时候就会遇到扩展性瓶颈,如果用很多锁控制此链表的每个节点就会好很多;但是在访问进程少的情况下,锁的粒度太细就会造成性能损耗。