进程(二)

news2024/9/22 17:20:44

进程二

    • 2.6 调度的概念、层次
      • 2.6.1 基本概念
      • 2.6.2 三个层次
      • 2.6.3 三层调度的联系、对比
      • 2.6.4 补充知识
      • 2.6.5 本小节总结
    • 2.7 进程调度的时机、切换与过程、方式
      • 2.7.1 进程调度的时机
      • 2.7.2 切换与过程
      • 2.7.3 进程调度的方式
      • 2.7.4 总结
    • 2.8 调度器/调度程序/闲逛线程
    • 2.9 调度算法的评价指标
      • 2.9.1 CPU 利用率
      • 2.9.2 系统吞吐量
      • 2.9.3 周转时间
      • 2.9.4 等待时间
      • 2.9.5 响应时间
      • 2.9.6 总结
    • 2.10 FCFS、SJF、HRRN调度算法
      • 2.9.1 先来先服务:FCFS
      • 2.9.2 短作业优先:SJF
      • 2.9.3 高响应比优先:HRRN
      • 2.9.4 三种算法的对比
    • 2.11 调度算法(交互式)
      • 2.11.1 时间片轮转调度算法(RR)
      • 2.11.2 优先级调度算法
      • 2.11.3 多级反馈队列调度算法
      • 2.11.4 三种算法的对比
      • 2.11.5 多级队列调度算法

该章节包括:
2.6 调度的概念、层次
2.7 进程调度的时机、切换与过程、方式
2.8 调度器/调度程序/闲逛线程
2.9 调度算法的评价指标
2.10 FCFS、SJF、HRRN调度算法
2.11 调度算法(交互式)

2.6 调度的概念、层次

本小节知识概览

image-20230410214009417

2.6.1 基本概念

当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。

在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。

处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行

image-20230410215857181

2.6.2 三个层次

高级调度〈作业调度〉

由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序。

高级调度〈作业调度〉。按一定的原则从外存上处于后备队列的作业中挑选一个(或多个〉作业,给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它(们)获得竞争处理机的权利。

高级调度是辅存(外存)与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。

image-20230410220240085

中级调度(内存调度)

引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待。等它重新具备了运行条件且内存又稍有空闲时,再重新调入内存。

这么做的目的是为了提高内存利用率和系统吞吐量

暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到的挂起队列中。

中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存

一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高!

image-20230410220636948

低级调度(进程调度)

低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。
进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

image-20230410221108133

2.6.3 三层调度的联系、对比

image-20230410221151411

2.6.4 补充知识

image-20230410220941272

2.6.5 本小节总结

image-20230410221345693

2.7 进程调度的时机、切换与过程、方式

本小节知识概览

image-20230504214901186

2.7.1 进程调度的时机

进程调度(低级调度),就是按某种算法从就绪队列中选择一个进程为其分配处理机

image-20230504215713777

2.7.2 切换与过程

“狭义的进程调度”与“进程切换”的区别:

狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)

进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。

广义的进程调度包含了选择一个进程和进程切换两个步骤。

进程切换的过程主要完成了:

  1. 对原来运行进程各种数据的保存

  2. 对新的进程各种数据的恢复
    (如:程序计数器、程序状态字、各种数据寄存器等处理机现场信息,这些信息一般保存在进程控制块)

注意: 进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。

2.7.3 进程调度的方式

image-20230504215829797

2.7.4 总结

image-20230504220445783

2.8 调度器/调度程序/闲逛线程

闲逛进程

image-20230504221139492

2.9 调度算法的评价指标

本小节知识概览

image-20230504221256830

2.9.1 CPU 利用率

image-20230504221520634

2.9.2 系统吞吐量

image-20230504221603421

2.9.3 周转时间

image-20230504221757500

image-20230504222011123

2.9.4 等待时间

image-20230504222238711

2.9.5 响应时间

对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
响应时间,指从用户提交请求到首次产生响应所用的时间。

2.9.6 总结

image-20230504222643875

2.10 FCFS、SJF、HRRN调度算法

本小节知识概览

image-20230504222906804

2.9.1 先来先服务:FCFS

image-20230504223921840

例题

image-20230504223659000

2.9.2 短作业优先:SJF

image-20230504225732820

**例题:**非抢占式短作业优先

注意:每次调度的选择必须是已经到达的作业/进程,运行时间最短的。

