前言
此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。
提示:以下是本篇文章正文内容
知识总览
一、调度的基本概念
- 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。
- 在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现过程的并发执行。
二、调度的三个层次
高级调度
中级调度
低级调度
三、进程的挂起态与七状态模型
解释:
- 引入就绪挂起和阻塞挂起之后,一个处于就绪态的进程,如果说此时这个系统的负载比较高,但内存空间已经不够用了,那么他有可能会把一个处于就绪态的进程把它暂时调到外存当中,然后这个进程就进入了一个就绪挂起的状态,一直到内存空间空闲,或者说这个进程又需要继续执行,那么这个进程又会被激活,把他相应的数据又挪回内存当中,这样的话一个就绪挂起的进程又回到了就绪态。除此之外,一个处于阻塞态的进程也可以被挂起,也可以再重新的被调入内存,然后进行激活,重新回到阻塞态。有的操作系统有可能会使一个处于阻塞挂起的进程,当他等待的阻塞事件发生的时候,这个进程就会直接进入到一个就绪挂起的状态,然后之后,当他在被重新被调回内存的时候,直接回到就绪态,而不是回到阻塞态。而有的时候一个进程当他处于运行结束之后,可能这个进程下处理机的时候,就会被直接放到外存当中,让他进入就绪挂起的状态,而有的时候一个处于创建态的进程,当他创建结束之后,创建完PCB之后,有可能出现内存空间不够的情况,那这种情况下有可能处于创建态进程之后会先进入到一个就绪挂起的一个状态,这就是所谓的七状态模型。
- 那大家需要注意的是挂起和阻塞的区别,这两种状态都是暂时不能获得CPU服务的两种状态,但区别在于处于挂起态的进程,它是放在那进程映像,放在外存里了,而处于阻塞他的进程,他的进程映像其实还在内存当中。而有的操作系统有可能会把这些属于处于就绪挂起和阻塞挂起的这些进程分为两个不同的挂起队列。当然也有的操作系统还会根据这个阻塞的原因不同,再把阻塞挂起的进程再细分为多个队列。
四、三层调度的联系、对比
解释:
高级调度和中级调度这两层调度是发生在外存和内存之间的角度,区别在于高级调度,它是面向作业的调度,一个作业在刚开始会被调入一次被调出一次,并且作业调入的时候,会为这个作业建立相应的PCB,也就是建立它相应的进程。中级调度,内存调度它是面向进程的一种调度,它是把暂时不会运行的进程相关的进程映像相关的一些数据,把它调到外存里,然后之后通过中级调度,再把这些进程的数据从外存调回内存,而低级调度,它是内存和CPU之间的一个调度。