什么是鸡胸病症状图片| 皮肤炎症用什么药| 舐犊是什么意思| 耀字五行属什么| 下午一点多是什么时辰| 最大的罩杯是什么杯| 梦见考试是什么意思| 子宫憩室有什么症状| 什么是造影| 黄芪有什么作用| 体检需要带什么| 捋是什么意思| 什么可以解酒最快方法| 什么叫职业年金| 属虎的和什么属相最配| 什么什么自如| 栀子对妇科有什么功效| 胃不好吃什么水果| 珍珠是用什么做的| 护理主要学什么| 体寒的女人吃什么能调理好身体| 消化快容易饿什么原因| 毛豆有什么营养价值| 处女座女生和什么星座男生最配| 临床试验是什么意思| 白色车里放什么摆件好| 梦到自己拉大便是什么预兆| 刚拔完牙需要注意什么| 失眠用什么药| 佯装是什么意思| 珊瑚是什么| 樟脑是什么| 左边肋骨下面是什么器官| 逐是什么意思| 什么的宝石| babies是什么意思| 紧张是什么意思| 4t什么意思| 绝经一般在什么年龄| 组织液是什么| 牙疼有什么办法| 左后脑勺疼是什么原因| 桃花什么时候开花| 什么牌子充电宝好| 寓言故事有什么特点| 夜来非是什么意思| 掉头发是什么原因| 催乳素过高会有什么严重的后果| 牛肉配什么菜包饺子好吃| bc是什么牌子| 六月六日是什么星座| 什么能减肚子上的脂肪| dr什么意思| 虾仁和什么包饺子好吃| 儿保做些什么检查项目| 胃不好吃什么水果| 肩膀骨头疼是什么原因| 天麻起什么作用| 胃疼吃什么| 比心什么意思| 小脚趾麻木是什么原因| pp是什么意思| 脾胃寒湿吃什么中成药| 左下腹有什么器官| beer是什么意思| 男性阴囊瘙痒用什么药膏| 水由什么构成| 上官是什么意思| 舌苔厚白吃什么药| 艾滋病什么时候能查出来| 什么力气| 卡西欧手表属于什么档次| 6月28日是什么日子| 四不像长什么样| 切除子宫对身体有什么伤害| 哦耶是什么意思| 长目飞耳是什么动物| 什么鱼不能吃| 21三体临界风险是什么意思| 早上起来手麻是什么原因| 杞人忧天告诉我们什么道理| 水泻拉肚子是什么原因| 十岁女孩喜欢什么礼物| 朱雀玄武是什么意思| 白牌黑字是什么车牌| 警察在古代叫什么| 233是什么意思| 天麻是什么东西| 什么床品牌最好| 鸡胸是什么| 俞字五行属什么| 匈奴是现在的什么民族| 番薯是什么| 青海有什么特产| 为什么遗精| 尿路感染喝什么药| 二氧化硅是什么| 维生素检查项目叫什么| 4ever是什么意思| ad是什么| 糖尿病人晚餐吃什么最好| 早上6点到7点是什么时辰| 前囟门什么时候闭合| 尖斌卡引是什么意思| 吃什么有助于降血压| 蛋白粉什么时候吃效果最好| 天降甘霖什么意思| 脊髓炎吃什么药| 破釜沉舟是什么生肖| 武松是什么生肖| 爱我永不变是什么歌| 什么话| 鸡皮肤是什么原因引起的| 黄瓜和青瓜有什么区别| 鬼剃头是因为什么原因引起的| 扁桃体是什么| 心跳不规律是什么原因| 颞下颌紊乱挂什么科| 接风是什么意思| 紫色加绿色是什么颜色| 蜘蛛喜欢吃什么| 蒟蒻是什么| 胎盘前置是什么意思| 农历正月是什么星座| 什么是简历| 牙上有黑渍是什么原因| 怀孕一个月吃什么对宝宝发育好| 微信转账为什么要验证码| 睡不着有什么好办法吗| 什么的工作| 红烧肉用什么肉| 什么是996| launch什么意思| 三冬是什么意思| 迷恋一个人说明什么| 喝水多尿少是什么原因| 肝火上炎吃什么中成药| 木丹念什么| 肾阴虚的症状是什么| 斜纹棉是什么面料| 海洋中最多的生物是什么| 洗钱是什么意思| 长痣是什么原因| 高大尚是什么意思| 尿肌酐低说明什么原因| 叶酸什么时间段吃最好| 宗气是什么意思| 乌龟为什么会叫| edc是什么| 藜芦是什么| 牙龈爱出血是什么原因| 嗜碱性粒细胞偏低说明什么| 梦见明星是什么预兆| 福五行属什么| 常打嗝是什么原因| linen是什么面料成分| 艾灸治什么病| 跳蚤喜欢咬什么样的人| 包二奶什么意思| 怎么判断脸上是什么斑| 夏天适合种什么菜| 养生馆是干什么的| 突然耳鸣是什么原因| 单核细胞偏高是什么原因| 伤口用什么消毒最好| 肚脐眼位置疼是什么原因| 鹅肝为什么那么贵| 淡盐水是什么水| 什么的大叫| 后脑勺疼是什么原因| 初级会计考什么科目| 内检是什么| 胎盘低置是什么原因造成的| 碳14呼气试验阳性是什么意思| 当归有什么作用| 多囊是什么症状| 鼻炎什么症状| 造血干细胞是什么| 拉肚子想吐是什么原因| 主意正是什么意思| 玉林狗肉节是什么时候| 女性雄激素过高是什么原因引起的| 唐氏综合症是什么意思| 减肥吃什么药| 笋壳鱼是什么鱼| 撒拉族和回族有什么区别| 马钧发明了什么| 拍拖什么意思| 心肌酶高吃什么药| 扁桃体2度是什么意思| 附骨疽在现代叫什么病| 脑利钠肽前体值高预示什么| 武则天是什么星座的| 飞机什么不能带| 叶黄素对眼睛有什么功效| modal是什么意思| 牧师是什么意思| 用进废退什么意思| 什么叫引产| 怂包是什么意思| 吃什么水果通便| 11月1日是什么星座| 腋窝痒是什么原因| 例假量少是什么原因| 为什么睡觉流口水很臭| 梦见螃蟹是什么预兆| 喝酒手掌发红是什么原因| 养膘是什么意思| 牙齿上有黑点是什么原因| 蛇怕什么家禽| 解压密码是什么| 靖国神社是什么地方| 什么品牌油烟机好| 被褥是什么意思| 共济会是什么组织| 什么闻乐见| 肺阴虚吃什么中成药| 大本营是什么意思| 胃胀吃什么药最有效| alb医学上是什么意思| 硬下疳是什么| 什么的旅行| 鸡眼是什么原因引起的| 血氧饱和度什么意思| 海参几头是什么意思| 经常放屁是什么病| 血糖仪什么牌子好| 闲鱼转卖什么意思| 派出所长是什么级别| 脸长适合什么样的发型| 奇花异草的异什么意思| 儿童办理护照需要什么材料| 辅警是什么| 迪丽热巴的全名叫什么| 饮鸩止渴是什么意思| 睾丸肿大吃什么药| 什么立雪| 武汉大学校长是什么级别| 百年好合是什么意思| 无心是什么意思| 幼儿急疹吃什么药| 西门子洗衣机不脱水是什么原因| 鳞状细胞是什么意思| 睡觉打鼾是什么原因| 剖腹产吃什么下奶快| 送老师送什么礼物好| rop胎位是什么意思| 孩子爱流鼻血是什么原因| 宫腔内无回声区是什么意思| 斑鸠是什么| 两小无猜是什么生肖| 武夷肉桂茶属于什么茶| 去医院查怀孕挂什么科| 查肝胆胰脾肾挂什么科| 天蝎座女和什么星座最配| 振水音阳性提示什么| 沈阳为什么叫盛京| 什么是有机食品和无机食品| pd990是什么金| 肾尿盐结晶是什么意思| 脂溢性皮炎是什么症状| 活动是什么意思| 切克闹是什么意思| 宝宝发烧挂什么科| 百度
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Linux仓库】进程优先级及进程调度【进程·肆】

