操作系统知识点详情-任务调度

本文目录

  • 一、名词解释
    • 1. 调度器
    • 2. 优先级
      • (1)优先级反转
      • (2)优先级继承协议
      • (3)优先天花板
    • 3. 任务状态:新建、就绪、运行、阻塞、终止。
    • 4. 任务类型:计算密集型、I/O密集型
    • 5. 实时任务:硬实时任务、软实时任务
      • (1)硬实时任务
      • (2)软实时任务
    • 6. 任务挂起
    • 7. 任务饥饿
    • 8. 时间片轮询
    • 9. 上下文切换
    • 10. 进程控制块 PCB
    • 11. 线程控制块 TCB
    • 12. 并行
    • 13. 并发
    • 14. 抢占式调度和非抢占式调度
      • (1)抢占式调度
      • (2)非抢占式调度
    • 15. 调度指标
      • (1)吞吐量
      • (2)周转时间
      • (3)等待时间
      • (4)响应时间
      • (5)CPU使用率
      • (6)公平性
      • (7)资源利用率
  • 二、 调度算法
    • 1. 先来先服务(FCFS, First-Come, First-Served)
    • 2. 最短作业优先(SJF, Shortest Job First)
    • 3. 时间片轮转法(RR, Round Robin)
    • 4. 优先级调度(Priority Scheduling)

  

   操作系统任务调度是指操作系统在多任务环境下对任务或进程进行管理和调度的过程。由于系统(cpu)资源有限,当有多个任务需要处理时,任务调度的目的是高效地利用系统资源,提高系统的响应速度和吞吐量,确保多个任务能够合理地共享系统资源。

一、名词解释

1. 调度器

   在操作系统中,调度器的任务是管理CPU的使用,通过选择和安排进程或线程的执行顺序来优化系统性能。

2. 优先级

  根据任务的重要程度为任务分配优先级,优先级高的任务请求可以优先使用cpu资源。例如在业务办理的窗口经常看到“VIP用户优先”的标识,这就体现了调度中优先级的概念。

(1)优先级反转

  优先级反转(Priority Inversion)是操作系统和并发编程中一个重要的概念,通常发生在一个低优先级的任务持有一个高优先级任务所需要的资源时,导致高优先级任务被阻塞,反而让中优先级的任务可以执行。这个现象会导致系统性能下降,甚至可能引起系统失效。

●举例:
假设有三个任务:高优先级任务 (Task H)、中优先级任务 (Task M)、低优先级任务 (Task L)。

以下是优先级反转的一个经典场景:
  Task L 获得了某个资源(比如一个共享锁)。
  此时 Task H 被调度执行并尝试获得 Task L 持有的资源,但由于资源被占用,Task H 被阻塞。
  Task M 开始执行,因为它的优先级高于 Task L,但低于 Task H,所以 Task M 可以继续执行,尽管 Task H 被阻塞。
  在这个过程中,Task H 本来应该比 Task M 优先执行,但却被 Task L 阻塞,而 Task L 又被 Task M 抢占了CPU资源,导致 Task H 的优先级被无意中“反转”了。

(2)优先级继承协议

  优先级继承协议是为了解决优先级反转的问题。例如当 Task L 持有资源并阻塞了 Task H,Task L 临时提升到与 Task H 相同的优先级。这样 Task L 就不会被 Task M 抢占,可以尽快释放资源,使 Task H 继续执行。一旦 Task L 释放资源,它的优先级恢复原状。

(3)优先天花板

  优先级天花板协议(Priority Ceiling Protocol, PCP)是一种用于实时系统中资源共享管理的协议,旨在解决优先级反转和避免死锁问题。

●示例情境
假设有三个任务(Task A, Task B, Task C)和一个共享资源(Resource X)。
它们的优先级分别为:
Task A: 优先级较低
Task B: 中等优先级
Task C: 高优先级

  Resource X 被设置了一个优先级天花板,其优先级为 Task B 的优先级。这意味着只有 Task B 和 Task C 可以访问这个资源,因为它们的优先级高于或等于 Resource X 的天花板优先级。

