操作系统(一):进程状态与进程调度

news2024/11/26 16:43:01

前言

        操作系统作为计算机基础的四大件,系统学习无疑是十分重要的。在这个系列的文章中,荔枝会结合操作系统的知识进行归纳梳理,总结输出博文!下面这篇文章主要介绍的是进程状态和调度,重点是几种调度算法的理解和掌握,希望对正在学习的小伙伴有帮助~~~


文章目录

前言

一、进程基础

1.1 基本概念

1.2 进程与线程之间的关系

二、进程控制

2.1 原语

2.2 进程状态 

2.2.1 进程的五种状态 

2.2.2 七种进程状态

2.2.3 阻塞和挂起区别

三、进程调度

3.1 进程的调度层次

3.2 进程的调度时机

3.3 进程的调度过程

3.4 调度算法指标

3.5 六种进程调度算法 

3.5.1 先来先服务FCFS(First Come First Served)

3.5.2 短作业优先SJF(Shortest Job First)

3.5.3 高响应比优先调度HRRN(Highest Response Ratio Next)

3.5.4 优先级调度PSA(Priority-Scheduling AIgorithm)

3.5.5 时间片轮转调度RR(Round-Robin)

3.5.6 多级反馈队列调度MFQ(Multileveled Feedback Queue)

总结


一、进程基础

1.1 基本概念

进程,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的基本单位。

要点

  • 进程是程序的一次执行
  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  • 进程是程序在一个数据集合上运行的过程
  • 进程是系统进行资源分配和调度的一个基本单位

进程的结构

  • 控制块:PCB(Process Control Block),这是进程的唯一标识;
  • 数据段:数据段存放着原始数据、中间数据;
  • 程序段:程序段存放在文本区域,可被多个进程共享;

进程的特征

  • 动态性:进程从创建开始,从撤销结束
  • 并发性:多个进程可以同时运行
  • 独立性:进程中的资源是独立的
  • 异步性:不同的进程之间是相互独立、互不干扰的

1.2 进程与线程之间的关系

线程的概念

        Thread,进程的轻型实体,也叫“轻量级的进程”,是一系列活动按实现设定好的顺序依次执行的过程,是一系列指令的集合。线程是依赖于进程而存活的,不能单独存在,同时线程也是操作系统运算调度的最小单位。

区别

线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度。同时引入了线程明显提高了操作系统处理并发事务的能力。


二、进程控制

        进程控制指的是操作系统对进程实现有效的管理,包括创建新进程、撤销已有进程、挂起、阻塞、唤醒、进程切换等多种操作。操作系统主要是通过原语操作来实现进程控制。

2.1 原语

原语是一种特殊的原子操作指令集,由若干个指令组成,共同完成某个特定的功能。

原语特点 

  • 原语是原子操作的,要么全部成功,要么全部失败,执行过程不会被中断;
  • 在内核态下执行的,常驻内存; 
  • 是内核三大支撑功能(中断处理/时钟管理/原语操作)之一

进程状态转换相应操作的原语:

  • 创建原语:create
  • 阻塞原语:block
  • 唤醒原语:wakeup
  • 撤销原语:destroy 
  • 挂起原语:suspend
  • 激活原语:active

2.2 进程状态 

2.2.1 进程的五种状态 

进程在其声明周期中默认有五种状态:创建、就绪(等待)、执行、阻塞、结束。

2.2.2 七种进程状态

        我们知道计算机系统的存储分为内存和外存,而有些进程在整个系统向外提供服务的过程中,我们总是有这么一种需求将长时间不用调度的进程解除系统所有资源的占用,把这一部分的内存资源移到外存中存储,那么在OS中我们就可以执行挂起的操作。

2.2.3 阻塞和挂起区别

阻塞和挂起的状态主要区别在于对于系统资源的占用上、发生时机和恢复时机。

  • 对系统资源占用:当进程处于阻塞状态时,虽然释放了CPU,但它仍占用内存资源;而挂起状态的进程则通过“对换”技术被换出到外存(如磁盘)中,不占用内存资源
  • 发生时机:阻塞状态通常在进程等待某种资源(如IO资源、信号量)时出现,是一种被动行为;而挂起状态是由于系统或用户的需要而主动进行的行为,例如用户需要暂停程序以研究或修改程序,或者系统为了提高内存利用率需要将暂时不能运行的进程调出到磁盘。
  • 恢复时机:处于阻塞状态的进程只有在等待的资源得到满足(例如获得了锁)后,才会进入就绪状态,等待被调度执行;而被挂起的进程由将其挂起的对象(如用户、系统)在符合时机时(如调试结束、被调度进程选中需要重新执行)主动激活。