【敬业奉献】何伟群:80后“法官姐姐”倾心少年审判

作者头像
egoist祈
发布于 2025-08-06 09:07:16
发布于 2025-08-06 09:07:16
百度   魏山忠强调,要坚持以习近平新时代中国特色社会主义思想指导治江实践。 780
举报
文章被收录于专栏:egoistegoist

?? 各位看官好,我是! ?? Linux == Linux is not Unix ! ?? 今天来学习Linux的进程优先级及进程调度,从底层剖析OS是如何进行进程调度的。

进程优先级

什么是优先级?

  • 指定一个进程获取某种资源的先后顺序
  • 本质是进程获取cpu资源的优先顺序

为什么要有优先级? 资源少,进程多,才需要竞争。

那Linux是如何保证优先级的呢?请阅下文。


查看系统进程

PS工具不仅能获得一个进程的PID和PPID,还能获得一个进程的nice值、PRI等,接下来由小拜年带着一一介绍。

  • UID : 用户的标示符
  • PID : 代表这个进程的代号
  • PPID :代表这个进程是由哪个进程发展衍??来的,亦即?进程的代号
  • PRI :代表这个进程可被执?的优先级,其值越?越早被执?
  • NI :代表这个进程的nice值
PRI和NI
  • PRI也还是?较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执?的先后顺序,此值越?进程的优先级别越?
  • 那NI呢?就是我们所要说的nice值了,其表示进程可被执?的优先级的修正数值。
  • PRI值越?越快被执?,那么加?nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice
  • nice其取值范围是-20?19,?共40个级别。
  • Linux的进程优先级本身范围是【60,99】,一共40个级别。

