操作系统复习:进程间通信

Q1:多进程系统的特性

运行结果不可再现、运行结果不确定、运行环境开放性

Q2: 并发问题的根本缘由

中断、并行访问统一变量

Q3:并发带来的问题

死锁、互斥、同步(进程顺序相互配合)、饥饿

Q4:什么是临界资源/临界区以及基本特征

一个时刻只能被一个进程访问的资源

用于访问临界资源的代码(进程互斥访问)

原子性、可嵌套、可中断

Q5: 互斥的要求

空闲让进、有限停留、公平进入、互斥进入

Q6: 互斥的实现方法

硬件:禁用中断(只能设置一个临界区)、特殊指令test&set、exchange(可能死锁)

软件:peterson方法(Wanted_In[0/1] =1,表示0/1号进程处在临界区,或者处于等待进入(或即将)临界区的状态; Observer:标示最后一个试图(或成功)进入临界区的进程编号。while (observer == process && wanted_in[other] {}) )

程序语言:管程

操作系统:信号量、消息

Q7:信号灯具体实现

互斥

资源申请操作(semWait操作,P)(进入临界区前调用该操作): 信号灯的值减1; 如果其值为负值,把进程阻塞在该信号上。

资源释放操作(semSignal操作,V )(离开临界区前调用该操作): 信号灯的值增1; 如果其值为负值或0,表明有进程阻塞在该信号上。从阻塞的进程中,按调度原则挑选一个唤醒。

 全同步

Q8: 生产者、消费者

 Q9:读者、写者

Q10:进程间数据交换的方式

  1.  消息通信
  2. 共享存储区
  3. 管道通信
  4. Socket通信

Q11:死锁产生的原因

  • 必要条件:
    • 互斥使用:(资源)每次只能允许一个进程占有和使用,其它申请该资源的进程被阻塞。
    • 保持并等待 :当进程等待分配给它新的资源时,保持占有已分配的资源。
    • 不可剥夺 :不能强迫回收进程占有的未使用完的资源。
  • 充分条件:  循环等待     存在一个闭合的进程─资源链

Q12:死锁预防(破坏四大条件)

静态分配策路:系统一次申请它所要用到的资源,如果能满足就分配,如果不能满足,一个也不分配。(保持等待)

主动释放:无法进一步获取新资源时,主动释放原先占有的资源。 被动释放:一个进程需要申请当前正被其它进程占用的资源,操作系统就要求后者释放它所占用的这类资源。(不可剥夺)

资源排序:如果一个进程已经分配了类型R的资源,那么以后它只能申请在资源顺序表中排在R后面的资源类型。(循环等待)

Q13: 死锁避免(允许更多的并发、允许三个必要条件)

银行家算法(资源分配)

能让一个进程运行下去

Q14:死锁的检测

进程等待资源矩阵Q:指明每个进程对每种资源的需求

资源占用矩阵Allocation:表明每个进程已经占用的每种资源的数量。

剩余资源向量Available:表明所剩余的每种资源的数量

  1. 临时空闲资源向量W:初始值等于Available
  2. 标记Allocation矩阵中行全为零的进程
  3. 初始化W,W=available
  4. 查找下标i,使进程i当前未标记且Q的第i行小于等于W。 如果找不到这样的行,终止算法
  5. 如果找到这样的行,标记进程i,并把Allocation中相应的行加到W,返回步骤3。

Q15: 哲学家进餐问题

 如果5个哲学家同时开始进餐,则发生死锁!

解决方法(1):  如果无法拿到右叉,则释放左叉,随机等待一段时间后再进餐 在大多数情况下可行,不能保证万无一失 解决方法

(2): 设计一个信号量,使得某一个时刻只能有4个哲学家进餐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值