实验五:设备驱动中并发控制.docVIP

  • 1
  • 0
  • 约1.09万字
  • 约 10页
  • 2017-02-11 发布于江苏
  • 举报
实验五:设备驱动中的并发控制 1.并发与竞态 并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race conditions)。例如,对于globalmem设备,假设一个执行单元A对其写入3000个字符“a”,而另一个执行单元B对其写入4000个字符“b”,第三个执行单元C读取globalmem的所有字符。如果执行单元A、B的写操作如图1所示的顺序执行,执行单元C的读操作不会有问题。但是,如果执行单元A、B如图2所示的顺序执行,而执行单元C又“不合时宜”地读,则会读出3000个“b”。 比图2更复杂、更混乱的并发大量地存在于设备驱动中,只要并发的多个执行单元存在对共享资源的访问,竞态就可能发生。在Linux内核中,主要的竞态发生于如下几种情况。 1.对称多处理器(SMP)的多个CPU SMP是一种紧耦合、共享存储的系统模型,它的特点是多个CPU使用共同的系统总线,因此可访问共同的外设和储存器。 2.单CPU内进程与抢占它的进程 Linux2.6内核支持抢占调度,一个进程在内核执行的时候可能被另一高优先级进程打断,进程与抢占它的进程访问共享资源的情况类似于SMP的多个CPU。 3.中断(硬中断、软中断、Tasklet、底半部)与进程之间 中断可以打断正在执行的进程,如果

文档评论(0)

1亿VIP精品文档

相关文档