我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux中进程有没有优先级

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux中进程有没有优先级

今天小编给大家分享一下linux中进程有没有优先级的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

linux中进程有优先级。Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程,但CPU在一个时钟周期内只能运算一条指令;哪个进程应该先运算,谁应该后运算呢?这就需要由进程的优先级来决定了。在Linux系统中,表示进程优先级的有两个参数:Pri和Nice;进程优先级是PRI值不是Nice值,但是Nice值会影响优先级。

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,可以看进程的优先级

linux中进程有没有优先级

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中进程有没有优先级”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网服务器栏目。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux中进程有没有优先级

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux中进程有没有优先级

今天小编给大家分享一下linux中进程有没有优先级的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-04-20

Linux的进程优先级NI和PR有哪些区别呢

这篇文章将为大家详细讲解有关Linux的进程优先级NI和PR有哪些区别呢,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以
2023-06-16

python中有哪些线程优先级队列

今天就跟大家聊聊有关python中有哪些线程优先级队列,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究
2023-06-14

linux有没有内核级线程

本文小编为大家详细介绍“linux有没有内核级线程”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux有没有内核级线程”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。linux有内核级线程,linux支持内核
2023-07-04

Android中进程生命周期的优先级

学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍。就不给大家转帖了,直接放译文吧,如下: Android系统会尽量维持进程的存在,但毕竟资源
2022-06-06

软考有没有中级程序员

  没有。软考只有初级有程序员考试,软考中级没有程序员这个资格,想要考软考程序员的话可以报考初级程序员。  软考中级没有程序员,只有软考初级有程序员。软考分为计算机软件、计算机网络、计算机应用技术、信息系统和信息服务共5个专业类别,并在各专业类别中分别设置了初、中、高级专业资格考试:  初级资格:信息处理技术员、网络管
软考有没有中级程序员
2024-04-18

php中cgi进程没有的解决方法

小编给大家分享一下php中cgi进程没有的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php cgi进程没有的解决办法:1、打开相应的配置文件;2、将p
2023-06-21

中级安全工程师报考有没有学历规定

  有,需要是大专及以上学历。中级安全工程师报考学历要求为大专及以上学历,不限制专业,因此最低学历要求就是大专学历。报考中级安全工程师除了需要满足学历条件外,还需要同时满足相应的工作经验要求,中级安全工程师报考时学历越高,要求的工作年限就越短。  中级安全工程师报考只要求考生学历在大专及以上,同时满足工作年限要求即可,
中级安全工程师报考有没有学历规定
2024-04-18

中级安全工程师考试有没有免考科目

  有。中级安全工程师四个考试科目中,最多可以免试《安全生产法律法规》、《安全生产管理》、《安全生产技术基础》三个科目,免试科目不同,需要满足的免试条件不同。  中级安全工程师考试共有《安全生产法律法规》、《安全生产管理》、《安全生产技术基础》、《安全生产专业实务》四个考试科目。中级安全工程师考试是可以申请免考部分科目
中级安全工程师考试有没有免考科目
2024-04-18

linux中的进程分类有哪些

本篇内容介绍了“linux中的进程分类有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!linux中的进程一般分为“交互进程”、“批处理进
2023-07-02

中级安全工程师每年报考次数有没有限制

  有,每年只有一次报考机会。中级安全工程师一年只能报考一次,但是每年都能报考。中级安全工程师考试成绩实行四年滚动管理制度,考生只要在连续的四个考试年度内通过中级安全工程师所有科目即算合格。  中级安全工程师每年举行一次,逾期不予补报、补考,但考生如果没有通过考试,次年还是可以进行报考的。中级安全工程师考试成绩实行滚动
中级安全工程师每年报考次数有没有限制
2024-04-18

中级安全工程师报考有没有工作经验要求

  有。中级安全工程师报考有学历和工作年限要求,工作年限要求与考生学历和专业相关,学历越高工作年限要求越短,中级注册安全工程师报考工作年限最长需要从事安全生产业务满7年,最短需要从事安全生产业务满1年。  中级安全工程师报考有学历和工作年限要求,工作年限要求跟学历高低而变化,学历越高工作年限越短,同时相同学历条件下,安
中级安全工程师报考有没有工作经验要求
2024-04-18

编程热搜

目录