操作系统概念(第七版)—— 第五章:CPU调度

本文深入探讨了操作系统中的CPU调度,包括CPU-I/O区间周期、调度准则、各种调度算法如先到先服务(FCFS)、最短作业优先(SJF)、优先级调度、轮转法(RR)以及多级反馈队列调度。还讨论了多处理器调度、处理器亲和性和负载平衡等概念,阐述了如何在多线程环境中进行线程调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

CPU-I/O 区间周期

CPU程序调度

抢占调度

分派程序

调度准则

调度算法

先到先服务调度算法

最短作业优先调度(shortest-job-first scheduling,SJF)

优先级调度算法(priority scheduling algorithm)

轮转法调度(round-robin,RR)

多级反馈队列调度(Multilevel Feedback-Queue Scheduling)

多处理器调度(Multiple-Processor Scheduling)

多处理器调度方法

处理器亲和性

负载平衡(load balancing)

对称多线程

线程调度

竞争范围


具有多道程序设计的操作系统必须有CPU调用这一机制。通过在进程之间切换 CPU ,操作系统可以提高计算机的执行效率。 如果某个操作系统支持线程,那么该系统的系统调度操作的是内核线程,而不是进程。
 

CPU调度:单处理器系统每次只允许一个进程运行,多道程序是为了是的CPU在任何时候都有某些进程运行,以使得CPU使用率最大化,采用的方式是当一个进程必须等待时,操作系统会从该进程拿走CPU使用权,将CPU使用权交给其他进程; 

 


CPU-I/O 区间周期


CPU调度的成功与否取决于进程是否观察到的以下属性:

  • 进程执行包括一个CPU执行周期和I/O等待。
  •  进程在这两种状态之间切换。

一个进程的执行是从CPU区间(CPU burst)开始,然后是I/O区间(I/O burst)。接着是另外一个CPU区间,在然后是另外一个I/O区间,如此进行下去,最终,最后的CPU区间通过系统请求中止执行。

经过大量的CPU区间的长度测试。发现具有大量短CPU区间和少量长CPU区间。I/O约束程序通常具有很多短CPU区间。CPU约束程序可能有少量的长CPU区间。这种分布有助于选择合适的CPU调度算法。


CPU程序调度


每当CPU空闲时,操作系统就必须从就绪队列中(75P)选择一个进程来执行。进程选择是由短期调度程序(short-term scheduler)CPU调度程序(77P)从内存中准备执行的进程中选择一个能够执行的进程,并为之分配CPU。

 

就绪队列不必是先进先出(FIFO)队列,也可为优先队列、树或简单的无序链表。不过队列中所有的进程都要排队以等待在CPU上运行。记录队列中的进程通常为进程控制块(PCB)。


抢占调度


CPU调度的决策在下列情况下会发生:

  • 当一个进程从运行切换到等待状态(如:I/O请求,或者调用wait等待一个子进程的终止)
  • 当一个进程从运行状态切换到就绪状态(如:出现中断)
  • 当一个进程从等待状态切换到就绪状态(如:I/O完成)
  • 当一个进程终止时

对于第1和4两种情况,没有选择而只有调度。一个新进程(如果就绪队列中已有一个进程存在)必须被选择执行。对于第2和第3两种情况,可以进行选择。

当调度只能发生在第1和4两种情况下时,称调度是非抢占的(nonpreemptive)或协作的(cooperative);否则,称调度方案为抢占的(preemptive)。如果采用非抢占调度,一旦CPU分配给一个进程,那么该进程会一直使用CPU直到进程终止或切换到等待状态。

不幸的是,抢占调度对访问共享数据是有代价(如加锁)的,需要新的机制来协调对共享数据的访问。

 


分派程序


分派程序(dispatch)是一个模块,用来将CPU的控制交给由短期调度程序选择的进程。

其功能包括:

  • 切换上下文
  • 切换到用户模式
  • 跳转到用户程序的合适位置,以重新启动程序。

分派程序停止一个进程而启动另一个所花的时间成为分派延迟(dispatch latency)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值