Linux进程切换与调度

一.进程优先级

1.是什么?

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

2.为什么?

目标资源稀缺,所以要通过优先级确认谁先谁后的问题!

3.怎么办?

也是一种数字int存放于task_struct中

值越低,优先级越高,反之,优先级越低

我们一般使用的Linux系统是++基于时间片的分时操作系统++,为了考虑公平性,优先级可能会变化,但是变化幅度不能太大。

4.实验

优先级极值问题

知识点:系统是怎么知道我访问文件时是拥有者,所属组还是other?

5.补充概念

• 竞争性: 系统进程数⽬众多,⽽CPU资源只有少量,甚⾄1个,所以进程之间是具有竞争属性的。为了⾼效完成任务,更合理竞争相关资源,便具有了优先级

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

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

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

二.进程切换

1.死循环进程如何运行

a.一旦一个进程占有CPU,会把自己的代码跑完吗?不会!,时间片结束后就会从CPU剥离下来

b.死循环进程,不会打死系统,不会一直都占有CPU!!

2.寄存器

++CPU内部有大量的不同作用的寄存器,寄存器是CPU内部的临时空间++

比如CPU内有pc/EIP,ebp,esp,ea/b/c/dx,cs/ds/es/fg/gs ....等寄存器

3.进程如何切换?

4.实时操作系统 vs 分时操作系统

++实时操作系统主要应用在工业上,分时操作系统主要应用在互联网领域++

++1.实时操作系统++

++在调度一个进程时,直到进程的代码运行结束才会调度下一个进程,比如汽车,在踩刹车时必须要直到刹车这个进程结束才可以调度下一个进程++

++2.分时操作系统++

++在调度进程时,会给进程分一个时间片,比如1ms,时间结束,即使进程还没有运行完,也会进行进程切换,调度下一个进程,这样就避免了进程饥饿的问题。++我们的手机也是分时操作系统,我们感知上所有应用程序是同时运行的,其实不是,实际上是靠这种快速切换进程的并发的方式运行的,因为切换的速度足够快,所以会让我们产生一种同时运行的错觉。

三.Linux调度

Linux的真实调度算法:

a.O(1)调度算法

b.一个CPU一个runqueue

相关推荐
树℡独3 小时前
ns-3仿真之应用层(五)
服务器·网络·tcp/ip·ns3
小小管写大大码4 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
嵩山小老虎4 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模4 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
zhang133830890754 小时前
CG-09H 超声波风速风向传感器 加热型 ABS材质 重量轻 没有机械部件
大数据·运维·网络·人工智能·自动化
a41324474 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
Configure-Handler5 小时前
buildroot System configuration
java·服务器·数据库
津津有味道5 小时前
易语言TCP服务端接收刷卡数据并向客户端读卡器发送指令
服务器·网络协议·tcp·易语言
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.6 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
物联网软硬件开发-轨物科技6 小时前
【轨物洞见】告别“被动维修”!预测性运维如何重塑老旧电站的资产价值?
运维·人工智能