【Linux】进程优先级进程切换

news2024/12/28 20:29:08

索引

  • ➡️进程优先级
    • 1.什么叫做优先级
    • 2.为什么会存在优先级
    • 3.看看Linux怎么做的
    • 4.查看进程优先级的命令
  • 😊进程的一些特性
  • ➡️进程切换

➡️进程优先级

1.什么叫做优先级

优先级和权限有些区别,权限决定能还是不能,优先级的前提是能,接下来是先做还是后做的问题。在计算机中来看也就是先还是后获得一些资源的问题。cpu资源分配的先后顺序,就是指进程的优先级(priority)。 优先级高的进程有优先执行权利。配置进程优先级对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

2.为什么会存在优先级

原因就是因为计算机中的资源相对于要访问它们的进程来说太少了,大家都想争这些个资源,所以才会有进程优先级来确定谁先谁后。

3.看看Linux怎么做的

优先级本质就是PCB里面的一个整数数字。

ps -la

在这里插入图片描述
PRI就是优先级英文priority的前三个字母
NI就是nice的前两个字母

Linux支持进程运行中进行优先级调整,调整的策略就是更改nice值完成。
一般对于Linux来讲priority数字越小优先级越高

nice表示进程可被执行的优先级的修正数值。

Linux的最终优先级=老的优先级(一般默认是80)+nice

当nice值为负值的时候,那么该程序优先级值将变小,即其优先级会变高,则其越快被执行。

nice的取值范围是-20至19,一共40个级别,当然如果你设置的nice值大于19或者小于-20的话默认这个范围也不会改变,小于-20的都当-20处理,大于19的都当19处理。

需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。可以理解nice值是进程优先级的修正修正数据。

4.查看进程优先级的命令

用top命令更改已存在进程的nice:

sudo top

1️⃣进入top后按“r”
在这里插入图片描述
2️⃣输入进程PID,输入想要改变的nice值(-20~19)
3️⃣注意:输入的时候不能在小键盘区输入,只能在主键盘区上输入数字。
在这里插入图片描述
最后就改变priority的值啦。

😊进程的一些特性

➡️竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级
➡️独立性: 多进程运行,需要独享各种资源,多进程运行期间进程运行的这个动作互不干扰,就好比父子进程,父进程先退了,我子进程依然运行;子进程先退了,父进程也依然运行。
➡️并行: 一般一个CPU只能运行一个程序,多个进程在多个CPU下分别,同时进行运行,这称之为并行。
➡️并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
对于并发的解释:一个进程如果拥有了CPU开始执行代码的时候不是这个进程在CPU上跑完了它才能够才能被从CPU上拿下来,当代计算机它采用的叫做时间片轮转的策略也就是说不管你这个进程未来执行完要花多长时间,反正我只给你比如说10毫秒的时间让你占用CPU,只要时间到了,那么这个进程必须得被操作系统从CPU上剥离下来,放在运行队列里,在运行队列的尾部再继续重新排队,等CPU再重新调度其他进程。其中多进程在同一个CPU下,我们采用进程不断的切换的方式就可以让我们的一个系统内的一个单CPU的计算机在一个时间段内可以同时让多个进程的代码得以推进的这种现象我们称之为并发。所以给我们宏观上是一个CPU在执行多个进程。

➡️进程切换

  • 我们都知道CPU永远在做着三件事情:第一取指令,第二分析指令,第三执行指令。

  • 它内部有各种各样的寄存器,其中有一个叫做pc的寄存器,pc叫做程序计数器或者pc指针:里面存放着当前正在执行指令的下一条指令的地址。

  • 当我们的进程在运行的时候一定会产生非常多的临时数据,这份数据属于当前进程。CPU内部虽然只有一套寄存器硬件但是寄存器里面保存的数据是属于当前进程的。

  • 进程在运行的时候占有CPU进程并不是一直要占有到进程结束。 进程在运行的时候都有自己的时间片,具体和上述的并发类似,这里不过多赘述。

  • 进程在切换的时候要进行进程的上下文保护,当进程在恢复运行的时候要进行上下文的恢复。

  • 在任何时候CPU里面的寄存器的数据看起来是大家都能访问到,但是寄存器内的数据只属于当前运行的进程,寄存器被所有进程共享,寄存器内的数据却是每个进程各自私有的。
    在这里插入图片描述

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

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

相关文章

计算机存储器之逻辑地址和物理地址转换详解

文章目录1 概述2 转换2.1 逻辑地址 to 物理地址2.2 物理地址 to 逻辑地址3 扩展3.1 在线进制转换1 概述 #mermaid-svg-zTbJ3rKuirwBssRU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zTbJ3rKuirwBssRU .error-ico…

Zookeeper-全面详解(学习总结---从入门到深化)

目录 Zookeeper概念_集中式到分布式 单机架构 集群架构 什么是分布式 三者区别 Zookeeper概念_CAP定理 分区容错性 一致性 可用性 一致性和可用性的矛盾 Zookeeper概念_什么是Zookeeper 分布式架构 Zookeeper从何而来 Zookeeper介绍 Zookeeper概念_应用场景 数据发布/订阅 实…

