进程管理二(操作系统笔记三)

进程管理二(操作系统笔记三)


进程同步、进程互斥

进程同步,进程互斥

4个部分

进程互斥的软件实现方法

进程互斥的软件实现方法

互斥进程的硬件实现方法

进程互斥的硬件实现方法

信号量

信号量 机制是一种较强的机制,可用来解决互斥与同步问题,它只能被两个标准的原语 wait(S)signal(S) 访问,也可以记为 “ P操作 ” 和 “ V操作 ” 。

注意: 若考试中出现P(S)、V(S)的操作,除非特殊说明,否则默认S为记录型信号量

信号量机制

信号量(semaphore)实现互斥(mutex)、同步、前驱关系

信号量机制

P、V操作 必须成对出现,缺少了 P 操作就不能保证资源的互斥访问,缺少 V 操作会导致资源不被释放,等待进程用不被唤醒。

经典同步问题

生产者-消费者问题

一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区,只有缓冲区没满时,生产者才能把消息放入缓冲区,否则必须等待;只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者从中取出消息。

生产者-消费者问题

注意 :实现互斥的 P 操作要放在实现同步的 P 操作之后,避免死锁问题。当缓冲区大小为1时, 可能 不需要互斥信号量。

读者-写者问题

有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其它进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致错误。因此要求:1.允许多个读者可以同时对文件执行读操作;2.只允许一个写者往文件中写信息;3.任一写者在完成写操作之前不允许其他读者或写者工作;4.写者执行写操作之前,应让已有的读者和写者全部退出。

读者-写者问题

使用 计数器 来实现多个读进程的同时访问,通过一个 信号量 来实现计数器的互斥访问,解决计数器查询和更改不能 “一气呵成” 的问题,增加 信号量 解决写进程可能发生饥饿的问题。

哲学家进餐问题

哲学家进餐图

一张圆桌边上坐着5名哲学家,每两名哲学家之间的桌上摆一根筷子,两根筷子中间是一碗米饭,差不多如上图。哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根的拿起)。若筷子已在他人手上,则需要等待。饥饿的哲学家只有同时拿到了两根筷子才可以开始进餐,进餐完毕后放下筷子继续思考。

哲学家进餐

吸烟者问题

假设一个系统中有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但要卷起并抽掉一支烟,抽烟者需要三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者进程无限的提供三种材料,供应者每次将两种材料放到桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,此时供应者就会将另外两种材料放到桌子上,如此重复(让三个抽烟者轮流抽烟)

吸烟者问题

管程

管程

死锁的概念及处理策略

死锁的概念及处理策略

死锁预防

死锁预防

死锁避免

安全序列 就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找到安全序列,系统就是 安全状态 ,当然,安全序列可能有多个

如果系统处于 安全状态 ,就 一定不会 发生 死锁 。如果系统进入 不安全状态可能 会发生 死锁 (如果有资源提前归还,则可避免死锁)。因此可以在 资源分配之前预先判断这次分配是否会导致系统进入不安全状态 ,以此决定是否答应资源分配请求。这也是 “银行家算法” 的核心思想。

银行家算法

死锁的检测和解除

死锁的检测和解除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值