3. 任务状态:新建、就绪、运行、阻塞、终止。

(1)新建:任务刚刚创建,尚未进入就绪队列等待调度。
(2)就绪:任务已准备好执行,等待被调度到CPU上运行。就绪任务处于就绪队列中。
(3)运行:任务正在CPU上执行。
(4)阻塞:任务正在等待某个事件(如I/O操作完成或资源可用),不能继续执行,进入阻塞队列。
(5)终止:任务已完成执行或因某种原因被终止,任务结束运行,操作系统清理任务相关资源。

4. 任务类型:计算密集型、I/O密集型

  计算密集型任务:是指需要大量CPU运算能力而相对少量I/O操作的任务。通常不涉及大量的内存读写操作,而是集中在CPU的数值计算上。
  I/O密集型任务:是指需要大量I/O操作(如磁盘读写、网络通信等)等任务。通常会花费大部分时间等待I/O,仅有少量时间被用在CPU处理请求上。

5. 实时任务:硬实时任务、软实时任务

(1)硬实时任务

  该类任务必须在截止时间前完成,否则系统无法承担任务处理超过截至时间的后果。例如,交通工具上的传感器的信息处理任务必须在截止时间前完成,否则会造成严重的安全隐患。

(2)软实时任务

  该类任务可以偶尔超过截止时间完成,其结果是可接受的。例如视频播放,某几帧画面的计算如果超过了截止时间,则可能会造成视频的卡顿、画面不清晰等问题,但不会造成更加严重的后果。

6. 任务挂起

  任务挂起是指在操作系统中暂时停止一个任务(进程或线程)的执行,并将其放置在挂起状态下,使其暂时不参与系统的调度和执行。

7. 任务饥饿

  例如,在最短任务优先的调度算法中。当系统有大量的短任务和少量的长任务时,这个系统的长任务很可能会无法占用CPU资源,一直处于饥饿状态中,即永远无法被调度,而这对于整个系统调度的公平性是不利的。可采用调度算法,如时间片轮询等方式来解决任务饥饿问题。

8. 时间片轮询

   时间片(Time Slice)是指操作系统中用来调度多任务的基本单位。在时间片轮转调度算法中,每个任务被分配一个固定长度的时间片,例如10毫秒或者20毫秒。当任务被调度执行时,它会被允许运行一个时间片的长度,如果这段时间结束而任务还没有执行完毕,操作系统会将这个任务放入就绪队列的末尾,然后调度下一个任务来执行。
  时间片的作用是确保每个任务都有机会在CPU上执行,同时避免某个任务长时间占用CPU而导致其他任务无法及时响应,即任务饥饿。通过时间片轮转,操作系统可以实现公平地分配CPU时间,从而提高系统的响应速度和用户体验。
  在实际应用中,时间片的长度会根据系统的具体情况和性能要求进行调整,以平衡系统的吞吐量和响应时间。

9. 上下文切换

   上下文切换是多任务操作系统中从一个任务(进程或线程)切换到另一个任务的过程。这个过程包括保存当前任务的上下文并恢复新任务的上下文。
   上下文通常指操作系统中保存和恢复的处理器状态信息,以便在多任务处理环境中进行任务切换(Context Switching)。上下文包括处理器的寄存器状态、程序计数器(PC)、堆栈指针(SP)、内存管理信息等。上下文切换是多任务操作系统实现并发执行的重要机制。

10. 进程控制块 PCB

进程控制块(PCB,Process Control Block)是操作系统用于管理进程的一个关键数据结构。每当创建一个新进程时,操作系统会分配一个PCB来存储该进程的相关信息。PCB中包含了操作系统需要管理和调度进程所需的各种数据。

11. 线程控制块 TCB

进程控制块(PCB,Process Control Block)是操作系统用于管理进程的一个关键数据结构。每当创建一个新进程时,操作系统会分配一个PCB来存储该进程的相关信息。PCB中包含了操作系统需要管理和调度进程所需的各种数据。

