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

这篇具有很好参考价值的文章主要介绍了操作系统(一):进程状态与进程调度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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


文章目录

前言

一、进程基础

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)

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

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

 

调度方式:抢占式调度

使用场景:进程调度

优缺点

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

总结

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

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

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

如果博文内容有误,也欢迎各位大佬在下方评论区批评指正!!!文章来源地址https://www.toymoban.com/news/detail-745321.html

到了这里,关于操作系统(一):进程状态与进程调度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 操作系统实验(进程调度)

      1.1理解有关进程控制块、进程队列的概念。   1.2掌握进程优先权调度算法和时间片轮转调度算法的处理逻辑。   2.1设计进程控制块PCB的结构,分别适用于优先权调度算法和时间片轮转调度算法。   2.2建立进程就绪队列。   2.3编制两种进程调度算法:优先权调度

    2024年02月06日
    浏览(47)
  • 【操作系统核心概念】进程管理和进程调度

    本文主要讲的是操作系统的一些核心概念, 主要讲解 进程管理和进程调度 的问题, 当然学习完本篇并不会让你能从零打造一个操作系统, 而只是让读者有了对操作系统核心概念的基本认识. 关注收藏, 开始学习吧🧐 操作系统是一组做计算机资源管理的软件的统称 , 其本质上也

    2024年02月12日
    浏览(62)
  • 操作系统-进程调度实验报告

    1.实现四种不同及进程调度算法: 先来先服务、时间片轮转调、优先级调度以及短作业优先调度算法。 2.通过实验理解有关进程控制块,进程队列等的概念。 1.运行素材中的代码,观察其执行结果是否正确?各个调度算法的功能是否完善?如果没有,则完善。 2. 按照下表

    2024年02月06日
    浏览(43)
  • 「 操作系统 」聊聊进程调度算法

    图文并茂!谈谈进程调度那些算法 Cone 进程调度/页面置换/磁盘调度算法 xiaolinCoding 图解经典的进程调度算法 飞天小牛肉 进程调度算法是操作系统中非常重要的一部分,它决定了操作系统中各个进程的执行顺序和时间片。在单核CPU下,任何时刻都只可能有一个程序在执行,比

    2024年02月04日
    浏览(59)
  • 【操作系统之进程调度算法习题】

    在一个具有三道作业的批处理系统中,作业调度采用先来先服务(FCFS) 调度算法,进程调度采用 短作业优先调度算法。现有如下所示的作业序列, 注意 1.具有三道作业的批处理系统指的是内存最多能有3个作业; 2.表格样式是考试时候的格式,练习时候也按这个格式练习各作业的周

    2024年02月11日
    浏览(46)
  • 操作系统课程设计进程调度模拟

    程序下载链接:https://download.csdn.net/download/m0_56241309/86945709 进程调度模拟 摘要 :进程调度是操作系统中必不可少的一种调度,在3中OS中都无一例外地配置了进程调度。此外,它也是对系统性能影响最大的一种处理机调度,在操作系统中具有十分重要的地位。本次模拟,旨在全

    2024年02月08日
    浏览(42)
  • 操作系统实验—进程调度算法(java)

    目录 文章目录 前言 一、实验原理 二、实验步骤 1.创建PCB类 2.创建创建类 3.设计主窗口类 4.调度界面函数 5.算法类及其调度算法通用函数 6.进程调度算法函数 总结 操作系统实验1:进程调度算法,步骤3、4在一个类中,步骤5、6在一个类中。 (1)先到先服务调度算法:按照进程提

    2024年02月04日
    浏览(49)
  • 【操作系统】聊聊进程是如何调度的

    进程的引入是为了让操作系统可以同时执行不同的任务。而进程从创建到销毁也就对应不同的状态,进程状态,本质上就是为了用有限的计算机资源合理且高效地完成更多的任务 而不同的任务如何进行合理的分配,被CPU执行,其实就是不同的调度算法。 考虑到不同任务的耗

    2024年02月09日
    浏览(51)
  • 计算机操作系统实验:进程调度实验

    前言 二、实验目的 三、实验要求 四、实验原理 五、实验过程 六、代码详解 总结 计算机操作系统是管理计算机硬件和软件资源的核心软件,它负责为用户提供一个友好、高效、安全的使用环境。进程调度是操作系统的一个重要功能,它决定了进程在处理器上的执行顺序和时

    2024年02月07日
    浏览(57)
  • 【操作系统】期末速成之计算题:进程调度算法

    先来先服务是非抢占式的算法 一个🌰 例题:各进程到达就绪队列的时间、需要的运行时间如下表所示。使用先来先服务调度算法,计算各进程的等待时间、平均等待时间、周转时间、平均周转时间、带权周转时间、平均带权周转时间。 进程 到达时间 运行时间 P1 0 7 P2 2 4

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包