OS笔记——chap3_part1

操作系统原理及安全

第三章 调度

“原理 机制 算法”

CPU调度是多道程序操作系统的基础

1 基本概念

1.1 调度队列

操作系统中维护了一组进程调度队列,包括:作业队列、就绪队列和设备队列。

  • 作业队列:系统中所有进程的集合。
  • 就绪队列:所有驻留在内存并处于就绪状态,等待调度执行的进程的集合。
  • 设备队列:等待某个I/O设备的进程集合。

进程在整个生命周期中会在各种调度队列之间迁移。可以用队列图来表示进程调度。

1.2 调度的层次
  • 调度程序:负责挑选就绪进程的内核模块。主要包含两方面:一是调度策略,即以怎样的原则来选择就绪队列中的进程。二是调度时机,即什么时候进行调度。主要完成以下功能。

    • 记录系统中所有进程的状态、优先数和资源情况。
    • 从旧需对零中选择获得处理器的进程。
    • 分配和回收处理器资源。
  • 一个作业从提交到完成通常需要经历多级调度,而不同操作系统中采用的调度层次不完全相同。

  • 三级调度:

    • 高级调度:
      • 作业调度、宏观调度或长程调度。
      • 作业是用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合,包括用户程序、所需的数据及命令等。作业中一个相对独立的工作称为一个作业步。例如在编制程序的过程中通常需要进行编辑输入、编译、链接、运行这几个作业步。作业这个概念更多地用在批处理操作系统中。作业从提交到完成要经历四种状态:提交状态、后备状态、运行状态、完成状态。
      • 主要任务是:
        1.按照一定的原则从外存中处于后备状态的作业中选择一个或多个作业,将其调入内存
        2.为选中的作业分配内存、I/O等资源,并建立相应的进程
      • 作业调度的运行频率较低,通常为几分钟一次。
      • 高级调度通常决定着多道程序的道数
    • 低级调度:
      • 进程调度、微观调度或短程调度
      • 主要任务:
        按照某种原则决定就绪队列中的哪个进程/内核级线程能获得处理器
      • 是操作系统最为核心的部分,其优劣影响着整个系统的性能。
      • 进程调度的运行频率很高,一般几十毫秒要运行一次。
      • 分为抢占式调度与非抢占式调度
    • 中级调度:
      • 负载均衡调度、中程调度或交换调度
      • 主要任务:
        1. 将内存中暂时不用的信息移到外存。
        2. 将需要的信息从外存读入内存。
      • 中级调度决定了主存储器中能容纳的进程数,这些进程将竞争处理器资源。
      • 中级调度根据存储资源量和进程当前的状态来决定辅存与主存中进程的交换,运行频率介于前两者之间。
1.3 进程的一种分类
  • I/O密集型进程(I/O-bound process):执行I/O比计算的时间多,存在许多短的CPU执行区间(CPU burst)。

  • CPU密集型进程(CPU-bound process):执行计算时间多,有少量的长CPU执行区间。

  • 多类型进程的组合

    • 如果I/O密集型进程过多:就绪队列为空,低级调度没什么事儿做。
    • 如果CPU密集型进程过多:I/O队列为空,设备没有得到充分利用。
    • 因此系统为了保证资源充分利用,I/O密集型与CPU密集型进程应该混合搭配
1.4 调度性能的评价准则
  • 资源利用率:CPU利用率 = CPU有效工作时间 / CPU总的运行时间
  • 响应时间:进程从提交一个请求到接收到第一个响应之间的时间间隔。
  • 周转时间:作业提交与作业完成时的时间间隔。
    • 应使作业周转时间或平均周转时间尽可能短。这是衡量批处理系统的一个重要指标。
    • 平均周转时间:多个作业的周转时间的平均值。
    • 带权周转时间:作业周转时间与作业实际运行时间的比值。
    • 平均带权周转时间:多个作业带权周转时间的平均值。
  • 系统吞吐率:单位时间内CPU完成作业的数量。
  • 公平性:确保每个用户、每个进程获得合理的CPU及其他资源份额。
    • 对于不同的系统,公平性原则是由差异的。
1.5 引起进程调度的原因
  • 进程从运行态切换到等待状态:I/O请求、调用wait……
  • 进程从运行态切换到就绪状态:发生中断
  • 进程从等待状态切换到就绪状态:系统调用或中断返回
  • 进程终止