vue框架常用的组件库:Element、vant4地址

这些组件库也只能解决UI问题,真正的业务还需要自己去写 pc端:Element:Element - The worlds most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.io…

【成都信息工程大学】2022-807C语言程序设计

(因为考研时间将近,所以没有将其书写的形式展示,这字稍微有点丑,请见谅!!) 算法流程图:先叙述程序设计思想,再画出程序流程图,不需要给出代码。 1.选择排序…

python教程:12种列表常用操作方法

都是基础知识,长久不用就会忘,温故知新,又来学习学习。相信很多人在编程的或者对一些程序处理的思维会用到,比如面试 (有写的不对的地方也请大家指正~ 一、列表定义 列表是一个有序且可更改的集合。在Pyth…

计算机视觉之单发多框检测(Single Shot MultiBox Detector)模型《3》

有了前面两节的背景知识,我们来构造一个目标检测模型,就是来自Wei Liu大神之作的SSD了,有兴趣的可以查阅论文:SSD: Single Shot MultiBox Detector 计算机视觉之目标检测(object detection)《1》https://blog.csdn.net/weixin_41…

[附源码]Python计算机毕业设计Django招聘系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

C#语言实例源码系列-实现图片合成功能

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

关于质量分析

背景 在日常工作过程中,作为测试,我们要及时反思总结历史出现的问题,以便于对日常的工作流程规范以及质量防护措施作出相应的调整作为下属,我们要定期的向上级反馈近期的产品质量情况基于以上的背景,我们需要定期对产…

java简单做一个消费者/生产者案例

首先 我们创建一个包 在包下创建 四个类 首先是奶箱类 milkBox 在业务中充当数据的存储类 参考代码如下 public class milkBox {private int milk;public void put (int milk){this.milk milk;System.out.println("送奶工将第"this.milk"瓶奶放入奶箱");…

华为是如何从0到1打造以项目为中心运作的项目管理体系的?

本文介绍了华为公司打破传统的功能型组织结构,从弱矩阵项目管理向强矩阵转变的历程。 内容包括如何全面铺设项目管理组织,转向“以项目为中心”。同时,通过一系列的政策、标准和规定统一项目管理语言,建设项目管理流程体系。 其…

Servlet与表单数据交互(如文本框、单选按钮、复选框、下拉列表等)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

基于遗传算法解决TSP问题(Matlab代码实现)

目录 1 概述 2 运行结果 3 Matlab代码实现 4 结语 5 参考文献 1 概述 旅行商问题是一个经典的路径规划问题,传统TSP假设客户位置和客户之间旅行时间是固定不变的,而在现实生活中交通状况和客户要求可能会随着时间而改变,为了找到最经济的…

(附源码)ssm教育机构管理系统 毕业设计 010224

ssm教育机构管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设…

被AI包裹的冬天,智慧供热打破城市供热的“不可能三角”

最近很多城市都迎来了今冬以来的最强寒潮,在拉尼娜事件的影响下,一个格外寒冷的冬天似乎不可避免。而每次降温,有暖气的北方城市就会引来网络上一片艳羡之声。前不久网络上就流传着一个段子“南方人的命也是命,请给南方装暖气 ”&…

自定义jdk镜像

启动虚拟机,进入centos 1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件 #创建镜像目录 mkdir –p /javaxl_docker/jdk #安装lrzsz命令 yum install lrzsz -y #选择文件进行上传 rz # 注意d是大写 touch Dockerfile 2.编写 Dockerfile 文件 #1.指定基…

使用C++实现Windows和Linux的Flutter文档扫描插件

文档扫描应用大都是移动应用。结合手机摄像头可以实现文档拍摄,边缘检测,自动剪裁,透视矫正,滤镜等功能。但是桌面办公也少不了文档处理。这里分享下如何使用Dynamsoft Document Normalizer C SDK实现用于桌面文档处理的Flutter插…

抖音最新版抓包方案,修改so绕过ssl

dy过ssl charles抓包 及xposed的justtrustme安装到手机上只能过系统的ssl。 抖音写了一个非系统的ssl所以需要反编译so来处理。 第一步,charles 我用的是magisk手机,先重charles把证书下载到pc端 选项1,安装证书到本地 选项2&#xff0c…

Android桌面图标快捷方式

一、背景 长按桌面图标实现快捷方式最早是iOS提供的功能,而Android最早在Android 7.1版本也提供了对这方面的支持,于是在短时间内,像微信,支付宝,头条等流量级应用都提供了这方面的支持,如下图。 现在,长按桌面图标快捷方式已经是很成熟的功能,实现上也比较简单,主…

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2011:RESCAL【双线性模型的开山之作】【把每个关系对应的邻接矩阵进行了矩阵的分解】

【paper】 A Three-Way Model for Collective Learning on Multi-Relational Data 【简介】 这篇文章应该算是双线性模型的开山之作。是德国的一个团队发表在 ICML 2011 上的工作,比较老了,主要思想是三维张量分解。 想研究啥,啥就很重要 Re…