在CPU分配资源的时候,我们需要考虑分配资源的规则,通过规则或者说算法选择一个进程给处理机执行就是 处理机调度,就像银行排队是先到者优先还是VIP客户优先。
调度层级
调度的层级分为:高级、中级、低级。
- 高级调度是作业调度,通过特定算法把作业从外存调入内存。由于内存空间有限,系统无法给用户提交的所有作业分配内存,没有被分配到内存的作业的代码存放在外存。系统根据算法从外存中选择一个作业放入内存并创建PCB,让作业有权竞争CPU 的控制器,当作业调出后再销毁PCB。一个作业的调度只有两次,调入时一次,调出时一次。
- 中级调度就是通过特定算法处于挂起状态的进程调入到内存里。引入虚拟存储技术后,当进程暂时不用运行时,系统会把进程的代码放到外存的挂起序列里,PCB依然放在内存,这时进程处于挂起状态,挂起又分为就绪挂起和阻塞挂起。当线程进入阻塞态后,就可以阻塞挂起,阻塞挂起后,进程可以被激活再次进入阻塞态,或事件出现进入就绪挂起。位于创建态、就绪态、运行态的进程都可以就绪挂起,但就绪挂起后,进程只能切换到就绪态。
- 低级调度是通过特定算法把就绪队列的进程调到CPU里执行。
进程调度
狭义的进程调度只是选择就绪队列中的进程交给处理机执行,广义的进程调度还包括进程切换。进程切换是一个进程让出处理机后,另一个进程占用处理机的过程,先保存当前进程的各种数据,再恢复下一个进程的数据。过于频繁的进程切换会降低系统效率,占用进程在进程执行上花费的时间。
需要调度的情况:
进程主动放弃CPU控制权:正常终止;出现异常;主动请求阻塞,如等待I/O。
进程被动放弃CPU控制权:时间片截止;出现更紧急的事务;出现优先级更高的进程。
不能调度的情况:
复杂的中断处理。
进程在内核程序临界区。内核程序临界区一般就是内核的某种数据结构,访问时进程不能停留太长时间,否则会影响内核的其他操作。
原子操作,如执行原语程序时。
进程调度的方法:
非剥夺调度:只允许进程主动放弃

本文详细介绍了操作系统中进程调度的三个层次:高级调度、中级调度和低级调度,以及各种调度算法,包括非剥夺调度与剥夺调度。还讨论了调度算法的评价指标,如CPU利用率、周转时间和响应时间,并举例说明了先来先服务(FCFS)、短作业优先(SJF)、高响应比优先(HRRN)和时间片轮转(RR)等常见调度算法的优缺点。
最低0.47元/天 解锁文章
3549

被折叠的 条评论
为什么被折叠?