证明确实是分为40个级别: ?top命令更改已存在进程的nice: 进?top后按“r”?>输?进程PID?>输?nice值

简单而言,PRI越低代表进程优先级越高,而优先级调整是通过NICE值来调整,那PRI(old)呢?

PRI(old)是固定80,这是一种覆盖式设置,因此只需要调整NI来改变进程优先级。

这里抛出三个问题:

  1. nice值为什么要有范围?
  2. 为什么nice取值是从-20到19这40个级别呢?
  3. 如果一个NICE值足够的大,是否会让该进程得不到调度呢?如果进程因为长时间不被调整,就会造成饥饿问题。(下面讲)

问题1:我们所接触到的操作系统叫做分时操作系统,这种系统的特性是需要尽可能地保证公平公正,即每个进程都要被调度到。那它又是如何做到每个进程都被调度的呢?放在下面讲

问题2:与具体调度算法有关。

竞争、独立、并行、并发

  • 竞争性: 系统进程数?众多,?CPU资源只有少量,甚?1个,所以进程之间是具有竞争属性的。为了?效完成任务,更合理竞争相关资源,便具有了优先级。
  • 独?性: 多进程运?,需要独享各种资源,多进程运?期间互不?扰。
  • 并行: 多个进程在多个CPU下分别,同时进?运?,这称之为并?。
  • 并发: 多个进程在?个CPU下采?进程切换的?式,在?段时间之内,让多个进程都得以推进,称之为并发。

进程切换

CPU上下?切换:其实际含义是任务切换, 或者CPU寄存器切换。当多任务内核决定运?另外的任务时, 它保存正在运?任务的当前状态, 也就是CPU寄存器中的全部内容。这些内容被保存在任务??的堆栈中, ?栈?作完成后就把下?个将要运?的任务的当前状况从该任务的栈中重新装?CPU寄存器, 并开始下?个任务的运?, 这?过程就是context switch。

参考内核0.11代码:

时间片:当代计算机都是分时操作系统,每个进程都有它合适的时间?(其实就是?个计数 器)。 时间?到达,进程就被操作系统从CPU中剥离下来。

进程O(1)调度队列

那么,OS是如何进行进程调度的?

状态+优先级!!!

下图是Linux2.6内核中进程队列的数据结构。


活动队列

一个CPU,有一个运行队列(可能一个电脑不只一个CPU,但我们目前只探讨一个CPU的情况)

  • 时间片还没有结束的所有进程都按照优先级放在该队列
  • nr_active: 总共有多少个运?状态的进程
  • queue[140]: ?个元素就是?个进程队列,相同优先级的进程按照FIFO规则进?排队调度,所以,数组下标就是优先级! (需要注意的是queue数组中的[0,99]不用管,而[100,139]是进程的位置,这不正好也是40个位置吗???前面所学的nice值也是40个级别,那么只要将PRI值[60,99]+40不正好能对上进程的位置了。)

那[0,99]用来做什么呢? Linux 不仅仅在互联网中使用,在工业场景中也会被使用。 如:实时操作系统,Linux操作系统,支持实时操作系统的功能!![0,99]