12. 并行

  并行指的是多核cpu处理多个任务在同一时间内同时执行。多个处理器或多个计算单元来同时处理不同的任务,从而加快整体的计算速度。并行处理的目标是通过分工合作来完成更大规模的计算任务,常用于高性能计算领域。
  例如:如果系统有两个处理器,任务A在处理器1上执行,任务B在处理器2上执行,两者同时进行。

13. 并发

  并发指的是单核cpu在同一时间段内管理和处理多个任务。虽然这些任务不会同时执行,但系统能够交替地处理每个任务,使它们看起来像是同时进行的。即宏观并行,微观串行。
  例如:在单处理器系统中,任务A和任务B交替执行。操作系统可能先执行任务A一段时间,然后切换到任务B,再切换回任务A,如此循环,使得两个任务似乎是同时进行的。

14. 抢占式调度和非抢占式调度

(1)抢占式调度

  操作系统允许高优先级任务在任何时间点中断当前正在执行的低优先级任务,以立即执行。

●举例:对于单核cpu,执行两个任务,任务一优先级高,任务二优先级低。任务一执行时被阻塞,任务二开始执行,在执行过程中,任务一解除阻塞,那么会不会打断当前执行的任务二?

  在单核 CPU 系统中,任务的执行是通过调度器来管理的。任务的优先级决定了它们在调度时的执行顺序,优先级高的任务会优先执行。
  如果任务1由于某种原因(例如等待某个事件或资源,或使用延时函数)而阻塞了,调度器会将 CPU 的控制权交给可执行的下一个任务,这里是任务2。一旦任务1等待的条件满足,它将从阻塞状态变为就绪状态。在单核 CPU 中,当任务1变为就绪状态时,调度器会根据任务1的优先级来决定是否立即执行任务1。如果任务1的优先级高于当前正在执行的任务2,调度器会中断任务2的执行,保存任务2的上下文,并立即切换到任务1的执行。这就是所谓的抢占式调度,其中优先级更高的任务可以打断当前执行的任务。
  所以,根据优先级和调度器的实现,当任务1解除阻塞且其优先级高于任务2时,任务1可以立即执行,打断任务2的执行。这种行为确保了高优先级任务能及时响应其事件并执行。总结来说,任务的优先级决定了调度顺序,高优先级任务可以在低优先级任务执行过程中抢占 CPU 资源。

(2)非抢占式调度

  正在进行的低优先级任务不会被高优先级任务打断,必须先执行完当前的任务。正在进行的任务只能在以下情况下主动释放CPU,才能让其他任务执行:①任务终止。②任务主动调用系统调用或等待事件,使自己放弃CPU,允许其他任务执行。

15. 调度指标

(1)吞吐量

单位时间内完成的作业数量。衡量系统在给定时间内处理作业的能力。吞吐量越高,系统处理能力越强。

(2)周转时间

从任务提交到任务完成所需的总时间。周转时间越短,系统响应速度越快。

(3)等待时间

作业在就绪队列中等待的时间总和。反映作业等待资源分配的时间。等待时间越短,作业的响应性越好.

(4)响应时间

从作业提交到系统开始首次响应(开始执行)的时间。尤其对于交互式系统,响应时间非常重要。响应时间越短,用户体验越好。

(5)CPU使用率

CPU实际用于执行作业的时间比例。表示CPU资源的利用效率。较高的CPU利用率表明系统有效地利用了处理器资源。

(6)公平性

所有作业或进程在系统资源分配上的公平程度。确保所有作业或进程在合理的时间内获得资源,防止某些作业或进程长期得不到执行。

(7)资源利用率

系统中各类资源(如内存、I/O设备)的使用效率。衡量系统资源的利用率,确保资源不被浪费。

二、 调度算法

1. 先来先服务(FCFS, First-Come, First-Served)

特点:按作业到达顺序调度。
优点:简单易实现。
缺点:可能导致长作业延迟短作业(即“长作业效应”)。

