我与Linux的爱恋:进程优先级|进程切换


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

🔥个人主页guoguoqiang. 🔥专栏Linux的学习

Alt

文章目录

  • 1.进程优先级
    • 1.什么是进程优先级?
    • 2.进程优先级的类型
    • 3.进程优先级的作用
    • 4.进程优先级的实现
    • 5.进程优先级的重要性
    • 6.查看系统进程
    • 7.修改进程优先级
    • 8.优先级调度原理
  • 进程切换

在这里插入图片描述

1.进程优先级

1.什么是进程优先级?

cpu资源分配的先后顺序,就是指进程的优先权(priority)。
优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整
体性能。

2.进程优先级的类型

进程优先级可以是静态的,也可以是动态的。静态优先级通常在进程创建时由用户或操作系统管理员设定,并且不会改变。动态优先级则可以根据进程的行为或系统状态自动调整。

静态优先级:在进程创建时由用户或操作系统管理员设置,通常使用整数值表示,数值越低表示优先级越高。

动态优先级:根据进程的运行情况自动调整,例如,一个进程如果长时间等待I/O操作,它的优先级可能会降低

3.进程优先级的作用

1.资源分配:操作系统通过进程优先级来决定哪些进程可以获得更多的CPU时间和其他资源。高优先级进程会优先执行,以确保系统的响应性和效率。

2.响应时间:在实时系统或对用户响应时间要求高的场景中,优先级管理能够确保关键任务得到及时处理。例如,交互式应用程序的优先级通常较高,以减少用户等待时间。

3.避免饥饿:适当的优先级调度可以防止低优先级进程长时间得不到执行,从而避免系统资源的饥饿状态。

4.系统性能:通过合理设置进程的优先级,操作系统可以优化整体性能,提高吞吐量,减少延迟,从而提升用户体验。

5.调度策略:不同的调度算法(如优先级调度、轮询调度等)依赖于进程优先级来决定执行顺序,影响系统的整体调度效率。

4.进程优先级的实现

进程优先级通常通过操作系统的调度器来实现,调度器会根据进程的优先级和其他因素(如进程状态、时间片等)来决定进程的执行顺序。

5.进程优先级的重要性

进程优先级在确保系统高效、稳定运行中起着关键作用。合理的优先级管理能够帮助操作系统在多任务环境中有效地分配资源,提升用户体验。

6.查看系统进程

在Linux或Unix系统中,可以使用ps -l命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。
UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值
在这里插入图片描述

7.修改进程优先级

修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,**数值越小,优先级越高。**可以使用nice和renice命令或通过top命令进行修改。
top命令进行修改
在这里插入图片描述
先按top 然后按r 输入进程pid 回车 然后再输入nice值
然后发现pid为19979的pri从80变成了90
renice命令
renice命令使用格式为:renice [nice值] -p [进程pid]
在这里插入图片描述

8.优先级调度原理

在这里插入图片描述
双140轮转队列
在这里插入图片描述

进程切换

进程切换(Process Switching),也称为上下文切换(Context Switching),是操作系统中的一个基本机制,它允许在单个处理器上快速高效地运行多个进程。进程切换是指操作系统保存当前运行进程的状态(上下文),并恢复另一个进程的状态以使其能够继续执行的过程。
进程切换的过程

保存当前进程的上下文:这包括将当前进程的寄存器值(如程序计数器、栈指针、通用寄存器等)保存到它的进程控制块(PCB)中。

选择另一个进程:操作系统调度器根据某种策略(如轮转调度、优先级调度等)选择下一个要执行的进程。

恢复新进程的上下文:将所选进程的寄存器值从其PCB中恢复到处理器中,以便该进程可以从中断点继续执行。

进程切换的原因
1.多任务处理:

操作系统需要在多个进程之间共享CPU资源,以实现并发执行。
2.I/O操作:

当一个进程执行I/O操作时(如读写文件、网络通信),它会被阻塞,操作系统会切换到其他进程以利用CPU资源。
3.时间片耗尽:

在时间共享系统中,进程被分配固定的CPU时间片,当时间片耗尽时,操作系统会切换到其他就绪进程。
4.优先级变化:

高优先级进程可能需要抢占低优先级进程的CPU,导致切换。
5.进程状态变化:

