2.2 (1) 处理机调度

news2024/9/21 16:46:02

文章目录

  • 处理机调度概念
  • 处理机调度层次
    • 高级调度(作业调度)
    • 中级调度(内存调度)
    • 低级调度(进程调度/处理机调度)
    • 三层调度的联系对比
  • 进程调度的时机
    • 需要进行进程调度与切换的情况
    • 不能进行进程调度与切换的情况
  • 进程调度的方式
    • 非剥夺调度方式(非抢占调度方式)
    • 剥夺调度方式(抢占调度方式)
  • 进程的切换与过程
    • 狭义的“进程调度”与“进程切换”的区别
    • 切换过程
    • 重要结论
  • 调度程序(调度器)
    • 调度程序的作用
    • 触发”调度程序“的时机
  • 闲逛进程

处理机调度概念

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

在多道程序系统中,进程的数量往往多于处理机的个数,因此进程争用处理机的情况在所难免

处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效的原则)选择一个进程并将处理机分配给它运行,以实现进程并发地执行

处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题。

处理机调度层次

高级调度(作业调度)

作业:一个具体的任务

按照一定的原则从外存上处于后备队列的作业中挑选一个(或多个),给它(们)分配内存、 输入/输出设备等必要的资源,并建立相应的进程,以使它(们)获得竞争处理机的权利(简化理解:有好几个程序需要启动,到底先启动哪一个)

作业调度就是内存与辅存之间的调度。每个作业只调入一次、调出一次,作业调入时会建立PCB,调出时才撤销PCB

多道批处理系统中大多配有作业调度,而其他系统中通常不需要配置作业调度

中级调度(内存调度)

内存不够时,可将某些进程的数据调出外存,等内存有空闲或者进程需要运行时再重新调入内存

暂时调到外存等待的进程状态为挂起状态,被挂起的进程PCB会被组织成挂起队列

中级调度(内存调度)就是按照某种策略决定将哪个处于挂起状态的进程重新调入内存

低级调度(进程调度/处理机调度)

按照某种算法从就绪队列中选取一个进程,将处理机分配给它

进程调度是最基本的一种调度,在各种操作系统中都必须配置这级调度

进程调度的频率很高,一般几十毫秒一次

三层调度的联系对比

要做什么调度发生在…发生频率对进程状态的影响
高级调度(作业调度)按照某种规则,从后备队列中选择合适的作业将其调入内存,并为其创建进程外存→内存 (面向作业)最低无→创建态→就绪态
中级调度(内存调度)按照某种规则,从挂起队列中选择合适的进程将其数据调回内存外存→内存 (面向进程)中等挂起态→就绪态 (阻塞挂起→阻塞态)
低级调度(进程调度)按照某种规则,从就绪队列中选择一个进程为其分配处理机内存→CPU最高就绪态→运行态

进程调度的时机

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

需要进行进程调度与切换的情况

  • 当前运行的进程主动放弃处理机
    • 进程正常终止
    • 运行过程中发生异常而终止
    • 进程主动请求阻塞(如等待I/O)
  • 当前运行的进程被动放弃处理机
    • 分给进程的时间片用完
    • 有更紧急的事需要处理(如I/O中断)
    • 有更高优先级的进程进入就绪队列

不能进行进程调度与切换的情况

  1. 处理中断的过程中

    中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换

  2. 进程在操作系统内核程序临界区

    注意:“进程处于临界区时不能进行处理机调度”的说法是错误

    临界资源:一个时间段内只允许一个进程使用的资源,各进程需要互斥地访问临界资源
    临界区:访问临界资源的那段代码

  3. 原子操作过程中(原语)

    原子操作不可中断,要一气呵成(如之前讲过的修改PCB中进程状态标志,并把PCB放到相应队列)

进程调度的方式

非剥夺调度方式(非抢占调度方式)

非剥夺调度方式即只允许进程主动放弃处理机

当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程运行完成或发生某种事件而进入阻塞态时,才把处理机分配给其他进程

