南京大学:《操作系统》课程教学资源(PPT课件)第三章(3.1)管程

管程 管程的基本概念 管程的汉森方法 ●管程的霍尔方法
管程 ⚫ 管程的基本概念 ⚫ 管程的汉森方法 ⚫ 管程的霍尔方法

管程:基本概念 ●管程是由若公共变量及其说明和 所有访问这些变量的过程所组成 ●管程把分散在各个进程中互斥地访 问公共变量的那些临界区梟中起来 管理。程的局部变量只能由该管 程的过程存取 ●进程只能互斥地调用管程中的过程
管程:基本概念 ⚫管程是由若干公共变量及其说明和 所有访问这些变量的过程所组成 ⚫管程把分散在各个进程中互斥地访 问公共变量的那些临界区集中起来 管理,管程的局部变量只能由该管 程的过程存取 ⚫进程只能互斥地调用管程中的过程

管程有以下属性 ●●共享性:管程中的移出过程可被所有要调 用管程的进程所共享。 安全性:管程的局部变量只能由该管程的 过程存取,不允许进程或其它管程来直接存取 个管程的过程也不应该存取任何非局部于它 的变量 互斥性:在任一时刻,共享资源的进程可 访问管理该资源的过程,最多只有一个调用者 能真正地进入管程,而任何其它调用者必须等 待。直到访问者退出
管程有以下属性: ⚫ ⚫ 共享性:管程中的移出过程可被所有要调 用管程的进程所共享。 ⚫ ⚫ 安全性:管程的局部变量只能由该管程的 过程存取,不允许进程或其它管程来直接存取, 一个管程的过程也不应该存取任何非局部于它 的变量。 ⚫ ⚫ 互斥性:在任一时刻,共享资源的进程可 访问管理该资源的过程,最多只有一个调用者 能真正地进入管程,而任何其它调用者必须等 待。直到访问者退出

管程:基本形式 TYPE= MONITOR 〈管程变量说明 define use; procedure〈过程名〉(形式参数表>); begin 过程体>; end: ●●●●● procedure; en d begin 〈管程的局部数据初始化语旬〉 end
管程:基本形式 TYPE = MONITOR ; define ; use ; procedure (); begin ; end; …… procedure (); begin ; end; begin ; end;

管程:条件变量 ●条件变量( condition variables) 当调用管程过程的进程无法运行时, 用于阻蜜选程的傖号量 ●同步原语Wait:当一个管程过程发现 无法继续时(如发现没有可用资源 时),它在棊些条件变量上执行Wait, 这个动作引起调用进程阻塞 同步原语 signal
管程:条件变量 ⚫条件变量(condition variables): 当调用管程过程的进程无法运行时, 用于阻塞进程的信号量 ⚫同步原语wait:当一个管程过程发现 无法继续时(如发现没有可用资源 时),它在某些条件变量上执行wait, 这个动作引起调用进程阻塞 ⚫同步原语signal

