进程的优先级与切换

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指针所指的队列

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

相关推荐
重生之绝世牛码2 小时前
Linux软件安装 —— Redis集群安装(三主三从)
大数据·linux·运维·数据库·redis·数据库开发·软件安装
网安CILLE2 小时前
Wireshark 抓包实战演示
linux·网络·python·测试工具·web安全·网络安全·wireshark
是jin奥2 小时前
Ubuntu 18 安装 nodejs 合适版本
linux·ubuntu·vim
网硕互联的小客服2 小时前
如何彻底删除CentOS自带的postfix服务释放25端口?
linux·运维·centos
天码-行空2 小时前
CentOS 误删 /dev 目录救援方案
linux·运维·centos
小码吃趴菜2 小时前
mysql
linux·运维·服务器
呉師傅2 小时前
东芝3525AC彩色复印机打印配件寿命和打印错误记录方法【实际操作】
运维·服务器·网络·windows·电脑
慾玄2 小时前
第一次渗透
linux
信创工程师-小杨2 小时前
项目实战:国产银河麒麟SP3服务器部署WordPress博客
运维·服务器