操作系统原理---管程

管程机制

  将共享变量及操作共享变量的所有方法封装在一个模块中。

管程组成

  1. 一组局部变量(共享变量)
  2. 操作局部变量的一组方法
  3. 局部变量的初始语句

管程的特点

  1. 任何进程只能通过管程提供的入口才能访问共享数据
  2. 任何时刻只允许一个进程访问管程的某个方法

管程如何实现同步控制

  1. 对共享变量的互斥操作:
      管程的特点决定了对共享资源的互斥操作,管程同一时刻只允许一个进程对共享资源进行操作
  2. 操作的同步控制:
      管程通过条件变量实现同步控制,管程同一时刻只允许一个进程获得操作权,没有获得操作权的进程将阻塞在条件变量x的等待队列中,当条件变量发生变化时再由别的进程唤醒在x变量上等待的进程。

条件变量

&emsp: 管程中有一个条件变量,条件变量与一个等待队列,用于存储等待在该条件的进程,对条件变量的操作有wait和signal。当某个进程发现自己无法运行时调用wait方法,将自己放入等待队列并阻塞,将另一个等待在管程之外的进程调入管程。别的线程发现条件发生改变时调用signal方法唤醒等的进程。
  当管程中出现多个进程时怎么办(P唤醒Q线程)?

  1. P等待Q继续,直到Q 退出
  2. Q等待P继续,直到P退出
  3. 唤醒管程中最后一个可以执行的进程

管程的优点

  1. 保证了共享资源访问的互斥性,同时便于等待或唤醒进程
  2. 将系统按照资源管理的观点拆分成多个模块,每个模块维护该资源,并控制对资源的访问。将对资源的操作集中在一起。
  3. 对资源的集中管理方便系统的维护。同时增强了模块的易读性。

缺点

  1. 很多编程语言没有实现管程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值