处理机调度和死锁

  • 处理机调度的三个层次
    作业调度,又称高级调度或长程调度: 把外存上处于后备队列的作业调入内存,调度的对象是作业。
    进程调度,又称低级调度或短程调度:从就绪队列选取进程,使它获得处理机资源,调度对象是进程。
    中级调度,又称中程调度。
  • 进程调度方式
  1. 非抢占方式(Nonpreemptive Mode)
      一旦把处理机分配给某进程后,不管它要运行多长时间,都一直让它运行下去,直至该进程完成,自愿释放处理机,或发生某事件而被阻塞时,才再把处理机分配给其他进程。
  2. 抢占方式(Preemptive Mode)
      允许调度程序根据某种原则去暂停某个正在执行的进程。
    抢占调度的一般原则:
    (1) 优先权原则
    (2) 短作业(进程)优先原则
    (3) 时间片原则:各进程按时间片轮流运行,当一个时间片用完后,便停止该进程的执行而重新进行调度。这种原则适用于分时系统、大多数的实时系统,以及要求较高的批处理系统。
  • 中级调度(Intermediate Level Scheduling)又称中程调度(Medium-Term Scheduling)
    使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。
  • 调度算法
    1 先来先服务和短作业(进程)优先调度算法– FCFS
    FCFS算法有利于长作业(进程),而不利于短作业(进程)。
    FCFS算法有利于长作业(进程),而不利于短作业(进程)。
    2 短作业(进程)优先调度算法– SJF
    ①周转时间
    所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称为作业周转时间)。
    ②带权周转时间
    在这里插入图片描述
    设Ti是第i个作业的周转时间,Tsi是系统为它服务的时间
    3 高优先权优先调度算法– FPF
    4 时间片轮转法
  • 死锁
    死锁的发生必须具备下列四个必要条件:
    (1) 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。
    (2) 请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
    (3) 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
    (4) 环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,…,Pn}中的P0正在等待一个P1占用的资源; P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
  • 处理死锁的方法
    (1) 预防死锁:一种较简单和直观的事先预防的方法,通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来预防发生死锁。
    (2) 避免死锁:同样属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
    (3) 检测死锁:并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全区,而是允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源; 然后,采取适当措施,从系统中将已发生的死锁清除掉。
    (4) 解除死锁:与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死锁状态中解脱出来。常用的实施方法是撤消或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。死锁的检测和解除措施有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。

猜你喜欢

转载自blog.csdn.net/weixin_37711738/article/details/89508824