死等状态、忙等状态、有限等待、让权等待、空闲让进和几种进程互斥存在的问题比较

黄鹤断矶头,故人今在否?

文章目录

  • 前言
  • 死等状态:
  • 忙等状态:
  • 有限等待:
  • 让权等待:
  • 空闲让进
  • 几种进程互斥的问题


前言

本文参考博客1
参考博客2

提示:以下是本篇文章正文内容,下面案例可供参考

死等状态:

进程在有限时间内根本不能进入临界区,而一直在尝试进入,陷入一种无结果的等待状态。
(没有进入临界区的正在等待的某进程根本无法获得临界资源而进入进程,这种等待是无结果的,是死等状态~)-> 这个时候应该放弃这个无结果的事情,保证自己等待的时间是有限的

忙等状态:

当一个进程正处在某临界区内,任何试图进入其临界区的进程都必须进入代码连续循环,陷入忙等状态。连续测试一个变量直到某个值出现为止,称为忙等。
(没有进入临界区的正在等待的某进程不断的在测试循环代码段中的变量的值,占着处理机而不释放,这是一种忙等状态~,当时间片用完自然也会释放处理机)-> 这个时候应该释放处理机让给其他进程

有限等待:

对要求访问临界资源的进程,应保证有限时间内能进入自己的临界区,以免陷入“死等”状态~(受惠的是进程自己)

让权等待:

当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态~(受惠的是其他进程)

空闲让进

临界区空闲时,应允许一个进程访问

几种进程互斥的问题

以下这些建议结合这个帅哥写的博文配合食用从2.3.2开始
1)若是一个进程忙等状态自然也就会违反让权等待
2)忙等一直占用CPU,一直申请进入临界区,进程处于运行态
3)让权等待申请一次后被拒绝,则主动让出CPU,进程处于阻塞态
4)单标志法不遵循空闲让进,不遵循让权等待
5)双标志先检查法 不遵循忙则等待,也就是所谓的会同时进入临界区,不遵守让权等待
6)双标志后检查法, ,不遵循让权等待,并且可能会陷入死锁状态,自然违反有限等待原则,
7)Pterson算法,未遵守让权等待
8)关中断方式;单处理机中不允许切换到另外一个进程,自然不会出现另外一个进程上处理机的情况,至于网上所说大都是不遵守让权等待俺也没有看出来个所以然,但是个人认为应该不需要看是否遵循这几个东西,若是多处理机中则可能会违反忙则等待,
9)TestAndSet指令:不满足让权等待自然也就会陷入忙等状态了
10)Swap指令:不满足让权等待自然也就会陷入忙等状态了
11)互斥锁:不满足让权等待自然也就会陷入忙等状态了,需要重复调用acquire(),多个进程共享同一个CPU时,就浪费了CPU周期,一个线程可以在一个一个处理器上等待,不影响其他线程工作
可以看出除了关中断方式之外都是无法实现让权等待的,但是关中断方式仅适合单处理器的内核程序,下面主角隆重出厂
12)整型信号量,使用一个整数型变量作为信号量,来表示系统中某些资源的数量,申请资源的时候若是资源不够也会一直循环等待,所以依然是不满足让权等待所以会忙等呦
13)记录型信号量:用一个记录型数据结构表示的信号量,(个人理解:之前一直要造成忙等的原因是一直没有一个东西来记录申请资源的进程有哪些,为了防止本程被其他程忘了,自然就需要一直问,好没好呀,若是有一个记事本给本程的名记下来,等到我的时候喊我就可以了,自然就不需要问了,这里的记事本自然就是这里的一个阻塞队列) 所以也就结解决了让权等待

你可能感兴趣的:(笔记,操作系统,考研,408)