三、进程调度

        进程调度也被称为处理机调度,主要是操作系统OS根据一定的算法和原则将处理及资源进行重新分配的过程。操作系统需要进行进程调度的前提是我们需要的任务数(进程数) > 处理机数。在调度的时候我们必须考虑两点:满足特定系统用户的需求(快速响应);考虑系统整体效率即系统的平均周转时间和调度算法本身的开销。

目的:提高资源利用率,减少处理及空闲时间。

3.1 进程的调度层次

        进程的调度层次主要分为三层:高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)。其中进程调度是最基本的调度,主要功能是从就绪队列中选取进程分配给处理机。

3.2 进程的调度时机

处理机进行进程调度的时机一般是下面几种情况:

  • 进程运行完毕 | 时间片用完
  • 进程要求I/O操作
  • 执行某种原语操作
  • 高优先级进程申请运行(剥夺式调度)

3.3 进程的调度过程

进程调度过程会依次执行下面的过程:

  1. 保存镜像:记录进程现场信息
  2. 调度算法:确定进行资源调度的处理机调度原则
  3. 进程切换:分配处理机给其它进程
  4. 处理机的进程回收

3.4 调度算法指标

衡量进程调度算法的指标主要有:

  • CPU的利用率:忙碌时间/总时间
  • 系统的吞吐量:完成的作业数/总时间
  • 周转时间:作业完成时间-作业提交时间,其中带权周转时间=周转时间/实际运行时间
  • 等待时间:作业等待处理及调度的时间
  • 响应时间:请求提交到首次响应的间隔

3.5 六种进程调度算法 

        进程的调度算法主要是用在两种场景下:A在后备作业/就绪队列中对进程进行排序调度、B在内存中对进程进行调度。下面的六种算法前四种是属于A,后两种属于B。当然了前四中也可以用于A,只不过可能用的比较少而已。

3.5.1 先来先服务FCFS(First Come First Served)

FCFS算法思想比较简单,就是一个队列,先入先出,先到先得。也就是说先进入调度队列的进程先被执行。

调度方式:非抢占式调度

使用场景:作业 | 进程调度

优缺点

  • 算法简单,适用于CPU繁忙型的作业,可以有效利用CPU资源;
  • 不利于I/O繁忙型作业,会导致操作耗时。

3.5.2 短作业优先SJF(Shortest Job First)

短作业优先,顾名思义就是将所需服务最短的作业/进程优先执行,当然了这种时间估计并不是准确的,所以这种算法追求理想状态下最少的平均(带权)周转时间。

调度方式:SJF/SPF非抢占式调度、SRTN抢占式

使用场景:作业 | 进程调度

优缺点

  • 平均等待 / 周转时间最少
  • 对耗时长的作业不友好,容易带来饥饿问题;不能保证紧急任务被优先处理

SRTN:最短剩余时间优先算法。

3.5.3 高响应比优先调度HRRN(Highest Response Ratio Next)

结合FCFS和SJF,综合考虑等待时间和服务时间计算响应比,响应比高的优先调度,这种算法综合考虑了进程的等待时间和服务时间试图提出一种更好的调度算法。响应比的计算比较简单:响应比=(等待时间+服务时间) / 服务时间。

调度方式:非抢占式调度

使用场景:作业 | 进程调度

重点

  • 只有当前进程放弃执行权(完成 / 阻塞)时,重新计算所有进程的响应比
  • 缓解了长作业饥饿的问题,长作业等待时间越久就越容易获得CPU执行权。

3.5.4 优先级调度PSA(Priority-Scheduling AIgorithm)

优先级调度是按照进程的优先级,也就是任务的紧迫程度来进行调度。优先级调度有两种:剥夺式和非剥夺式,区别在于对于当前正在执行的作业,突然加入一个更高优先级的作业,是否会等到改作业执行完成后再抢占CPU。

调度方式:抢占式 | 非抢占式调度

使用场景:作业 | 进程调度

优先级设置原则

  • 系统进程优先级高于用户进程、交互型>非交互型、I/O型>计算型
  • 低优先级可能会导致饥饿

3.5.5 时间片轮转调度RR(Round-Robin)

