第七章内核中的同步临界区和竞争状态内核同步措施并发控制
第七章 内核中的同步 临界区和竞争状态 内核同步措施 并发控制
临界区和竞争状态·什么是临界区(critical regions)?一就是访问和操作共享数据的代码段,这段代码必须被原子地执行r·什么是竞争状态?一多个内核任务同时访问同一临界区·什么是同步?一避免并发和防止竞争状态称为同步(synchronization)
• 什么是临界区(critical regions)? –就是访问和操作共享数据的代码段,这段代 码必须被原子地执行 • 什么是竞争状态? – 多个内核任务同时访问同一临界区 • 什么是同步? –避免并发和防止竞争状态称为同步 (synchronization) < > 临界区和竞争状态
临界区举例,考虑一个非常简单的共享资源的例子:-个全局整型变量和一个简单的临界区,其中的操作仅仅是将整型变量的值增加1:1i++·该操作可以转化成下面三条机器指令序列:-(1)得到当前变量的值并拷贝到一个寄存器中一(2)将寄存器中的值加1一(3)把i的新值写回到内存中<>
• 考虑一个非常简单的共享资源的例子:一 个全局整型变量和一个简单的临界区,其 中的操作仅仅是将整型变量的值增加1: i++ • 该操作可以转化成下面三条机器指令序列: – (1) 得到当前变量i的值并拷贝到一个寄存器中 – (2)将寄存器中的值加1 – (3) 把i的新值写回到内存中 < > 临界区举例
临界区举例可能的实际执行结果:内核任务1内核任务2r获得i(1)期望的结果获得 (1)增加 (1->2)内核任务1内核任务2获得i(1)增加 (1->2)增加(1->2)写回(2)写回(2)获得i(2)写回 (2)增加(2->3)写回(3)
内核任务1 内核任务2 获得i(1) - 增加 i(1->2) - 写回 i(2) - 获得 i(2) 增加 i(2->3) 写回 i(3) < > 临界区举例 内核任务1 内核任务2 获得 i(1) - - 获得 i(1) 增加 i(1->2) - - 增加 i(1->2) 写回 i(2) - - 写回 i(2) 可能的实际执行结果: 期望的结果
共享队列和加锁X当共享资源是一个复杂的数据结构时,竞争状态往往会使该数据结构遭到破坏。对于这种情况,锁机制可以避免竞争状态正如门锁和门一样,门后的房间可想象成一个临界区。r,在一个指定时间内,房间里只能有个一个内核任?务存在,当一个任务进入房间后,它会锁住身后的房门;当它结束对共享数据的操作后,就会走出房间,打开门锁。如果另一个任务在房门上锁时来了,那么它就必须等待房间内的任务出来并打开门锁后,才能进入房间。KM
❖ 当共享资源是一个复杂的数据结构时,竞争状 态往往会使该数据结构遭到破坏。 ❖ 对于这种情况,锁机制可以避免竞争状态正如门 锁和门一样,门后的房间可想象成一个临界区。 ❖ 在一个指定时间内,房间里只能有个一个内核任 务存在,当一个任务进入房间后,它会锁住身后 的房门;当它结束对共享数据的操作后,就会走 出房间,打开门锁。如果另一个任务在房门上锁 时来了,那么它就必须等待房间内的任务出来并打 开门锁后,才能进入房间。 < > 共享队列和加锁