OS复习笔记ch9-1

news2024/11/25 23:43:05

单处理器调度

调度类型

  1. 主要类型
    image.png
    长程调度:决定将哪个进程放入进程池中
    中程调度:决定将哪些进程部分或者全部放入内存中
    短程调度:决定哪个空闲进程上处理机
    I/O调度:决定哪个进程的I/O请求被可用的I/O设备处理

  2. 处理器调度和进程状态变化
    调度的主要目的是不断安排进程在处理器上执行
    image.png

  • 长程调度主要是创建作业: 新建→就绪(批处理作业会比较明显)
  • 中程调度主要是全部或者部分内存空间换进换出: 阻塞/挂起→就绪
  • 短程调度主要是选择进程获得处理器运行: 就绪→运行

层次越往下发生的频率越高(一般时间片在几十到上百ms,短程调度会非常频繁)

  1. 队列图
    image.png
    从某种意义上,调度是管理队列以最小化排队延迟和优化性能的问题。现在的个人计算机以交互式为主(interactive user),需要立刻创建任务并响应,一般都不是批处理任务,所以本章的重点在于短程调度(低级/微观)。

了解一些短程调度的条件:当发生可能导致当前进程阻塞或可能提供机会抢占当前正在运行的进程以支持另一个进程的事件时调用

  • 时钟中断:时间片到了,需要进程切换
  • I/O 中断:进程发出I/O请求需要从运行→阻塞,进程发生切换
  • 系统调用:例如exec(),进程执行过程中执行其他程序,需要进程切换
  • 信号:例如Ctrl+C,发送kill信号杀死当前进程

调度准则

  • 定量分析
    了解一下周转时间、响应时间、截止时间等概念,主要用于评价调度算法的性能
    image.png
    由于考虑系统开销的时间所以Tr = Ts + sometime。所以Tw不小于1
    响应时间多指进程第一次被调度,获得处理器的时间。而交互式的响应时间一般是在2s以内。

  • 定性分析
    主要是对于公平性进行分析(有无死锁和饥饿等)
    image.png

优先级

在就绪队列按照优先级排列,进程调度按照优先级调度
Unix使用位图实现常数级的速度找到队列的第一个可调度对象。位图(Bitmap)是一种特殊的数据结构,它使用位(Bit)序列来表示信息。

  1. 静态优先级
    创建进程的同时确定,一般为一个整数。会根据进程类型,资源需求和用户要求变化。

一般给与I/O进程更高优先权,防止CPU型进程获取CPU时间过长,使得所有资源可以均衡利用,进程调度也可以更加公平。

  1. 动态优先级
    image.png

  2. 选择函数
    image.png

这里有三个参考指标w(等待时间)、e(执行时间)、s(所需要的时间)

调度策略

两种方式

调度策略主要分为两种方式:抢占式和非抢占式调度
非抢占式调度:运行态进程一直执行直到终止或阻塞
抢占式调度:运行态进程在执行的过程中可以被剥夺处理机,强制进程切换

抢占原则

  • 优先权原则
  • 短作业/进程优先原则
  • 时间片原则
    折中方式:
  • 内核不允许抢占
  • 其他可以抢占

算法思路

我们先假设一个进程队列
image.png
第一列是进程名,第二列是进程的到达时间,第三列是需要占用的CPU时间

(1)FCFS(先来先服务)
image.png
顾名思义,FCFS就是先到的进程先服务,服务完了继续下一个,按照先来后到的顺序。
先来先到是一种基础调度策略,我们在很多的算法中都有所涉及,但是性能不是很好。

image.png
在这个例子中,由于A进程一开始占用了大量的CPU时间,导致了B和C等待的时间过长,所以平均周转时间很大。
image.png

长进程/作业占据CPU的时间过长,短作业处于劣势(一直等待,即护航效应)
同理CPU型进程长时间占据CPU,导致I/O型进程很难进行完,容易导致饥饿。