时间片轮转的机制有点像计算机网络中的分时复用的模式,就绪队列会按照进程到达的顺序,轮流去分配一个时间片去执行,时间用完后就会剥夺该进程的使用权。这种按照时间片来均匀分配的机制确实可以使得进程再一定时间内都可以得到响应,从而不会导致某一些进程一直饥饿。

调度方式:抢占式调度,开启抢占的时间主要是由时钟中断来确定

使用场景:进程调度

优缺点

  • 公平,响应快,适合于分时系统
  • 时间片的影响因素:系统响应时间、就绪队列进程数量、系统处理能力
  • 时间片的设置要求比较难,太大就会退化FCFS;太小会导致处理机切换频繁而带来较大的开销

3.5.6 多级反馈队列调度MFQ(Multileveled Feedback Queue)

        多级反馈队列调度算法设计了多个按照优先级排序的就绪队列,对于多个队列按照优先级从高到低,时间片从小到大排序和级别划分。每个队列中的进程依旧是按照先到先得的原则被分配时间片,而对于新进程的加入默认会加在第一级别队列尾部,按照时间片轮转的机制来执行,若在当前时间片中没有执行完的会掉到下一级队列的尾部继续按照相同模式来执行。遵循的规则就是:前面的队列不为空,不执行后续的队列进程

 

调度方式:抢占式调度

使用场景:进程调度

优缺点

  • 对于各类型相对公平,快速响应
  • 终端型作业用户:短作业优先
  • 批处理作业用户:周转时间短
  • 长批处理作业用户:在前几个队列部分执行

总结

        简单了解进程的概念以及进程控制和调度这些基础的知识,荔枝无疑对操作系统有了初步的认知。需要注意的是,作业队列和进程调度的具体指代、几种进程状态的切换和区别这些均是面试重点关照的地方,希望在这篇文章荔枝有说清楚~~~

今朝已然成为过去,明日依然向往未来!我是荔枝,在技术成长之路上与您相伴~~~

如果博文对您有帮助的话,可以给荔枝一键三连嘿,您的支持和鼓励是荔枝最大的动力!

如果博文内容有误,也欢迎各位大佬在下方评论区批评指正!!!

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

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

相关文章

基于yolov2网络的人脸识别系统matlab仿真,包括识别正脸,侧脸等

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、训练阶段 4.2、预处理阶段 4.3、识别阶段 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................…

数据中心加密:保障数据安全的重要一环

随着信息化的快速发展,数据已经成为企业的重要资产,数据安全也成为了企业面临的重大挑战。数据中心作为企业数据存储和管理的重要场所,其安全性对于整个企业的数据安全具有至关重要的作用。而数据中心加密则是保障数据安全的重要一环。本文将…

15 款 PDF 编辑器帮助轻松编辑、合并PDF文档

PDF 编辑器在当今的数字环境中至关重要,因为 PDF 已成为共享和存储信息的首选格式。只需几分钟,可靠的 PDF 编辑器即可让用户能够根据其特定需求修改、定制和定制文档。在本文中,我们全面汇编了 15 款最佳免费 PDF 编辑器,让您可以…

1.性能优化

概述 今日目标: 性能优化的终极目标是什么压力测试压力测试的指标 性能优化的终极目标是什么 用户体验 产品设计(非技术) 系统性能(快,3秒不能更久了) 后端:RT,TPS,并发数 影响因素01:数据库读写,RPC&#xff…

详解 SpringMVC 的 HttpMessageConverter

文章目录 前言参考资料内容1、[RequestBody ](/RequestBody )2、RequestEntity3、[ResponseBody ](/ResponseBody )4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity 推荐读物 《Spring Boot微服务实战(第2版)》内容简介目录 前言 HttpMessag…

Vue3:解决基地址不同 数据交互http与https跨域问题