2 调度算法

(算法的具体内容和举例分析的坑以后再填…)

2.1 先来先服务(FCFS)调度算法
  • 适用:作业调度,进程调度
  • 非抢占式算法
2.2 短作业优先(SJF,Shortest Job First)调度算法
  • 适用:作业调度,进程调度
  • 对于作业调度是非抢占的,进程调度中可以改造为抢占的
  • 当一批作业同时到达时,SJF为最佳算法,拥有最短的平均周转时间(、平均等待时间)。
2.3 最短剩余时间优先(SRF,Shortest Remaining time First)调度算法
  • 抢占式的进程调度算法
2.4 优先级调度算法
  • 适用:作业调度,进程调度
  • SJF、SRF都是一种优先级算法
  • 抢占式和非抢占式都可以实现
  • 优先级可以分为动态优先级和静态优先级
    • 静态优先级在进程创建时确定且在进程运行期间不再改变。
    • 动态优先级也在进程创建时确定,但在进程运行的过程中会发生变化。
2.5 时间片轮转(Round-robin)调度算法
  • 为分时系统设计
  • 循环的就绪队列
2.6 最高响应比优先调度算法
  • 主要用于作业调度:在每次调度作业运行时,先计算后背作业队列中每个作业的相应比,然后挑选相应比最高的作业。
2.7 多级队列调度算法
  • 根据作业性质或类型不同,将进程就绪队列分为多个,每个队列采用不同的调度算法(我的理解:其实也可能相同的,总之就是可以比较自由地设置。)
  • 缺点:进程进入系统就被永久地分配到某个队列中。虽然调度开销低,但是不灵活。
2.8 多级反馈队列调度算法
  • 设置多个就绪队列,并为每个队列赋予不同的优先级。第1个队列的优先级最高,第2队列次之,其余队列的优先级逐次降低。每个队列中进程执行的时间片大小也各不相同,进程所在队列的优先级越高,其相应的时间片就越短。
  • 允许进程在队列之间移动。
  • 根据CPU区间的特点区分进程,如果进程使用过多的CPU时间,就会被移动到低优先级队列。
  • 参数配置与最优化
2.9 公平分享调度算法
  • 动机:采用时间片轮转(Round-Robin)调度算法时,对于多个用户,如果他们所拥有的进程数不同,则各用户拥有CPU的时间的占比不同。这样造成某些用户的响应比过低,不利于公平。
  • 解决:对于不同用户,基于进程组来分配CPU时间。其实现思想是对系统中的每个用户赋予某种权值,根据用户权值大小,按比例分配处理机时间。
2.10 实时调度
  • 优先权调度
  • 单调速率调度
  • 最早截止期限优先调度
多处理器调度
  • 负载共享调度算法
  • 群调度算法
  • 专用处理器调度算法
  • 动态调度算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用: 在看关于卡尔曼滤波的教程时,提到了一个文件chap1_27f.m,这个文件仿真结果没有问题,但是输出的结果都是关于变量Y(n)的。用户想知道是否有办法可以显示出变量X(n)的变化过程。 引用: 在尝试在Simulink中运行文件时,出现了一个错误信息,指出在flag=1调用期间,由S-Function返回的状态导数必须是长度为4的实向量。用户在flag=1中保持了长度为4,并且使用了实代数方程,但仍然出现了复杂向量的问题。用户想知道为什么会出现这个问题。 关于第一个问题,根据提供的引用内容,无法得知matlab中chap5_3f是什么。请提供更多关于chap5_3f的信息,我将尽力提供帮助。 关于第二个问题,根据引用,出现的错误信息是由于S-Function返回的状态导数的长度不匹配。这可能是因为在flag=1调用中的实向量的长度与期望的长度不一致。建议仔细检查代码中与S-Function相关的部分,确保状态导数的长度正确,并且与S-Function的要求相匹配。如果问题仍然存在,请提供更多关于代码和错误消息的信息,以便我能够提供更具体的帮助。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [卡尔曼滤波求教-chap1_27f.m](https://download.csdn.net/download/weixin_39841856/11536026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [倒立摆系统的 S 函数文件:S 函数 simulink 错误:在 flag=1 调用期间必须是长度为 4 的实向量...-matlab开发](https://download.csdn.net/download/weixin_38742954/19223894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值