P1 是最先到达的,先执行P1,在执行完P1后,P2、P3、P4都已经到达,但是P3的运行时间最短。优先执行P3,虽然P2、P4运行时间一样,但是P2是先到达的,先执行P2.

image-20230504224300381

**例题:**抢占式短作业优先

image-20230504225014443

注意几个小细节:

  1. 如果题目中未特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的
  2. 很多书上都会说“SJF 调度算法的平均等待时间、平均周转时间最少”。严格来说,这个表述是错误的,不严谨的。

之前的例子表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少
应该加上一个条件“在所有进程同时可运行时,采用SJF调度算法的平均等待时间、平均周转时间最少”;或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少

如果不加上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先, SRNT算法)的平均等待时间、平均周转时间最少”

  1. 虽然严格来说,SJF的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如FCFS),SJF依然可以获得较少的平均等待时间、平均周转时间
  2. 如果选择题中遇到“SF算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项

2.9.3 高响应比优先:HRRN

image-20230504225845544

image-20230504230501513

例题:

image-20230504230412653

2.9.4 三种算法的对比

image-20230504230519137

注:

这几种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统,当然,FCFS算法也常结合其他的算法使用,在现在也扮演着很重要的角色。而适合用于交互式系统的调度算法将在下个小节介绍…

2.11 调度算法(交互式)

本小节知识概览

image-20230505224742330

2.11.1 时间片轮转调度算法(RR)

image-20230508214255377

例题

image-20230508213555892

image-20230508213721332

image-20230508213754742

如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。

另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。

2.11.2 优先级调度算法

image-20230508215255812

非抢占式优先级调度算法:

image-20230508214604740

抢占式优先级调度算法:

image-20230508214813687

补充知识

IO 操作不会占用CPU,因此越早的进行IO操作,系统吞吐量的提升越高

image-20230508215146185

image-20230508215406320

2.11.3 多级反馈队列调度算法

image-20230508220120721

2.11.4 三种算法的对比

image-20230508220154994

: 比起早期的批处理操作系统来说,由于计算机造价大幅降低,因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。而这几种算法恰好也能较好地满足交互式系统的需求。因此这三种算法适合用于交互式系统。 (比如UNIX使用的就是多级反馈队列调度算法)

2.11.5 多级队列调度算法

image-20230508220955334

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

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

相关文章

HTML5 + JavaScript绘柱状图

之前用HTML5 JavaScript绘柱状图,可以直观显示各类型产品或品牌的所占比例大小。详见: HTML5 JavaScript绘柱状图1 现在需要针对每年获得各类品牌数据进行对比,绘制柱状图会更直观。 首先我们定义二维数组aBrandType,存放品牌…

双指针的基本应用

