第五讲 进程调度

基本概念

多道程序设计的目标是,无论何时都有进程运行,从而最大化CPU利用率。它会有多个进程或线程同时竞争CPU。 分时系统的目的是在进程之间快速切换CPU,以便用户在程序运行时能与其交互。为了满足这些目标,进程调度器选择一个可用进程到CPU上执行。单处理器系统不会具有多个正在运行的进程。如果有多个进程,那么其余的需要等待CPU空闲并能重新调度。

CPU-I/O执行周期

CPU的调度成功取决于观察到的进程属性: 进程执行包括周期进行CPU执行I/O等待。进程在这两个状态之间不断交替。进程执行从CPU执行开始,之后I/O执行;接着另一个CPU执行,接着另一个I/O执行;等等。最终,最后的CPU执行通过系统请求结束,终止执行。

CPU密集型进程-I/O密集型进程

图a中的进程花费了绝大多数时间在计算上,称为CPU密集型

图b中的进程则在等待I/0上花费了绝大多数时间,称为I/O密集型

典型的CPU密集型进程具有较长时间的CPU 集中使用和较小频度的I/O等待。

I/O密集型进程具有较短时间的CPU集中使用和频繁的1/0等待。它是I/O类的,因为这种进程在I/O请求之间较少进行计算,并不是因为它们有特别长的I/O请求。在I/O开始后无论处理数据是多还是少,它们都花费同样的时间提出硬件请求读取磁盘块。

随着CPU变得越来越快,更多的进程倾向为I/O密集型。因为CPU的改进比磁盘的改进快得多,结果是,未来对I/O密集型进程的调度处理似乎更为重要。这里的基本思想是,如果需要运行I/O密集型进程,那么就应该让它尽快得到机会,以便发出磁盘请求并保持磁盘始终忙碌。

何时调度

出现以下情形需要调度。

  • 1、在创建一个新进程之后,需要决定是运行父进程还是运行子进程。由于这两种进程都处于就绪状态,所以这是一种正常的调度決策,可以任意決定,也就是说,调度程序可以合法选择先运行父进程还是先运行子进程。

  • 2、在一个进程退出时必须做出调度决策。一个进程不再运行(因为它不再存在),所以必须从就绪进程集中选择另外某个进程。如果没有就绪的进程,通常会运行一个系统提供的空闲进程。

  • 3、当一个进程阻塞在I/O和信号量上或由于其他原因阻塞时,必须选择另一个进程运行。有时,阻塞的原因会成为选择的因素。例如,如果A是一个重要的进程,并正在等待B退出临界区,让B随后运行将会使得B退出临界区,从而可以让A运行。

  • 4、在一个I/O中断发生时,必须做出调度决策。如果中断来自I/O设备,而该设备现在已经完成了上作,某些被阻塞的等待该I/O的进程就成为可运行的就绪进程了。

非抢占式调度算法挑选一个进程,然后让该进程运行直至被阻塞(阻塞在I/O上或等待另一个进程),或者直到该进程自动释放CPU。即使该进程运行了若干个小时,它也不会被强迫挂起。这样做的结果是,在时钟中断发生时不会进行调度。在处理完时钟中断后,如果没有更高优先级的进程等待到时,则被中断的进程会继续执行。

抢占式调度算法挑选一个进程,并且让该进程运行某个固定时段的最大值。如果在该时段结束时,该进程仍在运行,它就被挂起,而调度程序挑选另一个进程运行(如果存在一个就绪进程)。进行抢占式调度处理,需要在时间间隔的末端发生时钟中断,以便把CPU控制返回给调度程序。如果没有可用的时钟,那么非抢占式调度就是惟一的选择了。

调度准则

参考资料

第8章-调度

相关推荐
纵有疾風起13 小时前
磁盘物理结构与延迟时间优化:从磁道扇区到交替编号
操作系统·408·寻道时间·磁道·磁盘结构·扇区·柱面
纵有疾風起1 天前
磁盘与固态硬盘:SSD原理、磨损均衡与寿命计算全解析
操作系统·ssd·408·固态硬盘·闪存·磨损均衡
纵有疾風起2 天前
页面置换算法与实战机制:从 LRU 到内存映射文件
操作系统·408·lru·mmap·clock·页面置换·belady异常
qo_tn2 天前
Windows route 命令详解 --- 多网络环境下,指定特定地址
操作系统
qo_tn2 天前
Windows PowerShell Test-NetConnection 使用详解
操作系统
CoovallyAIHub3 天前
Coco 在病房:一个企业级 AI Agent,如何帮住院医师省下每天三小时的文书时间
操作系统·agent·产品
纵有疾風起3 天前
文件共享与保护:从硬链接到访问控制矩阵
操作系统·文件管理·408·文件共享·硬链接·软链接
噜~噜~噜~4 天前
操作系统笔记-1.1.3 操作系统的特征
笔记·操作系统
我命由我123454 天前
Java 开发 - List subList 方法
java·windows·操作系统·list·intellij-idea·idea·intellij idea