Linux--进程(四) 进程优先级与进程切换

一、 进程优先级基本概念

cpu资源分配的先后数据,就是指进程的优先级(priority)。

优先级高的进程有优先执行权利。配置进程优先权对多任务优先权Linux很有用。

指的是进程在已经能得到某种资源的前提下,得到某种资源的先后顺序。

问题:为什么会有优先级?

由于资源不足,就要分配资源。这时候就需要设置优先级:决定进程,获得某种资源的先后顺序。

进程良性竞争----进程调度的本质就是在确认优先级。

查看进程状态

ps aux / ps axj 命令
a ----显示一个终端所有的进程,包括其他用户的进程
x----显示没有控制终端的进程,例如后台运行的守护进程。
j-----显示进程归属的进程组ID,会话ID,父进程ID,以及与作业控制相关的信息,
u----以用户为中心的格式显示进程信息,提供进程的详细信息,如用户CPU和内存使用情况。

PRI和NICE值

PRI(new)=PRI(old)+NICE值
在Linux中,修改进程的优先级,就是调整进程的NICE值。

修改后的优先级。主要是修改NICE值。

PRI的默认值

PRI和NICE值的范围


优先级的变化范围是有限的, 因为分时操作系统,给进程分配时间片,相对公平,公正的调度策略,较为均衡的让不同的进程在一段时间内,都能得到CPU资源。
并行:多个进程在多个CPU下分别同时运行,就是并行。
并发:多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都的以推进,称为并发。

二、进程切换

1、什么是上下文

上下文就是:进程当前的"运行快照"。

进程在CPU上跑的时候,需要三样东西:

1、寄存器里的值(通用寄存器,程序计数器PC、栈指针SP)

2、当前运行状态(用户态/内核态、优先级)

3、地址空间信息(页表和内存布局)

这些能让进程下次接着跑,不迷路的所有信息,合起来就叫:进程上下文,可以理解为打游戏的存档------下次读档,就能从断点开始。

2、进程切换基本概念

把当前进程的上下文保存起来,再把另一个进程的上下文恢复上去。

完整的动作只有三步:(1)保存就进程上下文->写到PCB(进程控制块)

(2)调度器选下一个要跑的进程

(3)恢复新进程上下文--------->从PCB读到CPU

3、上下文有哪些部分组成?

(1)用户级上下文:进程的用户栈;数据段、代码段、全局变量、堆

(2)寄存器上下文: PC(程序计数器:下一条指令在哪里)

SP(栈指针);通用寄存器;状态寄存器。

(3)系统级上下文:PCB(进程控制块:pid、状态、优先级)

页表指针(地址空间);内核栈

4. 什么时候会发生进程切换?

三类触发条件:

  1. 时间片用完(抢占式调度)

  2. 主动放弃CPU

sleep、wait、I/O阻塞、锁等待

  1. 被更高优先级进程抢占

  2. 中断处理完回到用户态时

只要从一个进程换到另一个,就是进程切换

5. 进程切换的完整流程

  1. 发生中断/系统调用

  2. 保存CPU寄存器到当前进程PCB

  3. 把当前进程状态改为:就绪 / 阻塞

  4. 调度器(Scheduler)选择下一个进程

  5. 切换页表 → 切换地址空间

  6. 从新进程PCB恢复寄存器

  7. 跳转到新进程的PC,开始执行

6. 为什么进程切换开销很大?

两个最关键原因:

  1. 要切换地址空间 + 刷新TLB

TLB是虚拟地址→物理地址的高速缓存

一刷新,就会出现大量Cache Miss

  1. CPU缓存失效

原来进程的缓存都没用了,要重新加载

结论:

进程切换 ≈ 操作系统里最贵的操作之一。

7. 进程切换 vs 线程切换(超级重点)

--进程切换:

切换上下文 + 地址空间 → 开销大

--线程切换:

只切换CPU上下文,同地址空间 → 开销小很

相关推荐
qq_316411034 小时前
商用冷柜售后报修运维管理系统开发案例
运维
huainingning4 小时前
R4930-G7服务器(RAID-LSI-9560-LP-8i-4GB)网页方式做Raid方法
服务器
智码看视界4 小时前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
ltl6 小时前
QUIC 握手实现:Initial 到 1-RTT 的最小路径
linux
码视野6 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_426003966 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸7 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
小杨不想秃头7 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe7 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮7 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