当前位置: 首页 > article >正文

Linux--进程优先级

ok,今天我们来学习Linux中的进程

基本概念

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

查看系统进程

在linux或者unix系统中,⽤ ps ‒l 命令则会类似输出以下⼏个内容:

我们很容易注意到其中的⼏个重要信息,有下:

  • UID:代表执⾏者的⾝份
  • PID:代表这个进程的代号
  • PPID:代表这个进程是由哪个进程发展衍⽣⽽来的,亦即⽗进程的代号
  • PRI:代表这个进程可被执⾏的优先级,其值越⼩越早被执⾏
  • NI:代表这个进程的nice值

PRI and NI

  • PRI也还是⽐较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高
  • 那NI呢?就是我们所要说的nice值了,其表⽰进程可被执⾏的优先级的修正数值
  • PRI值越小越快被执行,那么加⼊nice值后,将会使得PRI变为:PRI(new) = PRI(old) + nice
  • 这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行
  • 所以,调整进程优先级,在Linux下,就是调整进程nice值
  • nice其取值范围是 -20⾄19,[-20,19] ⼀共40个级别,nice值禁止频繁修改。

PRI vs NI

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

查看进程优先级的命令

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

  • top
  • 进⼊top后按“r”‒>输⼊进程PID‒>输⼊nice值

注意:

  • 其他调整优先级的命令:nice,renice
  • 系统函数:

补充概念-竞争、独立、并行、并发

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

进程切换

CPU上下文切换:其实际含义是任务切换,或者CPU寄存器切换。当多任务内核决定运⾏另外的任务 时,它保存正在运⾏任务的当前状态,也就是CPU寄存器中的全部内容。这些内容被保存在任务⾃⼰的 堆栈中,⼊栈⼯作完成后就把下⼀个将要运行的任务的当前状况从该任务的栈中重新装入CPU寄存器, 并开始下⼀个任务的运行,这⼀过程就是 context  switch

参考⼀下Linux内核0.11代码

时间片:当代计算机都是分时操作系统,没有进程都有它合适的时间片(其实就是⼀个计数器)。时间片到达,进程就被操作系统从CPU中剥离下来。

进程退出

  • 1 代码不会再执行了---首先可以立即释放的就是进程对应的程序信息数据
  • 2 进程退出,要有退出信息(进程的退出码)保存在自己的task_struct内部
  • 3 管理结构stack_struct 必须被OS维护起来,方便用户未来进行获取进程的退出信息

少年没有乌托邦,心向远方自明朗!

如果这个博客对你有帮助,给博主一个免费的点赞就是最大的帮助
欢迎各位点赞,收藏关注
如果有疑问或有不同见解,欢迎在评论区留言
后续会继续更新大连理工大学相关课程和有关Linux的内容和示例
点赞加关注,学习不迷路,好,本次的学习就到这里啦!!!

ok,我们下次再见!


http://www.kler.cn/a/591087.html

相关文章:

  • 如何设计一个短链系统?流程如何?
  • 云原生周刊丨CIO 洞察:Kubernetes 解锁 AI 新纪元
  • TypeScript Symbols 深度解析:在 Vue3 中的高级应用实践
  • Lora微LLAMA模型实战
  • 【Node.js入门笔记8---path 模块】
  • 如何使用 CryptoJS 实现 DES 解密
  • 支持向量机(Support Vector Machine)基础知识2
  • 深度揭秘:蓝耘 Maas 平台如何重塑深度学习格局
  • python二级每日十题(1)
  • SQLMesh 系列教程:Airbnb数据分析项目实战
  • ubuntu中的ens33网卡在ifconfig中被默认关闭了?
  • Netty基础—8.Netty实现私有协议栈一
  • 华为海思 CPU「麒麟 X90」曝光
  • 谱分析方法
  • CPP从入门到入土之类和对象Ⅰ
  • Leetcode 3483. Unique 3-Digit Even Numbers
  • MySQL 锁
  • 【GPT-SoVITS】GPT-SoVITSAPI调用:让二次元角色开口说话,打造专属语音合成系统
  • 反向波动策略思路
  • 默认参数 d = {} 的陷阱