目录
优先级
引入
为什么会存在优先级
特点
优先级值
nice值
更改nice值
top指令
独立性
竞争性
进程切换
引入
时间片
上下文切换
调度器
抢占与出让
强占
出让
并发和并行
并发
并行
优先级
引入
与权限不同的是,权限是能不能做的问题,优先级是什么时候去做
为什么会存在优先级
- 系统中可以运行多个进程,每个进程都需要使用资源
- 但cpu是有限的
- 所以就存在谁先谁后使用资源的问题,这些进程需要通过某种方式竞争资源
- 而优先级,则是调度器在调度时的重要参考
- 调度 -- 决定将 哪一个在运行队列上的进程 放在 cpu 上
特点
优先级值
进程的调度优先级(Priority),它是用来控制进程在 CPU 调度中的执行优先级的一个值
- PRI就是优先级值,越小越先被调度
- 可以看到,图中这两个进程的PRI值都是80
- 但是,优先级也是可以被调整的,也就是用图上的NI值修改
nice值
- NI值也就是nice值是一种修正数据(也就是说,优先级是可以被调整的)
- 在Linux下,进程的优先级是通过所谓的“Nice值”来管理的
- Nice值是一个用来表示进程相对优先级的整数
- linux中: 优先级 = PRI值 + nice值
- nice值是有范围的,-20到19,所以对进程的影响不大
- 这是os有意控制的,为了使它可以 更均衡的让所有进程在一定时间范围内都能获得资源
- 也就是雨露均沾
- 防止某些恶意进程修改自己的nice值,在每次调度时都优先调度它,从而造成不公平事件
更改nice值
top指令
进入top后,按下' r ',输入要改变进程的pid,随后输入nice值
当我更改code这一进程的pid后(改为10了):
独立性
多进程运行,需要独享各种资源,多进程运行期间互不干扰
所以,Linux中的进程是相互隔离的独立执行单元,有助于确保系统的稳定性和安全性
竞争性
Linux中的进程是竞争执行的,这意味着多个进程在竞争有限的系统资源(如CPU时间、内存、文件句柄等)和争夺执行的机会
进程可以通过提高其优先级(降低Nice值)或增加其权重来提高获得CPU时间的机会
进程切换
引入
- 其实,一个进程使用cpu的时间是有限制的
- 如果直到一个进程被执行完才退出,那么其他进程在这一过程中相当于卡死状态(它在独占cpu)
- 也很可能会造成cpu直接卡死(如果该进程执行的是死循环,就会让计算机直接无法使用)
- 所以有了"时间片"这一概念
时间片
- 是操作系统中用来管理和分配CPU时间的基本概念
- 它表示操作系统将CPU时间分割成小段的时间间隔,每个时间间隔被分配给一个进程或线程,以允许多个任务交替执行
- 每个进程在其分配的时间片内运行,达到时间后就让出CPU,以便其他进程执行
上下文切换
- 在时间片结束时,操作系统会执行上下文切换
- 将CPU状态保存到当前进程的上下文中(这样下次再来的时候,可以从之前的逻辑继续向后运行)
- 然后加载下一个进程的上下文,以便继续执行
调度器
- 操作系统的调度器负责分配时间片给不同的进程
- 它使用调度算法来确定下一个应该运行的进程,并在时间片结束后切换到下一个进程
抢占与出让
- 但实际上,进程执行的过程中,并不会死板的按照时间片执行
- 如果该进程 没有执行完时间片规定的时间 就执行完啦,就可以直接退出啦,cpu就让其他进程运行
强占
- 当 一个进程的优先级 比 正在使用cpu的进程 高, 那么那个优先级低的会被扒拉下来,让高的那个先执行
出让
- 一个进程也可以自己主动让出cpu资源
并发和并行
并发
多个进程 在 一个CPU 下采用 进程切换 的方式,在一段时间之内,让多个进程都得以推进
并行
多个进程 在 多个CPU下 分别,同时进行运行