|
|
知识路径: > 计算机系统基础知识 > 计算机软件基础知识 > 操作系统基础知识 > 处理机管理 > 进程管理 >
|
相关知识点:34个
|
|
|
|
若用信号量和P、V操作来解决进程的同步与互斥问题,需要在程序中的适当位置安排P、V操作,否则会造成死锁错误。为了解决分散编程带来的困难,1974年和1975年汉森(Brinsh Hansen)和霍尔(Hoare)提出了另一种同步机制——管程(monitor)。其基本思路是采用资源集中管理的方法,将系统中的资源用某种数据结构抽象地表示出来。由于临界区是访问共享资源的代码段,因而建立一个管程来管理进程提出的访问请求。
|
|
|
采用这种方式对共享资源的管理就可以借助数据结构及在其上实施操作的若干过程来进行,对共享资源的申请和释放可以通过过程在数据结构上的操作来实现。
|
|
|
管程由一些共享数据、一组能为并发进程所执行的作用在共享数据上的操作的集合、初始代码以及存取权组成。管程提供了一种允许多进程安全、有效地共享抽象数据类型的机制,管程实现同步机制由“条件结构(condition construct)”所提供。为实现进程互斥同步,必须定义一些条件变量,例如var notempty、notfull:condition,这些条件变量只能被wait和signal操作所访问。notfull.wait操作意味着调用该操作的进程将被挂起,使另一个进程执行;而notfull.signal操作仅仅是启动一个被挂起的进程,如无挂起进程,则notfull.signal操作相当于空操作,不改变notfull状态,这不同于V操作。
|
|
|
|
|
|
|
|
|
|
|
|