OS调度进程,是如何选择进程的呢?从该结构中,选择?个最合适的进程,过程是怎么的呢?

  1. 遍历queue数组时
  2. 找到第?个?空队列,该队列必定为优先级最?的队列,因为下标位置靠前,说明PIR低,进程优先级高
  3. 拿到选中队列的第?个进程,开始运?,调度完成!
  4. 遍历queue[140]时间复杂度是常数!但还是太低效了!此时Linux开发者又大开脑洞,通过位图的方法来确定下标位置是否含有非空队列。这就是为什么设计出bitmap的原因。

bitmap[5]:?共140个优先级,?共140个进程队列。如果bitmap的空间为4,则有4*32=128个下标。为了提?查找?空队列的效率,就可以?5 * 32 = 160个?特位表?队列是否为空,这样,便可以大大提?查找效率!(替换遍历操作,提高了效率,O(1)时间复杂度)

  • 比特位位置:表示数组中第几个队列!
  • 比特位内容:表明该队列是否为空!

过期队列

如果调整某进程的nice值过大,此时它的PRI就会变大,导致进程优先级变低,就会插入到活跃队列靠后的位置。如果我再调整其他进程的nice值呢,让它们的优先级比该进程还高,此时操作系统一直都会执行优先级较高的进程,导致位置靠后的进程永远得不到调度。如果进程因为长时间不被调整,就会造成饥饿问题。我们的操作系统是一个分时操作系统,又该如何保证尽量公平公正地调度每一个进程呢?引入了过期队列。(设计者Ingo Molnar 和 Con Kolivas,不得不佩服是一个极为天才的设计)

  • 过期队列和活动队列结构?模?样
  • 过期队列上放置的进程,都是时间?耗尽的进程
  • 当活动队列上的进程都被处理完毕之后,对过期队列的进程进?时间?重新计算
active指针和expired指针
  • active指针永远指向活动队列
  • expired指针永远指向过期队列
  • 可是活动队列上的进程会越来越少,过期队列上的进程会越来越多,因为进程时间?到期时?直都存在的。
  • 当活跃队列里的进程没了,我又该如何继续调度之前没执行完的进程呢?此时active和expired指针的作用就凸显出来了,我们只需要交换active指针和expired指针的内容,就相当于有具有了?批新的活动进程!(因为执行过的进程都在过期队列里啊)

源码设计

本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进程优先级
    • 查看系统进程
      • PRI和NI
    • 竞争、独立、并行、并发
  • 进程切换
  • 进程O(1)调度队列
    • 活动队列
    • 过期队列
      • active指针和expired指针
    • 源码设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
工匠精神是什么 国师是什么生肖 省亲是什么意思 鸡项是什么鸡 散片是什么意思
四月初八是什么日子 民考民是什么意思 药娘吃的什么药 甲钴胺片治什么病 新奇的什么
蜻蜓喜欢吃什么 椰土是什么 烟酰胺是什么 隐翅虫咬了用什么药膏 夏天穿什么衣服比较凉爽
尿酸高挂什么科 为什么叫客家人 脸上过敏用什么药膏 尿泡沫多是什么原因 白细胞高吃什么降得快
ok镜是什么hcv9jop7ns0r.cn 托人办事送什么礼物较好hcv8jop2ns7r.cn 脚踝后面的筋疼因为什么520myf.com 吃饺子是什么节日hcv9jop7ns4r.cn 腱鞘炎吃什么药最好hcv7jop6ns6r.cn
大便常规检查能查出什么hcv8jop0ns4r.cn 阴道炎症用什么药hcv7jop6ns9r.cn 姜字五行属什么hcv8jop1ns0r.cn 社保缴费基数和工资有什么关系hcv8jop8ns3r.cn bag是什么意思hcv9jop2ns0r.cn
属牛的生什么属相的孩子好hcv7jop9ns0r.cn 乳糖不耐受喝什么奶粉比较好hcv8jop6ns4r.cn 为什么会厌学hcv9jop5ns4r.cn 玄青色是什么颜色qingzhougame.com ppd试验是什么意思bjhyzcsm.com
胰腺炎不能吃什么食物hcv8jop7ns9r.cn 无妄是什么意思aiwuzhiyu.com 11月份什么星座hcv9jop2ns7r.cn 什么是福报fenrenren.com 阳瘘的最佳治疗方法是什么hcv8jop6ns4r.cn
百度