进程的优先级与切换

1.进程的概念

1.1进程的优先级是什么

cpu资源分配的先后顺序,就是进程的优先级。
1.2为什么要有优先级

cpu资源是有限的,要分配资源

优先级高的进程可以优先执行,配置优先级对于多任务环境的linux系统很有用,可以有效的提高效率。
1.3linux靠什么设计进程的优先级

PRI:代表这个进程可被执⾏的优先级,其值越⼩越早被执⾏

NI:代表这个进程的nice值
nice值:进程优先级的修改数据

1.2.nice值

1.概念

PRI值越⼩越快被执⾏,那么加⼊nice值后,

将会使得PRI变为:PRI(new)=PRI(old)+nice

这样,当nice值为负值的时候,那么该程序将会优先级值将变⼩,即其优先级会变⾼,则其越快

被执⾏所以,调整进程优先级,在Linux下,就是调整进程nice值
2.nice值的范围

nice其取值范围是-20⾄19,⼀共40个级别。

并且优先级不能频繁修改,会影响系统整体的进程执行安排
3.nice值为什么有范围

系统默认PRI为80,那么有了nice值后其范围为60 - 99。

设置范围是因为如果优先级如果差距过大,低优先级进程可能永远无法得到执行机会,无法满足在一段时间内所有的进程都分配到cpu的资源,这样是不公平的

例如,你要同时听歌,打游戏,如果优先级设置的差距过大会导致音乐进程每几秒才能获得几毫秒的CPU时间,导致

音乐节奏混乱,完全无法正常听歌

1.3.补充概念-竞争、独⽴、并⾏、并发

• 竞争性:系统进程数⽬众多,⽽CPU资源只有少量,甚⾄1个,所以进程之间是具有竞争属性的。为

了⾼效完成任务,更合理竞争相关资源,便具有了优先级

• 独⽴性:多进程运⾏,需要独享各种资源,多进程运⾏期间互不⼲扰

• 并⾏:多个进程在多个CPU下分别,同时进⾏运⾏,这称之为并⾏

• 并发:多个进程在⼀个CPU下采⽤进程切换的⽅式,在⼀段时间之内,让多个进程都得以推进,称

之为并发

2.进程的切换

1.进程的上下文

2.Linux2.6内核进程O(1)调度队列

⼀个CPU拥有⼀个runqueue(调度队列)

补充:

• 普通优先级:100〜139(我们都是普通的优先级,想想nice值的取值范围,可与之对应!)

• 实时优先级:0〜99(暂时不关⼼)

*我们主要关注*active,expired,nr_active,bitmap[5],qunue[140]

调度队列里有分别有活动队列和过期队列

• active指针永远指向活动队列

• expired指针永远指向过期队列

先来说活动队列

1.时间片还没有结束的进程按照优先级放在该队列

2.nr_active:总共有多少个运⾏状态的进程

3.queue[140]:⼀个元素就是⼀个进程队列,相同优先级的进程按照FIFO规则进⾏排队调度,所以,

数组下标就是优先级!
系统是如何按顺序选择进程的?

1.在qunue数组中从0开始遍历

2.找到第⼀个⾮空队列,该队列必定为优先级最⾼的队列

3.拿到选中队列的第⼀个进程,开始运⾏,调度完成!

4.遍历queue[140]时间复杂度是常数!但还是太低效了!

• bitmap[5]:⼀共140个优先级,⼀共140个进程队列,为了提⾼查找⾮空队列的效率,就可以⽤

5*32个⽐特位表⽰队列是否为空,这样,便可以⼤⼤提⾼查找效率

过期队列同理,当进程从活动对列跑完后进入过期队列,当活动对列的进程都结束后交换active指针与expired指针所指的队列

就相当于有具有了⼀批新的活动进程!

相关推荐
下一页盛夏花开11 分钟前
ubuntu 20中安装QT以后出现红色空心断点
linux·运维·ubuntu
金色光环30 分钟前
FreeModbus释放底层的 TCP 监听端口
服务器·网络·tcp/ip
sanshanjianke1 小时前
Thunderobot 911ME 笔记本 Linux 风扇控制研究
linux
fengyehongWorld4 小时前
TeraTerm ttl脚本登录wsl
linux·teraterm
乌托邦的逃亡者4 小时前
Linux中如何检测IP冲突
linux·运维·tcp/ip
一曦的后花园4 小时前
linux搭建promethes并对接node-exporter指标
linux·运维·服务器
乌托邦的逃亡者5 小时前
CentOS/Openeuler主机中,为一个网卡设置多个IP地址
linux·运维·网络·tcp/ip·centos
桌面运维家6 小时前
服务器进程异常监控:快速定位与排障实战指南
运维·服务器
@CLoudbays_Martin116 小时前
UniApp是否能够接入SDK游戏盾呢?
服务器·网络·网络协议·tcp/ip·安全