文章目录
- 一.进程优先级
- 1.三段论谈优先级
- 2.PRI和NI
- 二.进程切换
- 1.进程的四个特性
- 2.上下文数据保护和恢复
一.进程优先级
1.三段论谈优先级
什么是优先级?它等同于权限吗?
定义:
cpu资源分配的先后顺序,就是指进程的优先权(priority)。
区别:
-
权限表示能与不能
-
优先级的前提是能,表示先后顺序
为什么要有优先级?
因为资源有限,进程抢占资源,操作系统得给进程一个先后顺序。
怎么确定优先级?
最终PRI= 80 +nice值
ps:
- Linux是给运行中的进程调整优先级,调整策略是修改niceness值
- 和成绩排名一样,最终PRI值越小表示优先级越高
2.PRI和NI
总体:PRI=80+NI
其中NI值从[20,-19]
ps:
- NI的范围决定了PRI的变化范围[100,61]
- NI值的过度设置,会导致进程的调度失衡
第一步: ./pri后, 查看进程的优先级信息
其中ps的意思为process status 进程状态
ps -al
两个单词:
PRI:priority缩写,中文:最终优先级
NI:niceness缩写,中文:进程优先级
PRI=80+NI,其中NI的范围从[20,-19]
第二步: 提权使用top工具来准备修改niceness值
sudo top
第三步:键盘输入r
r (意思为renice)
显示结果:
第四步:输入要调整优先级的进程ID
假如是:17955
显示结果:
第五步:输入调整后的NI值
假如是:-19
第六步:再次查看进程的优先级信息
ps -al
显示结果:
NI值被修改为了-19
最终PRI值被修正为了61
二.进程切换
1.进程的四个特性
竞争性:进程数众多,CPU只有少量,进程之间要抢占CPU资源
独立性:进程之间各自以为独占资源,互不干扰
并发:多个进程在一个CPU上运行,采取进程切换/CPU时间片轮转的方式
并行:多给进程在多个CPU上运行,同时运行
2.上下文数据保护和恢复
CPU内有很多寄存器,但是总归就一套寄存器.
寄存器是各个进程共享的,但是寄存器内的数据是私有的—-属于当前正在运行的进程.
由于大部分电脑都是单核CPU,所以属于并发机制,并发采用的是进程切换/时间片轮转的方式.
那么一个进程大多数情况下并不是在CPU中跑完了才从CPU上拿下来,而是跑完一个时间片的时间就换上另一个进程.
所以进程在一个时间片时间结束时,寄存器内的数据就要被拷贝一份,保留到当前进程或系统,这个过程被称为上下文数据的保护;
直到轮到该进程的下一个时间片时,就把之前保留的上下文数据恢复,CPU通过pc/eip指针的记录继续取指令,分析指令和执行指令.