特点:实现简单、系统开销小,无法及时处理紧急任务,适用于早期的批处理系统

剥夺调度方式(抢占调度方式)

当一个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要使用处理机,则允许调度程序根据某种原则去暂停正在执行的进程, 将处理机分配给这个更为重要或紧迫的进程

特点:可以优先处理紧急任务,也可实现让各进程按时间片轮流执行的功能,适用于分时操作系统和实时操作系统

进程的切换与过程

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

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

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

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

切换过程

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

  2. 对新的进程各种数据的恢复

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

重要结论

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

调度程序(调度器)

调度程序的作用

用于调度和分派CPU的组件称为调度程序

在这里插入图片描述

上图是进程的三个状态及不同状态之间的转换,其中 ② ③ 状态的转换就是由调度程序引起的

操作系统的调度程序要决定:①让谁运行(由调度算法决定),②运行多长时间(由时间片大小决定) 两件事情

触发”调度程序“的时机

  • 创建新进程
  • 进程退出
  • 运行进程阻塞
  • I/O中断发生(可能唤醒某些阻塞进程)
  • 非抢占式)调度策略,只有运行进程阻塞或退出才触发调度程序工作
  • 抢古式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作

闲逛进程

在进程切换时,如果系统中没有就绪进程,就会调度闲逛进程(idle)运行,如果没有其他进程就绪,该进程就一直运行,并在执行过程中测试中断

闲逛进程的优先级最低,没有就绪进程时才会运行闲逛进程,只要有进程就绪,就会立即让出处理机

闲逛进程不需要CPU之外的资源,它不会被阻塞


【计算机操作系统】 专栏的文章 均有参考 《王道计算机考研 操作系统》 课程视频

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

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

相关文章

【Linux学习】文件系统 - 第一篇

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 📕文章目录 📚基础知识铺垫🍑重新使用C语言文件接口---对比重定向🎈fopen函数&#x1f30f…

[云原生]三、Kubernetes(1.18)

主要内容: 1、kubernetes 简介 2、kubernetes 集群搭建  方式搭建  二进制方式搭建 3、 kubeadm kubernetes 核心技术  YAML 文件详解  kubectl 命令工具  Pod  Label  Controller 控制器 …

node.js使用NodeMachineID 生成唯一UUID和注意事项

node-machine-id用于获取或生成唯一的机器ID 如何使用 const { machineId, machineIdSync } require(node-machine-id) JSON.stringify(machineIdSync({original: true})) ;方法: machineIdSync 此函数同步获取操作系统本机UUID/GUID,默认情况下进行哈…

深入理解 ReLU 激活函数及其在深度学习中的应用【激活函数、Sigmoid、Tanh】

ReLU(Rectified Linear Unit)激活函数 ReLU(Rectified Linear Unit)激活函数是一种广泛应用于神经网络中的非线性激活函数。其公式如下: ReLU ( x ) max ⁡ ( 0 , x ) \text{ReLU}(x) \max(0, x) ReLU(x)max(0,x) 在…

嵌入式Linux系统中pinictrl框架基本实现

1. 回顾Pinctrl的三大作用 记住pinctrl的三大作用,有助于理解所涉及的数据结构: * 引脚枚举与命名(Enumerating and naming) * 单个引脚 * 各组引脚 * 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能 * 引脚配置(Configuration):比如上拉、下拉、open drain、驱…

Java中的五种线程池类型

