管程 管程的基本概念 管程的汉森方法 ●管程的霍尔方法
管程 ⚫ 管程的基本概念 ⚫ 管程的汉森方法 ⚫ 管程的霍尔方法
管程:基本概念 ●管程是由若公共变量及其说明和 所有访问这些变量的过程所组成 ●管程把分散在各个进程中互斥地访 问公共变量的那些临界区梟中起来 管理。程的局部变量只能由该管 程的过程存取 ●进程只能互斥地调用管程中的过程
管程:基本概念 ⚫管程是由若干公共变量及其说明和 所有访问这些变量的过程所组成 ⚫管程把分散在各个进程中互斥地访 问公共变量的那些临界区集中起来 管理,管程的局部变量只能由该管 程的过程存取 ⚫进程只能互斥地调用管程中的过程
管程有以下属性 ●●共享性:管程中的移出过程可被所有要调 用管程的进程所共享。 安全性:管程的局部变量只能由该管程的 过程存取,不允许进程或其它管程来直接存取 个管程的过程也不应该存取任何非局部于它 的变量 互斥性:在任一时刻,共享资源的进程可 访问管理该资源的过程,最多只有一个调用者 能真正地进入管程,而任何其它调用者必须等 待。直到访问者退出
管程有以下属性: ⚫ ⚫ 共享性:管程中的移出过程可被所有要调 用管程的进程所共享。 ⚫ ⚫ 安全性:管程的局部变量只能由该管程的 过程存取,不允许进程或其它管程来直接存取, 一个管程的过程也不应该存取任何非局部于它 的变量。 ⚫ ⚫ 互斥性:在任一时刻,共享资源的进程可 访问管理该资源的过程,最多只有一个调用者 能真正地进入管程,而任何其它调用者必须等 待。直到访问者退出
管程:基本形式 TYPE<管程名>= MONITOR 〈管程变量说明 define<(能被其他模块引用的)过程名列表> use<(要引用的模块外定义的)过程名列表>; procedure〈过程名〉(形式参数表>); begin 过程体>; end: ●●●●● procedure<过程名〉(形式参数表》); begin 过程体>; 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