(2)时间片轮转(round robin)

  • 基于抢占式的调度策略
  • 时钟中断定期产生
  • 中断发生就需要回到就绪队列,然后等待调度

如图示的进程到来和执行时间

image.png
时间片调度策略还是基于先来先服务,也就是优先选择在队列中队首的进程执行
跟FCFS不同的是,进程的时间片到了就要下处理机,放到就绪队列末尾,选择队首的进程继续执行。
不过要注意一下:可能在同一时刻,刚好上一个进程执行完了,并且有一个新的进程要进来,这时把刚执行完的放到最后,新来的排倒数第二。

这里的q = 1表示时间片为1,时间片小能快速响应进程的服务,但是切换的开销比较大
相反q = 4能减小进程切换的系统开销,但反应速度下降

对于I/O型进程,会因为频繁阻塞而重新就绪然后运行,在执行过程中非常不利,有学者就提出来VRR算法

image.png

使用一个AUX队列(优先级高于普通的就绪队列中的进程),提高公平性

(3)最短时间进程优先(SPN/SJF)
基于短作业优先策略,选预计执行时间最短的进程
image.png
image.png

image.png

  • 如图,改善平均周转时间和平均带权周转时间;
  • 难以准确估计进程执行时间,影响调度性能;
  • 有利于短进程,对长进程非常不利,可能饥饿(短进程源源不断到达,长进程不断靠后)

(4)最短剩余时间优先(SRT)
回顾我们之前发生死锁的解决方案,就是要及时撤销一个没有执行多少时间,剩余执行时间最长的进程,减少对于进程自身损失。
抢占式调度算法:当有新进程到来时,SRT根据每个进程的剩余时间多少选择进程剩余执行时间最短的运行,偏向于短进程。
image.png

在10s的时候,B和D都是剩余5个时间片,OS会优先调度B,因为TLB和cache中可能会有B的痕迹,可以更加高效的执行。

(5)最高响应比优先(HRRN)

  • R = (W + S)/ S,W表示wait等待时间,而S表示service是服务时间
  • 基于非抢占式策略(Nonpreemptive policy)
  • FCFS和SPN的折中:需估计处理时间
    image.png
    如图所示,A先来先执行,然后是B执行完,此次是C、D、E都来了,此时就要计算R值
    t = 9:RC=1+5/4
    RD=1+3/5
    RE=1+1/2
    选择最高响应比的C执行
    t = 13:RD=1+7/5
    RE=1+5/2
    选择最高响应比的E执行

HRRN算法一般不会产生饥饿,可以把R看成是进程的某种优先级

(6)优先级调度
优先级调度算法又称优先权调度算法,该算法既可以用于作业调度,也可以用于进程调度,该算法中的优先级用于描述作业运行的紧迫程度。

在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。

假设有四个作业的单道系统,它们的提交、运行时间如下表所示(时间单位:小时,以十进制进行计算,当前时刻是8.0)。若采用基于优先权的抢占式调度算法(优先数越小优先级越高),试回答:作业应以怎样的顺序调度?给出分析过程,并计算平均带权周转时间。
image.png


A先来先执行,执行到8.5s的时候B来了,比较两者优先级,B的优先级更低所以A继续执行。
9.0s的时候C到来,由于C的优先级更高,所以A下处理机,C上处理机执行。以此类推,得到如下的时间表:

作业号到达时间运行时间优先数开始时间完成时间周转时间带权周转时间
A8.02.048.010.22.21.1
B8.50.5611.211.73.26.4
C9.00.229.09.20.21
D9.51.0510.211.21.71.7

如上表所示,调度顺序为A→C→D→B,平均带权周转时间为2.55小时。
实际上,优先权调度可能会不公平,较低优先级的作业可能会长时间等待,导致饥饿问题。在上述调度顺序中,作业B的到达时间比较早,执行时间也较短,但是由于优先级低最后一个执行,导致带权周转时间最大。

