Linux操作系统进程优先级和进程切换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux操作系统进程优先级和进程切换相关的知识,希望对你有一定的参考价值。


【Linux操作系统】进程优先级和进程切换_寄存器

文章目录

  • ​​一.进程优先级​​
  • ​​1.三段论谈优先级​​
  • ​​2.PRI和NI​​
  • ​​二.进程切换​​
  • ​​1.进程的四个特性​​
  • ​​2.上下文数据保护和恢复​​

一.进程优先级

1.三段论谈优先级

什么是优先级?它等同于权限吗?

定义:

cpu资源分配的先后顺序,就是指进程的优先权(priority)。

区别:

  • 权限表示能与不能
  • 优先级的前提是能,表示先后顺序

为什么要有优先级?

因为资源有限,进程抢占资源,操作系统得给进程一个先后顺序。

怎么确定优先级?

​最终PRI= 80 +nice值​

ps:

  1. Linux是给运行中的进程调整优先级,调整策略是修改niceness值
  2. 和成绩排名一样,最终PRI值越小表示优先级越高

2.PRI和NI

总体:PRI=80+NI

其中NI值从[20,-19]

ps:

  1. NI的范围决定了PRI的变化范围[100,61]
  2. NI值的过度设置,会导致进程的调度失衡

第一步: ./pri后, 查看进程的优先级信息

其中ps的意思为process status 进程状态

ps -al

【Linux操作系统】进程优先级和进程切换_优先级_02

两个单词:
PRI:priority缩写,中文:最终优先级
NI:niceness缩写,中文:进程优先级
PRI=80+NI,其中NI的范围从[20,-19]

第二步: 提权使用top工具来准备修改niceness值

sudo top

【Linux操作系统】进程优先级和进程切换_服务器_03

第三步:键盘输入r

r (意思为renice)

显示结果:

【Linux操作系统】进程优先级和进程切换_寄存器_04

第四步:输入要调整优先级的进程ID

假如是:17955

显示结果:

【Linux操作系统】进程优先级和进程切换_运维_05

第五步:输入调整后的NI值

假如是:-19

第六步:再次查看进程的优先级信息

ps -al

显示结果:

NI值被修改为了-19

最终PRI值被修正为了61

【Linux操作系统】进程优先级和进程切换_寄存器_06

二.进程切换

1.进程的四个特性

竞争性:进程数众多,CPU只有少量,进程之间要抢占CPU资源
独立性:进程之间各自以为独占资源,互不干扰
并发:多个进程在一个CPU上运行,采取进程切换/CPU时间片轮转的方式
并行:多给进程在多个CPU上运行,同时运行

2.上下文数据保护和恢复

CPU内有很多寄存器,但是总归就一套寄存器.

寄存器是各个进程共享的,但是寄存器内的数据是私有的—-属于当前正在运行的进程.

由于大部分电脑都是单核CPU,所以属于并发机制,并发采用的是进程切换/时间片轮转的方式.

那么一个进程大多数情况下并不是在CPU中跑完了才从CPU上拿下来,而是跑完一个时间片的时间就换上另一个进程.

所以进程在一个时间片时间结束时,寄存器内的数据就要被拷贝一份,保留到当前进程或系统,这个过程被称为上下文数据的保护;

直到轮到该进程的下一个时间片时,就把之前保留的上下文数据恢复,CPU通过pc/eip指针的记录继续取指令,分析指令和执行指令.和执行指令.


以上是关于Linux操作系统进程优先级和进程切换的主要内容,如果未能解决你的问题,请参考以下文章

Linux 操作系统原理 — 用户进程与内核线程的调度策略与切换开销

Linux 操作系统原理 — 进程管理 — 进程调度

8进程的切换和系统的一般执行过程

Linux系统的进程调度

进程管理-第二节23:进程调度的时机切换与过程方式调度器和闲逛进程

(王道408考研操作系统)第二章进程管理-第二节1:调度的基本概念及分类以及进程优先级