当前位置: 首页 > news >正文

计算机操作系统处理机调度(1)

系列文章目录

第三章:处理机调度与死锁


文章目录

  • 系列文章目录
  • 前言
  • 一、作业和资源:
  • 二、处理机调度的层次:
    • 1.高级调度
    • 2.初级调度
    • 3.中级调度 
  • 三、作业调度算法举例:
  • 总结


前言

在多道程序的环境下,内存中存在着多个进程,其数目往往多于处理机数目。(我们就以单核的CPU为例子,所以运行中的进程最多只能有一个,最少为0个这就要求那个系统能够按照某种算法,动态地将处理机分配给处于就绪状态的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。对于大型系统运行时的性能,如系统吞吐量,资源利用率,作业周转时间或响应的及时性等,在很大程度上都取决于处理机调度性能的好坏。因而,处理机调度便成为OS中至关重要的部分。所以下面我们将讲讲处理机调度是如何进行调度的,我将用通俗易懂的话带领大家走进CPU的世界。


    在多道程序系统中,调度的实质是一种资源的分配,处理机调度是对处理机资源进行分配。处理机调度算法是根据处理及分配策略所规定的处理机分配算法。在多道批处理系统中,一个作业从提交到获得处理机执行,直至作业运行完毕,可能需要经历多级处理机调度,下面我们先来了解处理机调度的层次。

在此之前我想给大家补充点知识点:

一、作业和资源:

 作业 :是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。

通俗易懂点来讲就是:

是用户在一次计算过程中,要求计算机系统所做工作的集合,包括程序、数据以及作业说明书等。例如,用户提交一个编译程序的任务,从源程序输入到编译出目标程序,这整个过程就是一个作业。

资源 :是操作系统管理的各种硬件和软件要素,如 CPU、内存、外存、设备(打印机、磁盘等)、文件系统、网络连接等,是作业运行的物质基础。

管理方式

  • 作业:操作系统通过作业调度来管理作业,根据一定的调度算法,将作业从后备状态调入内存执行,在作业运行结束后进行善后处理。
  • 资源:对于不同类型的资源,操作系统有不同的管理策略。如对于 CPU,采用进程调度算法分配时间片;对于内存,通过内存分配算法为进程分配空间;对于设备,采用设备分配算法来决定哪个进程可以使用设备。
  • 作用与生命周期

  • 作业:是用户为完成特定任务而提交给系统的工作单元,其目的是让计算机完成用户指定的任务,作业从提交到完成是一个完整的生命周期。
  • 资源:是为作业的运行提供支持和保障的,资源可以被多个作业共享和复用,其生命周期通常与操作系统的运行周期相关,只要操作系统在运行,资源就处于可被分配和使用的状态。

二、处理机调度的层次:

1.高级调度:

    高级调度又称长程调度或作业调度,它的调度对象是作业(程序+数据+作业说明书)。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程,分配必要的资源,并将它们放入就绪队列。高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。

2.低级调度:

低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程)。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序的将处理机分配给被选中的进程。进程调度是最基本的一种调度,在多道批处理,分时和实时三种类型的OS中,都必须配置这级调度。

 3. 中级调度:

   中级调度又称为内存调度。引入中级调度的主要目的是,提高内存利用率和系统吞吐量。为此,应把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态)。当他们已具备运行条件且内存又稍有空闲的时候,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改状态为就绪状态,挂在就绪队列上等待。中级调度实际上就是存储器管理中的对换功能,这个我们以后再说。

三、作业调度算法举例:

     今天先给大家开个头,给大家讲讲我认为最应该注意细节的一个调度算法,因为我当时也是想了很长时间才明白

      高相应比优先调度算法:

这种算法比较合理,既考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。

    这里面其实有的点我认为是很重要的

高相应比优先算法是如何实现的呢?如果我们能为每个作业引入一个动态的优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使得长作业的优先级在等待期间不断增加,等到足够的时间后,必然有机会获得处理机,该优先级的变化规律可描述为:

                            优先级 = (等待时间+要求服务时间)/要求服务时间

由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比Rp,据此,优先又可表示为:

                Rp =  (等待时间+要求服务时间)/要求服务时间 = 响应时间/要求服务时间 

       这里还有一点可以符合的是 先来的等待时间长,谁先运行(FCFS);

     我们举个简单的例子:

作业提交时间运行时间开始时间完成时间
A0303
B2639
C44913

     在调度过程中,​完成时间 ≠ 提交时间 + 运行时间,因为作业需要等待调度。完成时间实际上是开始时间 + 运行时间,而开始时间可能远晚于提交时间(由于等待)。

      

