操作系统12 [新] 3_2 临界区管理.pdfVIP

  • 16
  • 0
  • 约5.69千字
  • 约 23页
  • 2020-09-14 发布于广西
  • 举报
3.2 临界区管理 互斥与临界区 临界区管理的尝试 软件算法 硬件设施 互斥与临界区 临界区管理的尝试 软件算法 硬件设施 3.2.1 互斥与临界区 • 飞机票售票系统之所以会产生错误,原因在于多个售票进程 交叉访问了共享变量 Aj • 并发进程中与共享变量有关的程序段叫 “临界区” (Critical Section),共享变量代表的资源叫 “临界资源” (Critical Resource) 3.2.1 互斥与临界区 (续) • 与同一变量有关的临界区分散在各进程的程序段中,而 各进程的执行速度不可预知 • 如果能保证进程在临界区执行时,不让另一个进程进入 临界区,即各进程对共享变量的访问是互斥的,就不会 造成与时间有关的错误 3.2.1 互斥与临界区 (续) • Dijkstra在1965年首先提出临界区的概念。可以用与一 个共享变量相关的临界区的语句结构来书写交互的并发 进程 shared variable region variable do statement • 临界区的嵌套使用 region x do [ … region y do [ … ] …] region y do [ … region x do [ … ] …] • 一个进程执行到临界区的语句时,不管该进程目前是否 正在运行,都说它是在临界区内 3.2.1:临界区的调度原则 • 一次至多允许一个进程进入临界区内; • 如果已有进程在临界区中,试图进入此临界区的其他进 程应等待; • 进入临界区的进程应在有限时间内退出,以便让等待队 列中的一个进程进入 • 临界区调度原则可总结成四句话: 1. 空闲让进:临界资源空闲时一定要让进程进入,不发生 “互 斥礼让”行为。 2. 忙则等待:临界资源正在使用时外面的进程等待。 3. 有限等待:进程等待进入临界区的时间是有限的,不会发生 “饿死”的情况。 4. 让权等待:进程等待进入临界区时应该放弃CPU的使用。 互斥与临界区 临界区管理的尝试 软件算法 硬件设施 3.2.2 临界区管理的尝试 • 为在具有一个处理器或共享主存的多处理器上执行的并 发进程实现的。方法假定对主存中同一个单元的同时访 问必定由存储器进行仲裁,使其串行化 3.2.2:尝试一 inside 1= false inside2= false process P 1 process P2 1. while inside2 do begin end; 2. while inside 1 do begin end; 3. inside 1 := true; 4. inside2 = true; 5. 临界区; 6. 临界区; 7. inside 1 := false; 8. inside2 := false; 9. end; end; 进程 、 同时进入了临界区 P1 P2 3.2.2:尝试一 inside 1= false inside2= false process P 1 process P2 1. while inside2 do begin end; 2. while inside 1 do beg

文档评论(0)

1亿VIP精品文档

相关文档