进程可能因为各种原因(如资源可用、事件发生)从阻塞状态变为就绪状态,这也会导致切换。
6.系统调用:

当进程发出系统调用请求时,操作系统需要切换上下文以处理中断或服务请求。

进程切换的代价
1.时间开销:

切换过程涉及保存和恢复进程状态,时间开销包括寄存器保存、程序计数器更新等,通常为微秒级。
上下文切换的复杂性:

操作系统需要管理多个进程的状态信息,这增加了系统的复杂性和管理开销。
2.CPU缓存失效:

切换进程时,新的进程可能需要访问不同的内存地址,导致CPU缓存失效,增加内存访问时间。
3.资源竞争:

切换过程可能会导致对共享资源的竞争,影响系统的整体性能。
4.调度算法的影响:

不同的调度算法对切换频率和时间的影响不同,某些算法可能导致频繁切换,从而增加系统开销。

优化进程切换

快速上下文切换:通过硬件支持来加速上下文切换的过程。

减少切换次数:通过改进调度算法,减少不必要的进程切换。

优先级继承:在某些情况下,为了避免频繁的上下文切换,可以采用优先级继承机制。

进程的切换,最重要的一件事情是:上下文数据的保护和恢复。
竞争与独立
竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高
效完成任务,更合理竞争相关资源,便具有了优先级
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
并行与并发
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行
并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发
进程抢占:

◉ 抢占式内核是一种操作系统调度策略,它允许操作系统强制将处理器从一个进程切换到另一个进程。当一个低优先级进程正在运行时,如果有一个高优先级进程准备好运行,操作系统会抢占低优先级进程的CPU时间,切换到高优先级进程。

关于进程的切换问题

计算机中的CPU内有大量的寄存器,它保存着正在执行的进程的临时数据。如果进程A正在被执行,CPU内的寄存器里面一定保存的是进程A的临时数据。寄存器中的临时数据,就叫做A的上下文

上下文数据不可以丢弃,由于计算机CPU数量小于进程数量,则当进程A暂时被切换下来的时候,进程A需要顺便带走自己的上下文数据。带走暂时保存的目的就是为了下次回来的时候,能恢复上去,就能继续按照之前的逻辑继续向后运行,就如同没有中断过一样。但如果没有保存上下文数据,进程A回来再执行时,就无法判断进程A原先执行到哪里了

注意:CPU内的寄存器只有一份,但是上下文可以有多份,分别对应不同的进程!!
在这里插入图片描述

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

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

相关文章

java踩坑

1.mybatis在idea可以正常运行,但是打jar包后,就报链接超时,可能是参数设置有问题,但是idea自动忽略了。 出问题的配置:(圈出来的地方乱码了,idea有纠错能力,它自动调整为正确的&…

【数据结构-差分】力扣1589. 所有排列中的最大和

有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] [starti, endi] 。第 i 个查询求 nums[starti] nums[starti 1] … nums[endi - 1] nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列…

React学习笔记(三)——React 组件通讯

1. 组件通讯-概念 了解组件通讯的意义 大致步骤: 知道组件的特点知道组件通讯意义 具体内容: 组件的特点 组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据在组件化过程中,通常会将一个完整的功能拆分成多…

影刀RPA实战:网页爬虫之苦瓜书籍数据

书籍常常被视为心灵的慰藉,因为它们能够在不同的层面上为人们提供支持和安慰。 1. 书籍对我们的重要性 书籍是人类知识的载体,也是智慧的结晶。它们不仅是学习的工具,更是人类心灵的慰藉。在忙碌的生活中,书籍能够提供知识、启发…

缓存穿透 问题(缓存空对象)

文章目录 1、缓存穿透2、缓存空对象3、AlbumInfoApiController --》getAlbumInfo()4、AlbumInfoServiceImpl --》getAlbumInfo()5、RedisConstant6、请求缓存不存在的数据 1、缓存穿透 缓存穿透带有恶意性,强调不存在的数据。 2、缓存空对象 3、AlbumInfoApiCont…

【PHP源码】匿名来信系统H5版本V1.0免费开源源码(含搭建教程)

你的匿名来信H5一封你的来信源码/表白祝福短信程序/往来信/传话短信源码支持邮件发信与手机短信发信“你的匿名来信”是最近某音上爆火的一个活动话题,可以通过H5网站,编辑自己想要对某人说的话或者祝福,网站会把您想说的发给您预留的号码&am…

