首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux:进程调度

Linux:进程调度

作者头像
用户11290664
发布2025-08-21 08:29:08
发布2025-08-21 08:29:08
1520
举报
文章被收录于专栏:学习学习

进程优先级

是进程得到CPU资源先后的顺序。

因为目标资源稀缺,所以进程得到CPU要排队。

优先级不是权限,能得到,但是顺序不一样

优先级也是PCB里的一个数字,一般值越低,优先级越高。

当代计算机都是基于时间片的时分操作系统。

必须考虑公平性。

展现优先级信息

那么系统怎么指定我访问文件时,是拥有者,所属组,还是other呢?

拿进程和文件的uid比较就可以确定拥有者,所有者,所属组。

pri是进程优先级 ni是nice值

进程真实优先级是pri+ni

改优先级

top之后+r

输入pid之后可以输入nice值

注意:每次修改都是基于默认值+修改后的nice值。

nice和renice也可以调整nice值。

优先级的极值问题

nice[-20,19]默认优先级80 所以Linux优先级范围是[60,99],因为要考虑公平性,所以调整范围太大。

进程的一些补充

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

单cpu单核只能一个一个cpu,一个进程 多核可以多个进程, 操作系统服务器有的有多个cpu,两个cpu同时运行就叫并行

我们的电脑起始只执行一个进程,但是cpu切换太快了,可以多个进程来回切换。

进程切换

了解了并发,那么我们如何进行并发呢,这里cpu如何快速切换?

一个进程占有cpu,不会跑完所有代码,只要占用cpu,操作系统会分配一个时间片的东西。比如一个进程跑一毫秒,如果没跑完就到队列里重新排队。

这样一个进程不会一直占用cpu,所以死循环进程不会一直占用系统。

这里寄存器是保存正在运行进程的临时数据 这一寄存器就是cpu内部的临时空间 寄存器不等于寄存器内部的数据 寄存器是空间不是内容,空间只有一份,内容可以变,有多份。

这里的方框就是寄存器,存的都是临时数据。 由于时间片的原因,当进程A切走的时候我们要把寄存器的数据拷贝出来。 然后进程到队列的结尾。依次类推。 进程A切回来的时候还要把数据恢复回来,这样在下一个时间片内,进程A就可以从上次位置继续执行了。

那这些数据保存到哪里呢?

可以理解为把这些临时数据保存到task_struck里。

这里有TSS:任务状态段,保存数据

系统内存在 struct task_struct * current 指针,实时指向现在运行的进程。

每个cpu都有一个运行队列,runqueque,多个cpu就有多个。

操作系统是分为分时操作系统,基于时间片公平调度 实时操作系统,来了一个进程要立马调度完,这里工业重要领域最多

我们在电脑里基本上分时操作系统最多。

我们在数组里规定优先级的时候前100个是别的操作系统的优先级 后40个是分时操作系统,这里的40个下标正好映射实时操作系统的优先级

这里queque本质是hash表,算法用hash算法

bitmap是无符号整数

这里5个整数类型,5*32=160,能覆盖所有40位置的优先级0没有内容,1有内容

1要挑队列,2要挑进程,

这里*active指向活跃的进程

active队列里执行完后链入expired队列里, active执行完后,swap(&active,&expired)再执行active 队列,这里有两个runqueque

新进程来了放入expired队列里,就相当于就绪 实时操作系统的内核抢占,立刻放入active队列里。 双cpu时有负载,一个挂50个进程,另一个如果少,查最低的负载cpu,新进程来了放入负载低的cpu内

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 进程优先级
  • 进程的一些补充
  • 进程切换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档