(7)多级反馈队列算法(MLFQ)–了解即可

问题背景:如何估计处理时间,很难让终端用户来预估每一个进程的执行时间。
核心思想:基于进程运行的过去信息来预估之后的大致运行时间,目前的OS都是基于MLFQ的优化和完善

基于优先级的抢占式和时间片的策略,优化的规则如下

  1. Rule 1: If Priority(A) > Priority(B), A runs (B doesn’t).
  2. Rule 2: If Priority(A) = Priority(B), A & B run in round-robin fashion using the time slice (quantum length) of the given queue.
  3. Rule 3: When a job enters the system, it is placed at the highest priority (the topmost queue).
  4. Rule 4: Once a job uses up its time allotment at a given level (regardless of how many times it has given up the CPU), its priority is reduced (it moves down one queue).(解决I/O型进程的问题)
  5. Rule 5: After some time period S, move all the jobs in the system to the topmost queue.(解决饥饿问题)
    image.png

优点:

  • 为提高系统吞吐量和缩短平均周转时间而照顾短进程
  • 为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程
  • 不必估计进程的执行时间,动态调节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1826297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过数据库与AI实现以图搜图?OceanBase向量功能详解

OceanBase支持向量数据库的基础能力 当前,数据库存储系统与人工智能技术的结合,可以体现在两个主要的应用方向上。 一、近似搜索。它利用大语言模型(LLM,简称大模型)的嵌入(embedding)技术&am…

【Android面试八股文】请描述new一个对象的流程

文章目录 请描述new一个对象的流程JVM创建对象的过程检查加载分配内存内存空间初始化设置对象初始化请描述new一个对象的流程 JVM创建对象的过程 当JVM遇到一条new指令时,它需要完成以下几个步骤: 类加载与检查内存分配 并发安全性内存空间初始化设置对象信息对象初始化下图…

永磁同步直线电机(PMLSM)控制与仿真3-永磁同步直线电机数学三环控制整定

文章目录 1、电流环参数整定2、速度环参数整定3、位置环参数整定 写在前面:原本为一篇文章写完了永磁同步直线电机数学模型介绍,永磁同步直线电机数学模型搭建,以及永磁同步直线电机三环参数整定及三环仿真模型搭建,但因为篇幅较长…

贪心+dp,CF 1282B2 - K for the Price of One (Hard Version)

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1282B2 - K for the Price of One (Hard Version)https://codeforces.com/problemset/problem/1282/B2 二、解题报告 1、思路分析 考虑优先买价格低的,所以先升序排序 定义状态f[i]为购买前i个…

axios打通fastapi和vue,实现前后端分类项目开发

axios axios是一个前后端交互的工具,负责在前端代码,调用后端接口,将后端的数据请求到本地以后进行解析,然后传递给前端进行处理。 比如,我们用fastapi写了一个接口,这个接口返回了一条信息: …

LeetCode | 709.转换成小写字母

这道题可以用api也可以自己实现,都不难,大小字母之前相差了32,检查到大写字母时加上32即可 class Solution(object):def toLowerCase(self, s):""":type s: str:rtype: str"""return s.lower()class Solution…

韩顺平0基础学java——第22

p460-483 常用类 包装类Wrapper 针对8种几种数据类型相应的引用类型——包装类 包装类和基本数据类型的转换 jdk5之前的手动装箱和拆箱: jdk5之后的自动装箱和拆箱: 三元运算符是一个整体: 这个三元运算符里,精度最高的是doubl…

机器学习周记(第四十三周:MCformer)2024.6.10~2024.6.16