云计算课程作业1

作业1 Xmanager连接 rhel连接 作业2 首先确认你的虚拟机设置的是NAT 1-3 然后打开这篇blog,并完成第一步和第二步 因为我们是NAT,所以不需要连接网桥,即跳过第三步,但是这里ping一下测试网络连接 2- 如果到这里你发现提示yum…

uniapp中使用echarts 完整步骤,包括报错以及解决方案

在我们日常可能会有小程序中要使用echarts,我今天总结了一下整个引入的步骤 首先echarts - DCloud 插件市场在插件市场里面导入进项目,我这边用的是vue3的以及主要开发小程序,就直接放我的案例了 按照上面的步骤,在样式部分这样…

详读西瓜书+南瓜书第3章——线性回归

在这里,我们来深入探讨线性模型的相关内容,这章涵盖了从基础线性回归到更复杂的分类任务模型。我们会逐步分析其数学公式和实际应用场景。 3.1 基本形式 线性模型的核心是通过属性的线性组合来预测结果。具体形式为: 其中,w 是…

JVM基础篇学习笔记

【注:本文章为自学笔记,仅供学习使用。】 一、JVM简介 JVM是Java虚拟机的缩写,本质上是运行在计算机上面的程序,作用是运行Java字节码文件。 1.1 JVM的功能 Java如果不做优化,则性能不如C/C,因为后者会…

上手一个RGBD深度相机:从原理到实践--ROS noetic+Astra S(中):RGB相机的标定和使用

前言 本教程涉及基础相机的原理,使用,标定,和读取。(注:本教程默认大家有ROS1基础,故不对程序进行详细解释) 上一期:[csdn博客]上手一个RGBD深度相机:从原理到实践–ROS noeticAstra S&#xf…

vue无法通过页面路径访问提示404,通过nginx配置处理

部署vue项目时,可以通过IP的方式访问主页,当进入特定页面在刷新时,因为浏览器通过URL地址进行请求,就提示404错误。 每次都需要重新从主页进入,这里是因为nginx配置的问题,在nginx里增加一行重定向的设置 …

mac命令行分卷压缩与合并

对当前目录内的文件压缩的同时分卷 //语法:zip -r -s 1m 压缩文件名.zip 当前路径 zip -r -s 1m split.zip . //解压 zip -s 0 split.zip --out unsplit.zip unzip unsplit.zip 将一个zip文件进行分卷 一个900k的压缩包名为hello.zip,将其分割为每500K一个zip zip - hello.…

usemeno和usecallback区别及使用场景

1. useMemo 用途: useMemo 用于缓存计算结果。它接受一个函数和依赖项数组,只有当依赖项发生变化时,才会重新计算该函数的返回值。否则,它会返回缓存的值。 返回值: useMemo 返回的是函数执行后的结果。 使用场景: 当一个计算量大的函数在每…

dev c++输出中文乱码解决 printf乱码解决

把编码换成utf8就行 打开eiditor options

SpringBoot实现OAuth客户端

背景 5 月份的时候,我实践并整理了一篇博客:SpringBoot搭建OAuth2,该博客完成之后,本以为能对OAuth2的认证机制更加清晰,但我却觉得自己更“迷惘”了。 抛开我在项目中积累的浅薄经验不谈,单从在网…

生信初学者教程(八):数据收集

文章目录 数据分布表达谱数据最终数据分布自动下载GSE14520下载GSE149614下载其它数据在确定研究疾病为肝细胞癌**(Liver Hepatocellular Carcinoma: HCC)**后,系统地进行了文献回顾,专注于搜索与HCC相关的荟萃分析文章,以获取该领域的研究动态和已有成果。为了支持的研究…

【专题】2024新能源企业“出海”系列之驶向中东、东南亚报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p37698 在“双碳”目标引领下,中国新能源产业近年迅猛发展,新能源企业凭借技术革新、政策支持与市场驱动实现快速增长,在产业链完备、技术领先、生产效能及成本控制等方面优势显著。面对国内外环境…

2024年“华为杯”研赛第二十一届中国研究生数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

PowerBI-l5-CALENDAR创建日期表

CALENDAR创建日期表 方法1 Table CALENDARAUTO() 方法2 自定义日期 Table CALENDAR(date(2021,6.20),date(2021,6.24))