完成时间的真正含义

  • 公式

    完成时间=开始执行时间+运行时间
    • 开始执行时间:作业真正获得CPU开始运行的时间(可能因等待而延迟)。
    • 运行时间:作业需要的CPU时间(固定不变)。
  • 与提交时间的关系

    • 如果作业无需等待​(立即执行),则:完成时间=提交时间+运行时间
    • 如果作业需要等待,则:完成时间=提交时间+等待时间+运行时间

       

  • 作业 A

    • 提交后立即执行(无等待),完成时间 = 0 + 3 = 3。
    • 提交时间 + 运行时间 = 0 + 3 = 3,等于完成时间(无需等待的特殊情况)。
  • 作业 B

    • 提交时间 2,但直到时间 3 才开始执行(等待了 1 单位时间)。
    • 完成时间 = 开始时间 3 + 运行时间 6 = 9。
    • 提交时间 + 运行时间 = 2 + 6 = 8,但实际完成时间是 9(因等待了 1 单位时间)。
  • 作业 C

    • 提交时间 4,直到时间 9 才开始执行(等待了 5 单位时间)。
    • 完成时间 = 开始时间 9 + 运行时间 4 = 13。
    • 提交时间 + 运行时间 = 4 + 4 = 8,但实际完成时间是 13(等待了 5 单位时间)。

       

响应比的分子与周转时间的关系

  • 响应比的分子

    响应比=1+运行时间当前等待时间​
    • 当前等待时间:调度时刻的等待时间(从提交到调度时刻的时间)。
    • 注意:这是作业在调度决策时的等待时间,而非总等待时间。
  • 周转时间的分子

    周转时间=完成时间−提交时间=运行时间+总等待时间
    • 总等待时间:从提交到开始执行的时间(即最终确定的等待时间)。

  

例子中的具体数值
  • 作业 B 的响应比​(时间 3 时调度):

    • 当前等待时间 = 3(调度时间) - 2(提交时间) = 1。
    • 响应比 = 1 + 1/6 ≈ 1.17。
  • 作业 B 的周转时间

    • 完成时间 9 - 提交时间 2 = 7。
    • 总等待时间 = 7(周转时间) - 6(运行时间) = 1。
    • 与响应比的分子一致:这里的总等待时间(1)等于调度时的当前等待时间(1)。
  • 作业 C 的响应比​(时间 9 时调度):

    • 当前等待时间 = 9(调度时间) - 4(提交时间) = 5。
    • 响应比 = 1 + 5/4 = 2.25。
  • 作业 C 的周转时间

    • 完成时间 13 - 提交时间 4 = 9。
    • 总等待时间 = 9(周转时间) - 4(运行时间) = 5。
    • 与响应比的分子一致:总等待时间(5)等于调度时的当前等待时间(5)。

为什么看起来“提交时间+运行时间=完成时间”?

  • 特殊情况:当作业无需等待时(如作业 A),完成时间确实等于提交时间 + 运行时间。
  • 一般情况:作业需要等待调度,因此完成时间 = 提交时间 + 运行时间 + 等待时间。

关键结论

  • 完成时间 ≠ 提交时间 + 运行时间​(除非作业无需等待)。
  • 响应比的分子是调度时刻的等待时间(部分等待时间)。
  • 周转时间的分子是总等待时间(最终确定的全部等待时间)。
  • 在调度完成的瞬间,响应比中的等待时间会等于总等待时间(如作业 B 和 C),因此两者数值最终一致。


总结

以上就是今天要讲的内容,本文我补充了作业和资源的定义和作用,又给大家讲了一下处理机的调度层次,然后又给大家补充了一个我最感觉有点容易犯错的调度算法,接下来我会继续更新处理机调度的,从3月25号后我要开始给大家讲蓝桥杯的枚举和模拟的题了,谢谢大家,我会持续更新的。

相关文章:

  • 记录我的ICME2025论文之旅:困顿与收获
  • Vue 3.4组合式API深度解析
  • 七、python函数
  • 如何进行灌区闸门自动化改造-闸门远程控制系统建设
  • 常见框架漏洞(iis)
  • Java的安全性体现在多个关键方面
  • SQL语言的游戏优化
  • C# 中实现 跨线程写入
  • 在shell脚本内部获取该脚本所在目录的绝对路径
  • Wi-Fi模块集成到现有蓝牙逻辑板中
  • tryhackme——Enumeration
  • 【人工智能】机器学习中的评价指标
  • Linux 系统关机和重启指令
  • Vue的计算属性和侦听器有什么区别,在什么场景下使用它们?
  • ChatGPT降低论文AIGC重复率的提示词合集(高效降重方法)
  • Milvus Java SDK
  • 5个视角、5等级及10档次:《数字化转型领域 参考架构》国家标准正式出台
  • Baklib企业CMS的核心功能是什么?
  • SvelteKit 最新中文文档教程(9)—— 部署静态站点与单页应用
  • TDengine 用户权限管理
  • 遍体鳞伤就是击不倒,这是国米老男孩最后的倔强
  • 沈晓萍︱严金清:比斯坦因更早获得敦煌文物的无锡名士
  • 强制性国家标准《危险化学品企业安全生产标准化通用规范》发布
  • 新片|《我仍在此》定档5月,《新·驯龙高手》同步北美上映
  • 徐徕任上海浦东新区副区长,此前已任区委常委
  • 庄语乐︱宋代历史是被“塑造”出来的吗?