2. 最短作业优先(SJF, Shortest Job First)

特点:优先调度执行时间最短的作业。
优点:可最小化平均等待时间。
缺点:难以预知作业的执行时间,可能导致“饥饿”现象。

3. 时间片轮转法(RR, Round Robin)

特点:为每个作业分配固定时间片,按顺序轮流调度。
优点:响应时间稳定,适合交互式系统。
缺点:时间片过大时退化为FCFS,过小时增加上下文切换开销。

4. 优先级调度(Priority Scheduling)

特点:按作业优先级调度,高优先级作业优先。
优点:能保证高优先级作业快速处理。
缺点:低优先级作业可能“饥饿”。

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

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

相关文章

virsh命令使用笔记

远程查看 virsh -c qemutcp://root192.168.1.102:16510/system list --all 网络配置 virsh net-define net-name.xml 定义网络 virsh net-dumpxml net-name 当前网络xml virsh net-start net-name 启动网络 virsh net-autostart net-name 自启动网络 virsh net-destr…

HDU1011——Starship Troopers(树形DP),HDU1012——u Calculate e,HDU1013——Digital Roots

目录 HDU1011——Starship Troopers(树形DP) 题目描述 运行代码 代码思路 树形DP HDU1012——u Calculate e 题目描述 运行代码 代码思路 HDU1013——Digital Roots 题目描述 超时代码 改进后依旧超时代码 运行代码 代码思路 HDU1011——…

前端转base64格式的字体图标方法

1.将需要的字体图标包下载到本地 2.访问 transfonter.org 将字体图标转成base64格式 如 这样就可以和正常的字体图标一样使用了

【Git】Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)

Git Submodules 介绍 1、为什么你值得读这篇文章?2、为什么有 submodules?3、了解 Git Submodules3.1、如何让一个Git仓库变为另一个Git仓库的 submodule3.2、submodule 的父子关系存在哪里3.3、submodule 的父子关系信息怎么存 4、submodule 开发常用操…

【SpringBoot】分页查询

