在大多数计算机中,cpu一次只能处理一个进程任务,但通常有多个进程需要运行。为了更有效地利用cpu资源,引入了进程优先级的概念,以决定进程获取cpu资源的顺序。这类似于生活中的排队情况,除了遵循先来后到的原则,优先级高的进程可以插队,就像在医院急诊病人可以优先挂号一样。提问:有没有可能因为大量的优先级更高的进程插队导致低优先级的进程迟迟得不到执行?回答:这涉及到进程饥饿的问题。在linux中,有相关的解决方法,linux会维护两个队列,一个为活跃队列,另一个为过期队列,这里就不详细讲解了。
CPU资源分配的先后顺序,就是指进程的优先级(priority)。优先级高的进程有优先执行的权力。在多任务环境的Linux中,配置进程优先级可以改善系统性能。通过将不重要的进程分配到特定的CPU上,可以大大提升系统的整体性能。进程要访问某种资源,必须通过一定的方式确定享受资源的先后顺序。有人可能会将进程的优先级与权限进行类比,但两者其实是不同的:
在Linux或Unix系统中,输入ps -l会显示以下内容:
进程优先级下面我们来介绍各个符号的意义:
3.1 介绍PRI和NI
PRI就是进程的优先级,通俗地说就是程序被CPU执行的先后顺序,此值越小进程的优先级越高。优先值范围为[60,99],一般默认的优先级为80。NI就是我们要说明的nice值,表示进程可被执行的优先级的修正数值。PRI越小越快被执行,那么加入nice值后,就会得到新的PRI:PRI(NEW) = PRI(OLD)+nice。如此一来,当nice值为负值的时候,那么该程序的优先值会变小,其优先级会变高,从而更快被执行。nice的取值范围为[-20,19],一共40个级别,这也对应了第一点。
3.1.1 调整进程的优先级
通过公式PRI(NEW) = PRI(OLD)+nice,我们知道,调整进程的优先级的本质就是调整nice的值。指令:top
进入top后按“r”->输入进程PID->输入nice值
演示:修改nice值为100。
修改nice值为100。通过演示我们可以发现,尽管nice的值被修改为100,PRI的值变成了99。这也证明了PRI的范围。值得注意的是,每次都是直接给nice赋值,而不是在原有nice的基础上加减。提问:为什么调整优先级要受限制?回答:如果不加限制,将自己进程的优先级调整得非常高,别人的优先级调整得非常低,优先级较高的进程优先得到资源,后续源源不断的进程产生。常规进程很难享受到CPU的资源,也就造成了进程饥饿问题。
提问:在进程运行时,CPU会直接把进程代码跑完吗?答案:不会,现代操作系统是基于时间片进行轮流执行的,假设每个进程执行1ms,那么CPU在每1ms都会切换进程来执行。
一些其他概念
以上就是Linux-进程优先级的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号