Java中的五种线程池类型 1. CachedThreadPool (有缓冲的线程池)2. FixedThreadPool (固定大小的线程池)3. ScheduledThreadPool(计划线程池)4. SingleThreadExecutor (单线程线程池&#xff09…

CTFHUB-SSRF-DNS重绑定 Bypass

开启题目,页面空白,访问附件 附件是一个知乎的文章,翻到下面点击文中这个链接 跳转之后,进行设置 把得到的链接拼接到题目的后面进行访问,然后得到了本题的 flag

Leetcode3226. 使两个整数相等的位更改次数

Every day a Leetcode 题目来源:3226. 使两个整数相等的位更改次数 解法1:位运算 从集合的角度理解,k 必须是 n 的子集。如果不是,返回 −1。怎么用位运算判断,见上面的文章链接。 如果 k 是 n 的子集,…

Windows Batch Linux Shell

windows上使用unix,Linux的unix工具对应的windows的可执行exe程序,对于本来的windows用户也可以使用这些工具提高工作效率,特别地在windows的批处理中使用这些命令很方便 二 工具列表 agrep.exe ansi2knr.exe basename.exe bc.exe bison.exe…

图像生成技术的颠覆性进展——从GAN到Aura SR V2

欢迎来到我们的科技专栏!最近,文本到图像合成技术的成功引起了全球的轰动,激发了公众的无限想象力。从技术角度看,这也标志着在设计生成图像模型的架构上发生了巨大的变化。曾经,生成对抗网络(GANs&#xf…

【Material-UI】详解安装指南

文章目录 一、默认安装1.1 Peer Dependencies 二、使用styled-components三、Roboto字体3.1 使用Fontsource3.2 使用Google Web Fonts 四、图标4.1 使用Google Web Fonts 五、CDN安装六、总结 Material-UI是全球最受欢迎的React UI框架之一。它提供了丰富的组件和高度可定制的主…

CSDN 的 Markdown 编辑器图片居中对齐和设置图片大小的方法

图片对齐方式 加在文件格式后面 #pic_center #pic_left #pic_right例如: 居中对齐 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eb16b0a5bc414b9888ab73f3c74a8acb.png#pic_center)左对齐 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direc…

AI答题应用平台相关面试题

目录 1、请介绍整个系统后端的架构设计,有哪些模块以及各模块之间的关系? 2、你在项目中是如何设计库表的?可以从字段、索引、关联等方面回答。 3、为什么使用策略模式来封装不同的应用评分算法?它有哪些好处?具体如…

Elasticsearch 的DSL查询,聚合查询与多维度数据统计

文章目录 搜索聚合高阶概念 搜索 即从一个索引下按照特定的字段或关键词搜索出符合用户预期的一个或者一堆cocument,然后根据文档的相关度得分,在返回的结果集里并根据得分对这些文档进行一定的排序。 聚合 根据业务需求,对文档中的某个或…

【源码+文档+调试讲解】营业厅宽带系统设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

Action部署在线上写文章

原文:https://blog.c12th.cn/archives/32.html 前言 之前分别出了 Hexo 和 Hugo 的 Action搭建教程,相当于伪动态,可以在线上写文章了;不过对于喜欢魔改的同学就不太友好了qwq 教程 github.dev 确保在配置过程中能访问Github &…

学工系统学生家庭情况登记功能概述

智慧校园学工系统中的“学生家庭情况”模块主要用于收集和管理学生的家庭背景信息,以便学校更好地了解学生的情况,并据此提供相应的支持和服务。该模块通常包括以下几个方面: 基本信息录入:支持录入学生的家庭成员信息&#xff0c…

ocaml精解【1】

文章目录 概述简介一、基本概述二、开发工具三、语言特性四、应用场景五、未来展望 windows下安装基础 参考文献 概述 简介 OCaml(Objective Caml)是Caml编程语言的主要实现,由Xavier Leroy、Jrme Vouillon、Damien Doligez、Didier Rmy等人…

一款免费强大的电脑锁屏工具,中文绿色免安装

这款软件主要特点是锁屏后不显示密码输入框,直接输入密码即可解锁。 ScreenBlur是一款功能强大的电脑屏幕锁软件,主要用于保护用户的隐私和数据安全。该软件的主要功能包括自动锁屏、隐藏桌面、加密锁机等。 功能特点 自动锁屏:用户可以设…

C语言之unsigned long long与struct相互转换实例(五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…