管程:结构 等待调用 进程队列 管程等待区域 入口 管程 condition c1 局部数据 wait(c1) 条件变量 过程1 condition cn wait(cn 过程n TF gent queue signal(c 变量初始化代码 出口
管程:结构 condition c1 wait(c1) … condition cn wait(cn) Urgent queue signal(ci) 局部数据 条件变量 过程1 过程n 出口 变量初始化代码 入口 管程 等待调用 进程队列 管程等待区域

管程:示例 TYPE SSU E MONITOR var busy boolean; nobusy semaphore: define require, return; use wait, signal procedure requi re beg in if busy then wait( nobusy);/*调用进程加入等待队列*/ busy := ture; end procedure return b egIn busy false; signal (nobusy) /*从等待队列中释放进程* end begin /*管程变量初始化*/ busy false end
TYPE SSU = MONITOR 管程:示例 var busy : boolean; nobusy : semaphore; define require, return; use wait, signal; procedure require; begin if busy then wait(nobusy); /*调用进程加入等待队列*/ busy := ture; end; procedure return; begin busy := false; signal(nobusy); /*从等待队列中释放进程*/ end; begin /*管程变量初始化*/ busy := false; end;

管程:问题 ●当使用 signa1释放一个等待进程时,可能 出现两个进程同时停留在管程内。解决方 法 执行 signa的进程等待,直到被释放选 程退出管程或等待另一个条件 被释放进程等待,直到执行 signal的进 程退出管程或等待另一个亲件 尔采用了第一种办法 ●汉森选择了两者的折裏,他规定管程中的 过程所执行的 signal操作是过程体的最后 一个操作
管程:问题 ⚫ 当使用signal释放一个等待进程时,可能 出现两个进程同时停留在管程内。解决方 法: • 执行signal的进程等待,直到被释放进 程退出管程或等待另一个条件 • 被释放进程等待,直到执行signal的进 程退出管程或等待另一个条件 ⚫ 霍尔采用了第一种办法 ⚫ 汉森选择了两者的折衷,他规定管程中的 过程所执行的signal操作是过程体的最后 一个操作

管程的实现:汉森方法 ●每个管程均使用的一个数据类型 TYPE interf record intem: semaphore;/*开放管程的信号量* count1: integer;/等待调用的进程个数*/ count2: integer;/*调用了管程中的过程且不 END 处于等待状态的进程个数*
管程的实现:汉森方法 ⚫每个管程均使用的一个数据类型: TYPE interf = RECORD intsem : semaphore; /* 开放管程的信号量 */ count1 : integer; /* 等待调用的进程个数 */ count2 : integer; /* 调用了管程中的过程且不 END; 处于等待状态的进程个数 */

管程的现:汉森方法 ●调用查看原语 check:如果管程是开放的, 则执行这条原语后关闭管程相应进程继 续执行:如果管程是关闭的,则执行这条 原语后相应进程被置成等待调用状态 procedure check(var IM interf) beg in if M count 2=0 then M, count2:=M count2 1 ese beg in W(IM intem.M count1+ 1 IM. count 1 end end
管程的实现:汉森方法 ⚫ 调用查看原语check:如果管程是开放的, 则执行这条原语后关闭管程,相应进程继 续执行;如果管程是关闭的,则执行这条 原语后相应进程被置成等待调用状态 procedure check(var IM interf); begin if IM.count2 = 0 then IM.count2 := IM.count2 + 1; else begin IM.count1 := IM.count1 + 1; W(IM.intsem); end; end;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 南京大学:《操作系统》课程教学资源(PPT课件)第三章(3.5)进程通信.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第三章 死锁.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第二章 处理器管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章 操作系统概论.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)OS教学要求.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第二章(2.4)负载共享调度算法.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第二章(2.3)处理器调度.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第二章(2.2)非进程内核模型.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第二章(2.1)调试语句.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.8)Umix的 Shell.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.7)While(true).ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.6)多道程序设计与操作系统的形成.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.5)操作录.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.4)算题过程.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.3)硬件的复杂性.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.2)资源.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.13)分时操作系统特性.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.12)微机操作系统的发展.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.11)解决资源冲突的策略和技术.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第一章(1.10)处理机管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第三章(3.2)临界区管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第三章(3.3)并发进程概述.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第三章(3.4)信号量与PV操作.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第四章 存储管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第四章(4.5.3)分段式虚拟存储管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第四章(4.3)分页式存储管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第四章(4.5)虚拟存储管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第四章(4.4)页面replace.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第五章 设备管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第五章(5.4)缓冲技术.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第五章(5.2)I/o软件原理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)UNIX操作系统的文件管理讲义.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第六章(6.6)实例研究:Linux.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第六章(6.7)实例研究:Windows 2000.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第六章 文件管理.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第六章(6.3-3)文件管理2.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第七章(7.8)实例研究UnixWare 2.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第七章(7.7)实例研究Windows2000.ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第七章 操作系统安全性(7.1-7.3).ppt
- 南京大学:《操作系统》课程教学资源(PPT课件)第七章 操作系统安全性(7.4)内部访问授权.ppt