配置公共管理的api文件和vue.config.js可以解决跨域问题。一个项目对接不同的基地址和接口同理。 api export default {//接口基地址Millia: process.env.NODE_ENV development ? location.protocol // location.host /milliaApi : http://xx.xxx.xxxx/index.php/,Milli…

墨者学院 内部文件上传系统漏洞分析溯源

打开web页面&#xff1a; 是个文件上传&#xff0c;先随便上传一个 txt 文件并抓包&#xff1a; 木马文件&#xff1a; <%eval request ("123")%>发现是个 IIS&#xff0c;并且给了文件的上传路径 upload&#xff0c;那就尝试上传 asp 一句话&#xff0c;直接…

C 练习实例10 打印楼梯,同时在楼梯上方打印两个笑脸。

题目&#xff1a;打印楼梯&#xff0c;同时在楼梯上方打印两个笑脸。 程序分析&#xff1a;用 ASCII 1 来输出笑脸&#xff1b;用i控制行&#xff0c;j来控制列&#xff0c;j根据i的变化来控制输出黑方格的个数。 如果出现乱码情况请参考【C 练习实例7】的解决方法。 实例 …

Ribbon讲解

一&#xff1a;Ribbon是什么&#xff1f;

记住这个考勤小技巧,快速搞定煤矿员工管理!

人脸识别技术一直以来都是一项备受关注的研究领域。传统的二维人脸识别技术主要依赖于平面照片或视频图像&#xff0c;但这些方法受到光照、角度和遮挡等因素的干扰&#xff0c;容易出现误识别问题。 为了克服这些挑战&#xff0c;三维人脸识别技术应运而生&#xff0c;来捕获更…

iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境

文章目录 一、基础环境准备1.1、MacOS虚拟机 二、iPhone虚拟机三、MacOS虚拟机连接iphone真机四、扩展&&问题4.1、如果appium启动app失败&#xff0c;可能是appium driver没有安装xcuitest插件4.2、下载并安装Appium服务端&#xff0c;inspector元素定位器4.3、下载app…

YOLOv8-Seg改进:动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023

🚀🚀🚀本文改进:动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLOv8-Seg,与C2f结合实现二次创新 🚀🚀🚀Dynamic Snake Convolution亲测在番薯破损分割任务中,mask mAP@0.5 从原始的0.625提升至0.645 🚀🚀🚀YOLOv8-seg创新专…

数据库脚本执行工具

一、功能介绍 很多系统运行都依托数据库&#xff0c;不少IDE让开发实现快速开发的同时&#xff0c;也提供了方便快捷的打包工具。例如&#xff1a; Visual Studio集成的 Install Shield、Wix Toolkit; Android Studio 集成的 Gradle 等等&#xff0c;这些集成的打包工具&…

下载git步骤

文章目录 导文1.软件下载2.git安装3.测试git 导文 下载git的详细步骤 1.软件下载 可以自己去网上下载&#xff0c;根据自己电脑的系统类型是多少位的&#xff0c;去下载对应的安装包。 下载地址&#xff1a;Git - Downloads 根据自己的 操作系统进行选择&#xff0c;按需选择…

编码器类型说明

目录 光电编码器 磁性编码器 电容式编码器 对比优缺点 编码器在运动控制类产品中比较常见&#xff0c;旋转编码器都是组成运动控制反馈回路的关键元器件&#xff0c;包括工业自动化设备和过程控制、机器人技术、医疗设备、能源、航空航天等。 作为将机械运动转换为电信号的…

ChinaSoft 论坛巡礼 | 系统与网络安全论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

xv6实验课程--xv6的写时复制fork(2023)

7. xv6实验课程--xv6的写时拷贝(COW)(2021) 7. xv6实验课程--xv6懒惰分页分配&#xff08;lazy)(2020) 本文来源&#xff1a; https://mp.weixin.qq.com/s/XJkhjrlP232ZDsRyXd0oHQ 已完成的实验代码可以从下列网站获取&#xff1a; git clone https://gitee.com/lhwhit196…

【C语言基础教程】函数指针与指针大小

文章目录 前言一、函数指针1.1 函数指针的概念1.2 三个示例代码示例1: 使用函数指针调用不同的函数示例 2: 使用函数指针实现回调函数示例 3: 使用函数指针数组 二、指针的大小2.1 前述2.2 指针大小如何决定&#xff1f;两方面理解 总结 前言 在C语言中&#xff0c;指针是一项…

腾讯云香港服务器购买多少钱一年?288元

香港云服务器可以选择腾讯云香港地域的轻量应用服务器&#xff0c;轻量2核2G配置、20M峰值带宽、40G SSD系统盘&#xff0c;优惠价格24元一个月&#xff0c;Linux系统是288元一年&#xff0c;Windows系统是360元一年&#xff0c;腾讯云百科txybk.com分享腾讯云香港轻量应用服务…

Android打造一个高性能无限层级显示的树形控件(Android树形控件)

Android使用ListView实现一个高性能无限层级显示的树形控件&#xff1a; 最近公司的Android项目里有一个地方需要选择某公司的所有部门&#xff0c;因为手机屏幕有限所以并不能像网页那样显示树状结构&#xff0c;但是如果只是用列表依次显示所有的部门又会让用户很难找到想要…