目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题定义2.2 可逆实例归一化(Reversible Instance Normalization)2.3 混合通道块 (Mixed-Channels Block)2.4 编码器(De…

MPLS VPN一

R1为客户,现在进行一些基本配置,来确保可以通路由 先启动OSPF跑通 在R3上 等一会 现在启动MPLS 对R3 对R4 然后在R2上 再把接口划到空间里面 原来的IP在公网里面,被清除了 然后再配置接口 查看 对R1(相当于客户) …

CrossOver和PD虚拟机谁更强大?CrossOver和PD虚拟机应该怎么选择

在当前的虚拟化技术和应用程序兼容性解决方案中,CrossOver和PD虚拟机(Parallels Desktop)都是备受用户喜爱的选择。对于需要在非原生系统上运行应用程序的用户而言,选择合适的工具尤为重要。那么,CrossOver和PD虚拟机谁…

虚表-在成员函数前面加上virtual后发生了什么事情???

从上图得出: 子类继承的父类的虚表指针吗? 答:是的。 子类和父类是同一个虚表还是不同的虚表? 答:不同的虚表,倘若是同一个当子类进行覆盖的时候,父类的虚表会丢失。 下面有一些方法来观察类…

【linux】认识“文件”的本质,理解“文件系统”的设计逻辑,体会linux优雅的设计理念

⭐⭐⭐个人主页⭐⭐⭐ ~~~~~~~~~~~~~~~~~~ C站最❤❤❤萌❤❤❤博主 ~~~~~~~~~~~~~~~~~~~ ​♥东洛的克莱斯韦克-CSDN博客♥ ~~~~~~~~~~~~~~~~~~~~ 嗷呜~ ✌✌✌✌ 萌妹统治世界~ 🎉🎉🎉🎉 ✈✈✈✈相关文章✈✈✈✈ &#x1f4a…

虚函数表共享和生成

每个类有不同的虚表,相同的类使用相同的虚表 模拟动态绑定的一个过程

【Apache Doris】周FAQ集锦:第 6 期

【Apache Doris】周FAQ集锦:第 6 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

C++11左值、右值

知识回顾,详解引用 简单概括,引用就是给已存在对象取别名,引用变量与其引用实体共用同一块内存空间 左右值区分 注意:不一定左边的都是左值,右边的都是右值 左边的也可能是右值,等号右边的也可能是左值 …

大数据工程师如何做到数据可视化?

好的数据可视化作品都是通过不断的数据对比分析实战出来的。 今天给大家带来一篇大数据工程师干货,从多角度解析做数据可视化的重要性,并解读一些适用的应用场景。大数据工程师们刷到这篇文章时一定要进来看看,满满的干货。 目录 1. 什么是数…

中望CAD 2025 (ZW3D2025) 简体中文修改版

名称:中望CAD 2025 (ZW3D2025) 简体中文修改版 描述:一款三维CAD设计工具,运行破解补丁ZW3D2025-2024-Patch执行修补。 链接:夸克网盘分享 📁 大小:3.2GB 🏷 标签:#PC软件 #CAD #设…

为什么笔记本电脑触控板不工作?这里有你想要的答案和解决办法

序言 你的笔记本电脑触控板停止工作了吗?值得庆幸的是,这个令人沮丧的问题通常很容易解决。以下是笔记本电脑触控板问题的最常见原因和修复方法。 触控板被功能键禁用 大多数(如果不是全部的话)Windows笔记本电脑都将其中一个功能键用于禁用和启用笔记本电脑触控板。按键…

【Arthas案例】某应用依赖两个GAV不同但包含两个相同全限定类名StaticLoggerBinder,引起log4j.Level类找不到异常

3分钟内解决问题 两个不同的GAV依赖冲突,包含相同全限定类名,引起ClassNotFoundException Maven依赖的三坐标体系GAV(G-groupId,A-artifactId,V-version) 【案例1】某应用依赖两个GAV不同的jar,但包含两个相同全限定类…

Jmeter多个请求按照比例并发压测的几种方式

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、需求 在压测的过程中,为了能够压测整个链路,通常需要多个接口进行并…