linux中进程有优先级么
发布时间 - 2023-03-30 00:00:00 点击率:次linux中进程有优先级。Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程,但CPU在一个时钟周期内只能运算一条指令;哪个进程应该先运算,谁应该后运算呢?这就需要由进程的优先级来决定了。在Linux系统中,表示进程优先级的有两个参数:Pri和Nice;进程优先级是PRI值不是Nice值,但是Nice值会影响优先级。
本教程操作环境:linux7.3系统、Dell G3电脑。
Linux-进程的优先级
Linux 是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。但是 CPU 在一个时钟周期内只能运算一条指令(现在的 CPU 采用了多线程、多核心技术,所以在一个时钟周期内可以运算多条指令。 但是同时运算的指令数也远远小于系统中的进程总数),那问题来了:谁应该先运算,谁应该后运算呢?这就需要由进程的优先级来决定了。
cpu分配资源的先后顺序就是优先级
优先权高的进程有优先执行的权利,
可以让进程运行在指定的cpu上,改善系统整体性能
另外,CPU 在运算数据时,不是把一个集成算完成,再进行下一个进程的运算,而是先运算进程 1,再运算进程 2,接下来运算进程 3,然后再运算进程 1,直到进程任务结束。不仅如此,由于进程优先级的存在,进程并不是依次运算的,而是哪个进程的优先级高,哪个进程会在一次运算循环中被更多次地运算。
这样说很难理解,我们换一种说法。假设我现在有 4 个孩子(进程)需要喂饭(运算),我更喜欢孩子 1(进程 1 优先级更高),孩子 2、孩子 3 和孩子 4 一视同仁(进程 2、进程 3 和进程 4 的优先级一致)。现在我开始喂饭了,我不能先把孩子 1 喂饱,再喂其他的孩子,而是需要循环喂饭(CPU 运算时所有进程循环运算)。那么,我在喂饭时(运算),会先喂孩子 1 一口饭,然后再去喂其他孩子。而且在一次循环中,先喂孩子 1 两口饭,因为我更喜欢孩子 1(优先级高),而喂其他的孩子一口饭。这样,孩子 1 会先吃饱(进程 1 运算得更快),因为我更喜欢孩子 1。
查看进程优先级
1.使用ps-al,可以看进程的优先级
2.PRI和NI
在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice。
[root@localhost ~]# ps -le F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 718 - ? 00:00:01 init 1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd ...省略部分输出...
其中,PRI 代表 Priority,NI 代表 Nice。这两个值都表示优先级,数值越小代表该进程越优先被 CPU 处理。不过,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。
PRI 和 NI 的关系如下:
PRI (最终值) = PRI (原始值) + NI
其实,大家只需要记得,我们修改 NI 的值就可以改变进程的优先级即可。NI 值越小,进程的 PRI 就会降低,该进程就越优先被 CPU 处理;反之,NI 值越大,进程的 PRI 值就会増加,该进程就越靠后被 CPU 处理。
修改 NI 值时有几个注意事项:
NI 范围是 -20~19。
普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。
查看查看并修改nice值的命令
1.用top命令查看并修改nice值
输入top-按r ,输入进程pid,输入nice值。(如果显示拒绝提升的话,使用sudo提升top命令的权限)。
2.其他概念
竞争性:系统数目很多,但只有cpu数量少,甚至只有一个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
独立性:多进程运行,需要独享各种资源,所以多进程期间互不干扰。
并行:多个进程在多个cpu中进行,同时进行运行,称为并行。
并发:多个进程在一个cpu上采用进程切换的方式,在一段时间内,让多个进程得以推进,称为并发。
进程优先级是 PRI 值不是 Nice 值,但是 Nice 值会影响优先级
PRI 也还是比
较好理解的,即进程的优先级,或者通俗点说就是程序被 CPU 执行的先后顺序,此值越小进程的优先级别越高。那 NI 呢?就是我们所要说的 nice 值了,其表示进程可被执行的优先级的修正数值。如前面所说, PRI 值越小越快被执行,那么加入 nice 值后,将会使得 PRI 变为: PRI(new)=PRI(old)+nice 。
到目前为止,更需要强调一点的是,进程的 nice 值不是进程的优先级,他们不是一个概念,但是进程 nice 值会影响到进程的优先级变化。
通过调整 nice 值,更改进程优先级, nice 调整范围是 -20~19 。
进程优先级与变动影响因素与原理
调度策略: RR 调度和 FIFO 调度的进程属于实时进程,以分时调度( OTHER )的进程是非实时进程。
FIFO (先进先出)和 RR (时间片轮转)用于实时进程, OTHER (分时调度)用于非实时进程;实时进程会抢占普通进程; FIFO 会导致同优先级实时进程始终占用 CPU , RR 会保证同优先级实时进程按时间片轮流执行。
实时进程优先级高于普通进程,实时进程使用静态优先级调度、非实时进程使用动态优先级调度,非实时进程动态优先级通过 nice 调整、可能受 bonus 影响。
Linux进程有两种优先级:普通进程优先级(使用 SCHED_NORMAL 调度策略),以及实时进程优先级(使用 SCHED_FIFO 或 SCHED_RR 调度策略)
不同调度策略的实时进程只有在相同优先级时才有可比性,任何时候,实时进程的优先级都高于普通进程
Linux对实时进程使用静态优先级调度,对普通的进程(非实时进程),根据动态优先级进行调度。
实时进程,只有静态优先级(在 0~MAX_RT_PRIO-1 间,默认 MAX_RT_PRIO 为 100 ), 内核不会再根据休眠等因素对其静态优先级做调整;
实时进程 0-99 号优先级每一个优先级对应一个优先级队列(链表),先执行数值高的对应的链表(0号最低),可由后面所述的 chrt 以及 相应函数修改该优先级;
非实时进程静态优先级可通过 nice 值( -20~19 )调整: static_prio=MAX_RT_PRIO + nice + 20 。
nice 只影响非实时进程(静态优先级在 100~139 之间), nice 越大静态优先级值越大,优先级越低。
非实时进程动态优先级根据静态优先级和 bonus 计算: dynamic_prio = max (100, min (static_prio - bonus + 5, 139))
bonus 反映进程平均睡眠时间(范围 0~10 ),睡眠时间越多越可能是交互进程,每次轮到它运行时它就越可能不会使用完时间片再释放 cpu 。
相关推荐:《Linux视频教程》
# linux
# 多个
# 越小
# 越大
# 是一个
# 我更
# 就越
# 就会
# 其他的
# 这就
# 多核
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何在IIS中新建站点并解决端口绑定冲突?
详解Android——蓝牙技术 带你实现终端间数据传输
php打包exe后无法访问网络共享_共享权限设置方法【教程】
,南京靠谱的征婚网站?
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
微信小程序 canvas开发实例及注意事项
昵图网官网入口 昵图网素材平台官方入口
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何用wdcp快速搭建高效网站?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
如何在腾讯云服务器快速搭建个人网站?
微信小程序 wx.uploadFile无法上传解决办法
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何快速生成橙子建站落地页链接?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
javascript基本数据类型及类型检测常用方法小结
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
千库网官网入口推荐 千库网设计创意平台入口
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何在阿里云域名上完成建站全流程?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
Linux系统命令中tree命令详解
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
简单实现jsp分页
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Laravel怎么上传文件_Laravel图片上传及存储配置
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
如何在建站宝盒中设置产品搜索功能?
Laravel如何使用Gate和Policy进行授权?(权限控制)
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel Session怎么存储_Laravel Session驱动配置详解
高性能网站服务器配置指南:安全稳定与高效建站核心方案
如何在Windows 2008云服务器安全搭建网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何快速建站并高效导出源代码?
韩国服务器如何优化跨境访问实现高效连接?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
高防服务器租用如何选择配置与防御等级?
Laravel安装步骤详细教程_Laravel环境搭建指南

