第五讲 进程调度

基本概念

多道程序设计的目标是,无论何时都有进程运行,从而最大化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章-调度

相关推荐
帅锅锅0071 天前
Android 源码学习之init进程
android·架构·操作系统
帅锅锅0071 天前
process 类权限详解
android·操作系统
元亓亓亓2 天前
考研408--操作系统--day4--进程同步&互斥&信息量机制
java·数据库·考研·操作系统·408
沐浴露z2 天前
【操作系统】详解 分页与分段系统存储管理
操作系统
子牙老师3 天前
硬盘第一关:MBR VS GPT
linux·操作系统·文件系统
序属秋秋秋3 天前
《Linux系统编程之系统导论》【冯诺依曼体系结构 + 操作系统基本概述】
linux·运维·服务器·c语言·ubuntu·操作系统·冯诺依曼体系结构
敲代码的瓦龙6 天前
操作系统?进程!!!
linux·c++·操作系统
ikkkkkkkl6 天前
内存:存储器管理
操作系统·内存·存储器
沐浴露z8 天前
详解 零拷贝(Zero Copy):mmap、sendfile、DMA gather、splice
java·网络·操作系统
崎岖Qiu9 天前
【OS笔记25】:页的共享和保护、页式虚拟存储管理
笔记·操作系统·os