一、调度基本概念?
任务的数量很多,由于资源的数量有限,按照一定的规则来决定处理这些事情的先后顺序。
二、调度的分类
2.1 高级调度:
从后备队列中选择合适的作业将其调入内存中,并为其创建线程。外存——》内存中,进程由无——》创建态——》就绪态
2.2 中级调度:
从挂起队列中选择合适的进程将其数据调回内存。外存——》内存,挂起态——》就绪态
2.3 低级调度:
从就绪队列中按照一定的算法选择一个进程为其分配处理机。内存——》CPU,就绪态——》运行态。
三、when:进程调度
3.1 进程的主动调度:
进程的正常停止、运行的过程中发生异常终止、进程主动请求阻塞;
3.2 进程的被动掉度:
分给进程的时间片走完、有更紧急的事情要处理、有更高优先级的进程进入就绪队列;
临界资源:
一个时间段只允许一个进程使用资源。各进程需要互斥的访问临界资源。
四、进程调度的方式
4.1 非抢占式:
只允许进程主动放弃处理机。在进程中有更紧急的任务到达,当前进程依然使用处理机,直到该进程进行终止或主动要求进入阻塞状态。无法及时处理紧急任务。
4.2 抢占式:
当一个进程正在处理机上执行时,如果有一个更重要的任务过来时,会立即终止当前进程。可以让各个进程按照时间片轮流执行的功能。适用于分时操作系统和实时操作系统。
进程切换
是指进程让出处理机,另一个进程占用处理机的过程。进程切换主要完成了对数据的保存和对于新进程的数据的恢复。
五、进程调度的算法
5.1 先来先服务:
思想:主要从公平的角度进行型考虑;
规则:按照作业、进程先到达的先后顺序进行服务;
是否时抢占式:非抢占式;
优缺点:公平算法实现简单 排在长作业后面的作业需要等待很长时间,带权周转时间大。
5.3 短作业优先
思想:追求最少平均等待时间、最少平均周转时间;
规则:最短的作业、进程优先得到服务;
是否可抢占:SJF和SPF是非强占式的算法,但也有抢占式的版本:最短剩余时间优先算法。
优缺点:最短的平均等待时间、平均周转时间。不公平,对于长作业不利、对于短作业有利。作业的运行时间是由用户提供的,并不一定真实。
是否导致饥饿:会
5.3 高相应比优先
思想:要考虑作业、进程的等待时间和要求服务时间
算法规则:响应时间比=等待时间+要求服务时间/要求服务时间
是否可抢占式:非抢占式,只有当前运行的作业、进程主动放弃处理机时才需要调度;
是否会饥饿:不会
六、进程互斥
do{
entry section; 进入区 :负责检查是否能进入临界区;
critical section; 临界区 :访问临界资源的代码
exit section; 退出区 :负责解除正在访问临界资源的标志
reminder section; 其他处理
}while(true)
6.1 进程互斥遵循的原则:
1、空闲等待:临界区空闲时,允许一个进程进入临界区;
2、忙则等待:当临界区已经有一个进程在执行,其他进程需要在临界区外进行等待
3、有限等待:当请求访问的进程,应该保证在有限时间内进入到临界区;
4、让权等待 :当进程不能进入到临界区时,应立即释放处理机,防止忙等待。
6.2 进程互斥的算法:
6.2.1 单标志法:
每个进程访问临界区的权限只能由另一个进程进行赋予;
**问题:**如果此时允许进入临界区的进程是P0,而P0一直不访问临界区,虽然此时临界区空闲,但是并不允许P1进行访问。
6.2.2 双标志前检查法
6.2.3 双标志后检查法
6.2.4 PeterSon算法
七、信号量机制
7.1 信号量的定义:
信号量就是一个变量,可以用一个信号量来表示某种资源的数量。比如某个系统有一个打印机,就可以设置为初值为1的信号量;