进程优先级什么是优先级进程权限:判定进程有没有资格执行某操作是「能不能做」的准入门槛。例子普通用户不能修改/root文件、不能修改其他用户进程的高优先级root 拥有全部操作权限。作用管控资源访问、操作执行的资格。进程优先级:多个进程同时就绪时CPU 调度的先后顺序是「谁先占用 CPU」的排队规则。例子高优先级程序会被内核优先分配 CPU 时间片响应更快低优先级程序仅在 CPU 空闲时运行。作用合理分配 CPU 算力区分任务轻重缓急。为什么要有优先级区分任务重要程度系统交互程序终端、桌面需要高优先级保证操作流畅后台批量任务、日志压缩等可降低优先级不抢占前台资源。避免资源饥饿防止计算密集型程序独占 CPU通过优先级加权分配时间片保障所有进程都能分到算力。优化用户体验前台交互进程优先调度鼠标、键盘指令立刻响应后台服务慢速运行互不干扰。服务器资源管控多用户服务器中可限制普通用户任务优先级保障核心业务进程算力。Linux下面是怎么进行设计的1. Nice 值NI用户可调控2. PRI内核动态优先级ps命令查看信息ps aux / ps axja显示一个终端所有的进程包括其他用户的进程。x显示没有控制终端的进程例如后台运行的守护进程j显示进程归属的进程组ID、会话ID、父进程ID以及与作业控制相关的信息u以用户为中心的格式显示进程信息提供进程的详细信息如用户、CPU和内存使用情况等ps -al-a显示所有终端进程含其他用户-l长格式展示进程完整状态、优先级、父子 PID 等内核信息字段含义F进程标志位十六进制 / 十进制S进程状态UID进程执行者用户 IDPID进程唯一 ID进程号PPID父进程 PID创建它的进程CCPU 使用率调度权重PRI进程优先级数值越小优先级越高NInice 值用户可调整范围 - 20~19影响 PRIADDR内核进程地址用户态进程统一显示-SZ进程占用内存页面数1 页 4KBWCHAN进程阻塞等待的内核函数名运行中显示-TTY进程所属终端TIME进程累计占用 CPU 时间CMD启动进程的命令和进程优先级有关的就是pri和ni如何调整优先级???对nice的值进行调整,就可以对pri进行调整这个运行程序的pri为80,ni为01.输入 top 打开监控面板2.按 r 触发 renice 功能3.输入目标 PID如 14019回车4.输入新 nice 值10回车立即生效这个运行程序的pri为90,ni为101.nice 值的范围 --- 优先级的变化范围改变nice可以改变pri的值所以将nice范围确定就可以确定优先级的变化范围当我们把nice改成100时,实际上pri的值变化到99我们在刚刚的基础上有nice改为-10,此时pri不是90,而是70,说明这个变化值是基于原始值80而言的现在再nice的值变为-100,此时pri是60Linux 系统对 nice 有固定合法区间-20 ~ 19无论输入多大数值内核都会自动钳位到边界每个进程初始pri都是80,对pri的改变都是基于80,pripri(80)nice2.为什么是这个范围为什么不能随便改1.普通用户只能增大 nice 值0→19只能降低自己进程优先级无法设置负数提高优先级。 目的防止普通用户恶意抢占 CPU独占系统资源影响其他用户 / 前台程序。2.root 可以设置-20~19任意 nice拥有完整调度调控权限。3.若无范围限制用户设置极端优先级会导致低优先级进程长期得不到 CPU产生进程饥饿破坏多任务公平调度。3.进程优先级分两类,高频改优先级分时操作系统:给每个进程一定的时间,时间一到就会换下个进程,给进程分配时间片,相对公平,公正的调度策略,较为均衡的让不同的进程都可以再一段时间内得到CPU的资源,绝大部份操作系统用的都是分时操作系统实时操作系统:只有将当前运行的进程进执行完才会执行下一个进程,这种再工业领域会见到的比较多补充竞争性系统中进程数量远多于 CPU 核心数常见场景单 CPU 核心所有进程都需要争抢 CPU、内存、IO 等有限硬件资源进程天然存在资源争夺关系这就是竞争性。因为资源有限、进程互相争抢操作系统才设计了进程优先级、调度算法用来公平 / 按需分配 CPU 时间片避免某个进程独占资源导致其他任务卡死进程饥饿。独立性进程内核数据结构代码和数据每个进程有独属于自己的内核数据结构和代码父子关系也是有独立性并行多个进程再多个cpu下分别同时运行并发多个进程再一个cpu下面采用时间片进行轮转,让每个进程得以切换,在一段时间内,多个进程都可以得到推进进程切换一、核心定义CPU 上下文切换 进程 / 任务切换本质是CPU 寄存器现场的保存与恢复。 CPU 硬件内只有一套通用寄存器、程序计数器等硬件资源但系统中同时存在多个进程寄存器同一时刻只能存放一个进程的运行数据当内核需要切换运行任务时就要完成一次上下文切换。二、完整切换流程PPT 原文拆解保存当前进程上下文内核把正在运行进程的全部 CPU 寄存器内容运行现场存入该进程自身的栈 / PCBstruct task_struct中。 作用记录断点保证进程下次重新上 CPU 时能从暂停的位置继续执行。载入新进程上下文从下一个待运行进程的栈 / PCB 中读出它之前保存的寄存器数据全部加载到 CPU 物理寄存器里。执行新进程CPU 按照加载完成的现场继续运行新任务切换完成。 这个完整流程就叫做context switch上下文切换。寄存器是共享的,但是寄存器里面的数据本质是私有的,独属于该进程
Linux之进程(四)--优先级,进程切换
发布时间:2026/6/30 13:28:43
进程优先级什么是优先级进程权限:判定进程有没有资格执行某操作是「能不能做」的准入门槛。例子普通用户不能修改/root文件、不能修改其他用户进程的高优先级root 拥有全部操作权限。作用管控资源访问、操作执行的资格。进程优先级:多个进程同时就绪时CPU 调度的先后顺序是「谁先占用 CPU」的排队规则。例子高优先级程序会被内核优先分配 CPU 时间片响应更快低优先级程序仅在 CPU 空闲时运行。作用合理分配 CPU 算力区分任务轻重缓急。为什么要有优先级区分任务重要程度系统交互程序终端、桌面需要高优先级保证操作流畅后台批量任务、日志压缩等可降低优先级不抢占前台资源。避免资源饥饿防止计算密集型程序独占 CPU通过优先级加权分配时间片保障所有进程都能分到算力。优化用户体验前台交互进程优先调度鼠标、键盘指令立刻响应后台服务慢速运行互不干扰。服务器资源管控多用户服务器中可限制普通用户任务优先级保障核心业务进程算力。Linux下面是怎么进行设计的1. Nice 值NI用户可调控2. PRI内核动态优先级ps命令查看信息ps aux / ps axja显示一个终端所有的进程包括其他用户的进程。x显示没有控制终端的进程例如后台运行的守护进程j显示进程归属的进程组ID、会话ID、父进程ID以及与作业控制相关的信息u以用户为中心的格式显示进程信息提供进程的详细信息如用户、CPU和内存使用情况等ps -al-a显示所有终端进程含其他用户-l长格式展示进程完整状态、优先级、父子 PID 等内核信息字段含义F进程标志位十六进制 / 十进制S进程状态UID进程执行者用户 IDPID进程唯一 ID进程号PPID父进程 PID创建它的进程CCPU 使用率调度权重PRI进程优先级数值越小优先级越高NInice 值用户可调整范围 - 20~19影响 PRIADDR内核进程地址用户态进程统一显示-SZ进程占用内存页面数1 页 4KBWCHAN进程阻塞等待的内核函数名运行中显示-TTY进程所属终端TIME进程累计占用 CPU 时间CMD启动进程的命令和进程优先级有关的就是pri和ni如何调整优先级???对nice的值进行调整,就可以对pri进行调整这个运行程序的pri为80,ni为01.输入 top 打开监控面板2.按 r 触发 renice 功能3.输入目标 PID如 14019回车4.输入新 nice 值10回车立即生效这个运行程序的pri为90,ni为101.nice 值的范围 --- 优先级的变化范围改变nice可以改变pri的值所以将nice范围确定就可以确定优先级的变化范围当我们把nice改成100时,实际上pri的值变化到99我们在刚刚的基础上有nice改为-10,此时pri不是90,而是70,说明这个变化值是基于原始值80而言的现在再nice的值变为-100,此时pri是60Linux 系统对 nice 有固定合法区间-20 ~ 19无论输入多大数值内核都会自动钳位到边界每个进程初始pri都是80,对pri的改变都是基于80,pripri(80)nice2.为什么是这个范围为什么不能随便改1.普通用户只能增大 nice 值0→19只能降低自己进程优先级无法设置负数提高优先级。 目的防止普通用户恶意抢占 CPU独占系统资源影响其他用户 / 前台程序。2.root 可以设置-20~19任意 nice拥有完整调度调控权限。3.若无范围限制用户设置极端优先级会导致低优先级进程长期得不到 CPU产生进程饥饿破坏多任务公平调度。3.进程优先级分两类,高频改优先级分时操作系统:给每个进程一定的时间,时间一到就会换下个进程,给进程分配时间片,相对公平,公正的调度策略,较为均衡的让不同的进程都可以再一段时间内得到CPU的资源,绝大部份操作系统用的都是分时操作系统实时操作系统:只有将当前运行的进程进执行完才会执行下一个进程,这种再工业领域会见到的比较多补充竞争性系统中进程数量远多于 CPU 核心数常见场景单 CPU 核心所有进程都需要争抢 CPU、内存、IO 等有限硬件资源进程天然存在资源争夺关系这就是竞争性。因为资源有限、进程互相争抢操作系统才设计了进程优先级、调度算法用来公平 / 按需分配 CPU 时间片避免某个进程独占资源导致其他任务卡死进程饥饿。独立性进程内核数据结构代码和数据每个进程有独属于自己的内核数据结构和代码父子关系也是有独立性并行多个进程再多个cpu下分别同时运行并发多个进程再一个cpu下面采用时间片进行轮转,让每个进程得以切换,在一段时间内,多个进程都可以得到推进进程切换一、核心定义CPU 上下文切换 进程 / 任务切换本质是CPU 寄存器现场的保存与恢复。 CPU 硬件内只有一套通用寄存器、程序计数器等硬件资源但系统中同时存在多个进程寄存器同一时刻只能存放一个进程的运行数据当内核需要切换运行任务时就要完成一次上下文切换。二、完整切换流程PPT 原文拆解保存当前进程上下文内核把正在运行进程的全部 CPU 寄存器内容运行现场存入该进程自身的栈 / PCBstruct task_struct中。 作用记录断点保证进程下次重新上 CPU 时能从暂停的位置继续执行。载入新进程上下文从下一个待运行进程的栈 / PCB 中读出它之前保存的寄存器数据全部加载到 CPU 物理寄存器里。执行新进程CPU 按照加载完成的现场继续运行新任务切换完成。 这个完整流程就叫做context switch上下文切换。寄存器是共享的,但是寄存器里面的数据本质是私有的,独属于该进程