操作系统——进程调度

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


在CPU分配资源的时候,我们需要考虑分配资源的规则,通过规则或者说算法选择一个进程给处理机执行就是 处理机调度,就像银行排队是先到者优先还是VIP客户优先。

调度层级

调度的层级分为:高级、中级、低级。

  • 高级调度是作业调度,通过特定算法把作业从外存调入内存。由于内存空间有限,系统无法给用户提交的所有作业分配内存,没有被分配到内存的作业的代码存放在外存。系统根据算法从外存中选择一个作业放入内存并创建PCB,让作业有权竞争CPU 的控制器,当作业调出后再销毁PCB。一个作业的调度只有两次,调入时一次,调出时一次。
  • 中级调度就是通过特定算法处于挂起状态的进程调入到内存里。引入虚拟存储技术后,当进程暂时不用运行时,系统会把进程的代码放到外存的挂起序列里,PCB依然放在内存,这时进程处于挂起状态,挂起又分为就绪挂起和阻塞挂起。当线程进入阻塞态后,就可以阻塞挂起,阻塞挂起后,进程可以被激活再次进入阻塞态,或事件出现进入就绪挂起。位于创建态、就绪态、运行态的进程都可以就绪挂起,但就绪挂起后,进程只能切换到就绪态。
  • 低级调度是通过特定算法把就绪队列的进程调到CPU里执行。

进程调度

狭义的进程调度只是选择就绪队列中的进程交给处理机执行,广义的进程调度还包括进程切换。进程切换是一个进程让出处理机后,另一个进程占用处理机的过程,先保存当前进程的各种数据,再恢复下一个进程的数据。过于频繁的进程切换会降低系统效率,占用进程在进程执行上花费的时间。
需要调度的情况:
进程主动放弃CPU控制权:正常终止;出现异常;主动请求阻塞,如等待I/O。
进程被动放弃CPU控制权:时间片截止;出现更紧急的事务;出现优先级更高的进程。
不能调度的情况:
复杂的中断处理。
进程在内核程序临界区。内核程序临界区一般就是内核的某种数据结构,访问时进程不能停留太长时间,否则会影响内核的其他操作。
原子操作,如执行原语程序时。
进程调度的方法:
非剥夺调度:只允许进程主动放弃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值