一、环形链表 I 方法1:哈希表 struct hashTable {struct ListNode* key;UT_hash_handle hh; };struct hashTable* hashtable;struct hashTable* find(struct ListNode* ikey) {struct hashTable* tmp;HASH_FIND_PTR(hashtable, &ikey, tmp);return tmp; }void insert(struc…

页面一打开就有30个重复请求,优化方法

一、写在前面 上周测试同事给我提了个bug。他说在公司运营系统某个编辑页面中,一个post请求调用太多次了,想让我看看怎么回事。我刚听他讲这个事情时心里有点不屑一顾,觉得能有多少次啊,大惊小怪的。然而当我在测试环境中打开那个…

经典文献阅读之--A Lifelong Learning Approach to Mobile Robot Navigation(终生学习轨迹导航)

0. 简介 终生学习作为近年来比较火的一种深度学习方式,导航终身学习(LLfN)旨在解决标准导航问题的一种新变体,在该问题中,智能体在有限的内存预算下,通过学习提高在线经验或跨环境的导航性能。而最近有一篇文章《A Lifelong Lear…

Python数据分析实战【十四】:你知道python中有几种排序方法吗【文末源码地址】

文章目录 一、List.sort()排序案例一:按照列表中的元素进行排序案例二:按照销售额数据进行排列 二、sorted()排序案例一:sorted()对列表进行排序案例二:sorted()对字典进行排序案例三:sorted()对列表中的字典元素排序 …

[工具]Pytorch-lightning的使用

Pytorch-lightning的使用 Pytorch-lightning介绍Pytorch-lightning与Pytorch的区别Pytorch-lightning框架的优势Pytorch-lightning框架 重要资源 Pytorch-lightning介绍 这里介绍Pytorch_lighting框架. Pytorch-lightning与Pytorch的区别 Pytorch-lightning可以简单的看作是…

shiro反序列化[cve_2016_4437]

目录 什么是shiro? 漏洞原理 漏洞复现 修复方案 什么是shiro? Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。 漏洞原理 Apache Shiro 1.2.4及以前版本…

D1. LuoTianyi and the Floating Islands (Easy Version)(树形dp)

Problem - D1 - Codeforces 这是问题的简化版本。唯一的区别在于在该版本中k≤min(n,3)。只有在两个版本的问题都解决后,才能进行黑客攻击。 琴音和漂浮的岛屿。 洛天依现在生活在一个有n个漂浮岛屿的世界里。这些漂浮岛屿由n−1个无向航线连接,任意两个…

【0基础学爬虫】爬虫基础之自动化工具 Pyppeteer 的使用

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…

Python学习之Image模块图片滤镜效果操作示例

前言 滤镜效果是图像处理中常用的一种技术,可以用来增强图像的视觉效果,实现不同的效果,比如增强对比度、饱和度、色彩等。滤镜效果可以帮助用户快速地调整图像的特性,从而使图像更加适合用户的需求。 Image模块对于图像处理的…

Hive SQL 中 map, reduce 的数据血缘分析

Hive SQL 中的有些 SQL 语句和传统关系型数据库中使用的 SQL 语句在语法和功能上都有非常大的差异。在数据血缘分析中对这些 Hive SQL 特有的 SQL 语法的支持,是马哈鱼数据血缘关系分析工具和一般数据血缘分析工具的一个重要区别,对这些特殊 SQL 语法的支…

python代码大全

Python是一种高级编程语言,属于通用编程语言。它是由荷兰人Guido van Rossum在1989年创造的,其语法简单、易读易写,是一种解释型、面向对象、动态数据类型的编程语言,支持多种编程范式,如面向对象、函数式、过程化等。…

FreeRTOS内核:详解Queue队列 FIFO(GPT4帮写)

FreeRTOS内核:详解队列管理FIFO 1. 背景2. Queue相关API2.1 xQueueCreate():创建2.2 xQueueSend():发送2.3 xQueueReceive():接收2.4 vQueueDelete():删除2.5 xQueuePeek() :不删除的方式从FIFO读数据&…

小程序技术给统一门户的建设带来新思路

统一门户的发展可以追溯到20世纪90年代初期,当时的企业和组织开始意识到信息技术可以用于整合和管理各种分散的应用程序和服务。随着互联网的普及和Web 2.0技术的兴起,统一门户的发展迅速加速。 在早期,统一门户主要采用定制化开发的方式实现…

Qt音视频开发45-音视频类结构体参数的设计

一、前言 视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用…

动态规划的学习

文章目录 动态规划的学习一、什么是动态规划?二、如何思考状态转移方程?三、动态规划的基本原理1.[509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/)1.1 暴力递归解法:1.1.1 递归算法的时间复杂度那为什么时间复杂度会这么…

vcruntime140.dll丢失的解决方法分享,多种修复方式

随着最新版本的Windows 10操作系统推出,个人电脑的性能和功能得到了巨大提升。然而,尽管Microsoft已经不断更新固件和驱动程序,但仍然存在一些常见问题,例如“ vcruntime140.dll丢失 ”错误。这个错误可能会导致某些应用程序无法正…

三流面试聊技术,二流面试聊框架,一流面试…

前言 本文是为了帮大家快速回顾了软件测试中知识点,这套面试手册涵盖了诸多软件测试技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。 本来想将文件上传到github上,但由于文件太大有的都…

模板学堂|BI大屏制作十大高频问题的解决技巧

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场(https://dataease.io/templates/)。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板,方便用户根据自身的业务需求和使用场景选择对应的仪表板模板,并…

4.3 线性表之链表

目录 链表的存储结构 链表的结构 链表的相关运算 链表的存储结构 将线性表L(a0,a1,……,an-1)中各元素分布在存储器的不同存储块,称为结点,通过地址或指针建立元素之间的联系 结点的data域存放数据元素ai,而next域是一个指针&#xff…