处理机调度-进程调度
为什么要进行进程调度?
用户进程数一般都多于处理机数,这将导致用户进程互相争夺处理机,那么多进程竞争处理机,处理机到底给谁呢?就涉及了进程调度的问题。因此要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程。
进程调度的功能
记录系统中所有进程的执行情况
1.进程管理模块将系统中各进程的执行情况和状态特征记录在各进程的PCB表中
2.进程管理模式根据各进程的状态特征和资源需求,将各进程的PCB表排成相应的队列并进行动态队列转接
3.进程调度模块通过PCB变化来掌握系统中所有进程的执行情况和状态特征,并在适当的时机从就绪队列中选择出一个进程占据处理机
选择占有处理机的进程
主要功能
进程调度的主要功能是按照一定的策略选择一个处于就绪状态的进程,使其获得处理机执行
选择策略决定算法性能
选择策略决定了调度算法的性能
进行进程上下文切换
什么是进程上下文
进程的上下文(context)包括进程的状态、有关变量和数据结构的值、硬件寄存器的值和PCB以及有关程序等
何时发生进程上下文的切换
当正在执行的进程由于某种原因要让出处理机时,系统要做进程上下文切换,以使另一个进程得以执行
进程执行的位置
进程的执行是在进程的上下文中执行
进程上下文切换的过程
1.系统首先检查是否允许做上下文切换。
2.然后,系统保留有关被切换进程的足够信息,以便以后切换回该进程时,顺利恢复该进程的执行。
3.在系统保留了CPU现场之后,调度程序选择一个新的处于就绪状态的进程,并装配该进程的上下文,使CPU的控制权转换到被选中进程
进程调度的时机
进程调度时机与引起进程调度的原因以及进程调度方式有关
CPU非剥夺方式或不可剥夺方式
即使就绪队列存在优先级高于当前执行进程的进程,当前进程仍继续占有处理机。
发生进程调度的原因:
1.正在执行的进程执行完毕。
2.执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等待状态。
3.执行中进程调用了P原语操作,从而因资源不足而被阻塞;或调用了V原语操作激活了等待资源的进程队列。
4.执行中进程提出I/O请求后被阻塞。
5.分时系统中时间片已经用完。
6.执行完系统调用。系统程序返回用户进程时,可认为系统进程执行完毕,从而可调度选择一新的用户进程执行。
CPU可剥夺方式
就绪队列中一旦有优先级高于当前执行进程优先级的进程,立即发生进程调度,转让处理机。
CPU可剥夺方式下进程调度的原因:
就绪队列中某进程的优先级高于当前执行进程的优先级,从而引发进程调度。
进程调度性能评价
定性
首先是调度的可靠性。另外,简洁性也是衡量进程调度的一个重要指标
定量
进程调度的定量评价包括CPU利用率、进程在就绪队列中的等待时间与执行时间之比等,但是这种方法很难,一般都是测试模拟得到的。