1. Controller ApiOperation("分页查询")GetMapping("/page")public Result<PageResult> pageResultResult(EmployeePageQueryDTO employeePageQueryDTO) {System.out.println(employeePageQueryDTO.toString());PageResult pageResult employeeSer…

Token Labeling(NeurIPS 2021, ByteDance)论文解读

paper&#xff1a;All Tokens Matter: Token Labeling for Training Better Vision Transformers official implementation&#xff1a;https://github.com/zihangJiang/TokenLabeling 出发点 ViTs的局限性&#xff1a;尽管ViTs在捕捉长距离依赖方面表现出色&#xff0c; 但…

永远向有结果的人学习!

生活是一场漫长的旅程&#xff0c;充满了挑战和机遇。在这个过程中&#xff0c;我们不断地学习、成长&#xff0c;并从他人的经验中汲取智慧。今天&#xff0c;我想和大家分享一个重要的生活哲学&#xff1a;永远向有结果的人学习。 1. 敢于顶撞与撒野 我依旧敢和生活顶撞&am…

第二篇 Vue项目的搭建

1、脚手架安装 npm init vuelatest&#xff1a;官方提供的Vue项目脚手架工具&#xff0c;帮助我们搭建一个最简单的vue应用。 2、vs打开项目文件夹 打开脚手架生成的文件夹到vs并安装volar插件&#xff0c;以便vs能够支持vue格式代码 3、启动项目 npm run dev&#xff1a;vu…

国产麒麟、UOS在线打开pdf加盖印章

PageOffice支持两种电子印章方案&#xff0c;可实现对Word、Excel、PDF文档加盖PageOffice自带印章或ZoomSeal电子印章&#xff08;全方位保护、防篡改、防伪造&#xff09;。Word和Excel的盖章功能请参考&#xff1a;Word和Excel加盖印章和签字功能 &#xff08;目前只支持win…

Java实现简易线程池

一.线程池的概念 创建Java线程需要给线程分配堆栈内存以及初始化内存&#xff0c;还需要进行系统调用&#xff0c;频繁地创建和销毁线程会大大降低系统的运行效率&#xff0c;采用线程池来管理线程有以下好处&#xff1a; 提升性能&#xff1a;线程池能独立负责线程的创建、维…

css - - - - - 去除图片默认的白色背景(混合模式 mix-blend-mode)

去除图片默认的白色背景&#xff08;mix-blend-mode&#xff09; 1. 需求描述2. 原图展示3. 原代码展示4. 使用混合模式(mix-blend-mode)5.修改后效果 1. 需求描述 图片含有白色地图&#xff0c;想要将其去掉 2. 原图展示 3. 原代码展示 <div><img src*****/> &…

现场可重构CPLD芯片应用案例—蓝牙音箱

我司英尚微提供的高性能数模混合现场可重构IC、通用可配置的模数混合芯片内部集成丰富的模拟资源和数字资源&#xff0c;可轻松替代电路中的各种标准器件&#xff0c;并按照客户要求组合成最优小型ASIC&#xff0c;缩短开发周期&#xff0c;降低成本。下面介绍LS98002现场可重构…

【Windows】操作系统之任务管理器(第一篇)

一、操作系统简介 Windows操作系统是由微软公司&#xff08;Microsoft&#xff09;开发的一款图形操作系统&#xff0c;它以其强大的功能和广泛的用户基础&#xff0c;成为了目前世界上用户使用最多、兼容性最强的操作系统之一。以下是关于Windows操作系统的详细介绍&#xff…

vue3前端开发-小兔鲜项目-人气推荐栏目的前端渲染

vue3前端开发-小兔鲜项目-人气推荐栏目的前端渲染&#xff01;今天和大家分享一下&#xff0c;人气推荐栏目的前端页面如何渲染内容。 经历过上一次的&#xff0c;新鲜好物的栏目渲染之后&#xff0c;我们已经熟练了&#xff0c;vue3的接口调用&#xff0c;数据渲染到页面中的整…

golang开发环境搭建与踩坑记录

文章目录 一、安装下载1、go环境2、ide 二、基本使用1、运行2、结构体与方法函数指针3、闭包4、指针5、map6、接口7、异常 三、包管理1、go mod语法2、项目下载所有依赖 一、安装下载 1、go环境 下载地址&#xff1a;https://go.dev/dl/ 或者&#xff1a;https://golang.goog…

python的with语句

1.with语句的作用 在 Python 中&#xff0c;with 语句用于创建一个上下文管理器&#xff0c;以更简洁和安全的方式管理资源。 其主要优点是可以确保在代码块执行完毕后&#xff0c;相关资源能够被正确释放或清理&#xff0c;即使在代码块内部发生了异常。 以下是一个使用 with…

【动态规划】力扣2266.统计打字方案数

Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。在这里插入图片描述 为了 打出 一个字母&#xff0c;Alice 需要 按 对应字母 i 次&#xff0c;i 是该字母在这个按键上所处的位置。 比方说&#xff0c;为了按出字母 ‘s’ &#xff0c;Alice 需要按 ‘7’ 四次。…

LLM推理需要占用多少显存

搬运&#xff1a; AI开发者de频道&#xff1a;专题文章显示

c++一句话求前缀和,不用循环

partial_sum 是 C 标准库中的一个函数&#xff0c;用于计算给定范围内元素的部分和。它接受三个参数&#xff1a; 起始迭代器&#xff08;包含在计算范围内的第一个元素&#xff09;结束迭代器&#xff08;不包含在计算范围内的最后一个元素&#xff09;输出迭代器&#xff08…

DP-适配器模式代码重新理解

package com.designpatterns.adapter;/*** 定义鸭子接口*/ public interface Duck {/*** 定义鸭子呱呱叫(quack)*/public void quack();public void fly(); }package com.designpatterns.adapter;/*** 实现一个绿头鸭*/ public class MallarDuck implements Duck{Overridepubl…