进程管理(四)

管程概念及实现要旨

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
管程引入了条件变量condition。
wait操作,把当前进程挂到条件变量对应的阻塞队列上去,signal把条件队列上的对手进程唤醒。
注意:条件变量的signal操作和信号量的signal是有区别的。条件变量的signal可能啥都不干,如果有阻塞的进程唤醒,没有啥事都不做。
wait如果资源忙,挂到条件队列上。
把资源使用的操作集中在管程中,使进程的设计更加有条理。
在这里插入图片描述
任何时候只有一个进程进入管程。
在这里插入图片描述
管程任何时候只有一个进程处于活跃状态。
在这里插入图片描述
管程:1 数据:对资源抽象出来的数据,一系列的访问资源的过程中被阻塞而引入的阻塞原因的代表,条件变量 2入口过程。

Hoare管程实现方案

在这里插入图片描述
在这里插入图片描述
在编译或者实现的时候,对互斥信号量的申请,对紧急等待队列或入口等待队列加上去。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
唤醒者要等待被唤醒者唤醒后自己再继续。
把自己挂到紧急等待队列上。
让唤醒者牺牲,优先处理被唤醒者的反感。

基于Hoare管程的哲学家进餐问题解决方案

管程:主要的设计目的就是把关于资源特别是关于临界资源的访问操作抽象到有关管程的入口过程里。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
procedure过程
在这里插入图片描述
阻塞到条件变量上去。
在这里插入图片描述
在这里插入图片描述

Hanson管程实现方案

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基本的前提是利用了系统提供的关于条件变量的操作的原语,W和R。

基于Hanson管程的生产者—消费者问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进程通信概念及分类

在这里插入图片描述
在这里插入图片描述

消息传递通信实现方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消息缓冲队列通信机制

在这里插入图片描述
消息缓冲队列是一个消息缓冲区的链表。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先把消息发送到对方的消息缓冲队列中,然后receive原语接收。
在这里插入图片描述
在这里插入图片描述

线程的概念与特征

在这里插入图片描述
在这里插入图片描述

线程的控制同步与通信

在这里插入图片描述
线程从属于进程
在这里插入图片描述
在这里插入图片描述

线程实现方式

在这里插入图片描述
注意:内核级的线程和用户级的线程调度与分配的时间不一样,比如内核级A有1个线程,B有100个线程,则A有1个时间片,B有100个时间片,而用户级的线程单位是进程,A有1个时间片,B中的每个线程拥有的是1/100的时间片。
在这里插入图片描述
在这里插入图片描述
构建了一个轻型进程的缓冲池。
如果需要和内核进程打交道,需要和内核级线程关联。如果不关联,就只在用户空间里。
solaris提出了一种混合型的,这种方案逐渐被淡忘。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值