关注分享主机优惠活动
国内外VPS云服务器

linux中的进程有优先级吗(linux程序的最高优先级是)

今天主机频道就和大家分享一下linux中进程是否有优先级的相关知识点。内容详实,逻辑清晰。我相信大部分人还是太了解这些知识了,所以我把这篇文章分享给大家,供大家参考。希望你看完这篇文章有所收获。让我们一起来看看吧。

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

Linux-进程优先级

Linux是一个多用户多任务的操作系统,系统中通常会有很多进程在运行。但是CPU在一个时钟周期内只能运行一条指令(现在的CPU采用多线程多核技术,所以在一个时钟周期内可以运行多条指令。但是同时运行的指令数量远远小于系统中进程的总数。那么问题来了:谁先操作,谁后操作?这需要由进程的优先级来决定。

优先级是cpu分配资源的顺序。

具有高优先级的进程具有优先执行的权利,

该进程可以在指定的cpu上运行,以提高系统的整体性能。

另外,在计算数据时,CPU在进行下一个进程之前并不完成一次积分计算,而是先计算进程1,再计算进程2,再计算进程3,再计算进程1,直到进程任务结束。而且由于进程优先级的存在,进程并不是按顺序运行的,而是哪个进程的优先级更高,哪个进程在一个运行周期内就会运行更多次。

这种说法很难理解。让我们换一种说法。假设我有四个孩子(进程)要养活(计算)。我更喜欢子进程1(进程1优先级更高),子进程2、3、4一视同仁(进程2、进程3、进程4优先级相同)。现在我开始吸血。我不能先喂孩子1,再喂其他孩子。而是我需要循环喂孩子(CPU运行时所有进程都是循环运行的)。然后我喂(算)的时候会先喂孩子一口饭,再喂其他孩子。而且,一个周期内,先喂孩子1两口饭,因为我更喜欢孩子1(优先级高),喂其他孩子一口饭。这样,孩子1会先吃(过程1更快),因为我更喜欢孩子1。

查看流程优先级

1.使用ps-al,可以看到进程的优先级。

linux中进程有没有优先级

2.PRI和NI

在Linux系统中,有两个参数表示一个进程的优先级:Priority和Nice。

[root@localhost ~]# ps -le
PPID ADDR深圳武汉TTY时间CMD
4s 010800-718-?00:00:01初始化
1 S 0 2 0 0 80 0 - 0 -?00:00:00 kthread
...省略部分输出...

其中PRI代表优先,NI代表尼斯。这两个值都表示优先级,值越小,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。

只有根用户可以将进程NI值设置为负值,并且可以调整任何用户的进程。

查看用于查看和修改有用值的命令。

1.使用top命令查看和修改nice值。

输入top- press r,输入过程pid,输入nice值。(如果提升被拒绝,使用sudo提升top命令的权限)。

2.其他概念

竞争:系统很多,但是CPU很少,甚至只有一个,所以进程之间存在竞争。为了高效地完成任务,更合理地争夺相关资源,它具有优先权。

独立性:多进程运行需要独占使用各种资源,所以多进程时期互不干扰。

并行性:多个进程同时在多个CPU中运行,称为并行性。

并发性:多个进程在一个cpu上采用进程切换的方式,使多个进程在一段时间内得到提升,称为并发性。

进程优先级是PRI值不是Nice值,但是Nice值会影响优先级。

PRI也很好理解,就是进程的优先级,或者通俗地说就是CPU执行程序的顺序。该值越小,进程的优先级越高。倪呢?就是我们要讲的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越大,静态优先级值越大,优先级越低。

非实时进程的动态优先级是根据静态优先级和加成计算的:dynamic _ prio = max (100,min (static _ prio-bonus+5,139))。

Bonus反映了一个进程的平均睡眠时间(范围从0到10)。睡眠时间越多,越有可能是一个交互的进程,越不容易在每次轮到运行的时候,用完释放cpu之前的时间片。

未经允许不得转载:主机频道 » linux中的进程有优先级吗(linux程序的最高优先级是)

评论 抢沙发

评论前必须登录!