假设我们读过以下问题:改变正在运行的进程的优先级我们知道 root 和非 root 权限:
当正在运行的进程(Through renice
)或新进程(Through nice
)的优先级更改为之前的正/负值时,实际发生的情况是什么。
- 这是否意味着为其分配了更多的内存?
- 是否会有更多的 CPU 能力分配给该特定进程?
- 它是否会减少该过程所需的资源时间?
当进程优先级改变时会发生什么?
答案1
在运行最新操作系统的 PC 中似乎看起来是同时运行的,但实际上却是依次运行的。进程可以处于几种状态,这里简化了:
- 跑步(目前正在占用 CPU 时间)
- 准备好(准备占用 CPU 进行一些工作)
- 等待(通过进程间通信或磁盘或网络等 I/O 等待其他进程)
- 睡觉(“我现在不需要你浪费时间”)
进程的优先级告诉调度程序选择优先级最高的进程准备好状态以允许使用 CPU。因此,在多个进程处于就绪状态的情况下,优先级最高的进程将获得大部分时间。而且由于 Linux 是一个抢占式内核,它可以将进程从运行状态中搁置,让其他进程完成其工作。进程获得的时间被划分为时间片,还可以选择实际调度的算法。
据我所知,改变nice
级别不会对内存管理器产生任何影响,但确实,它会影响资源锁定,使得优先级较高的进程更早完成。
我建议你阅读有关此主题的更多信息:维基百科:抢占式多任务处理和O'Reilly——理解 Linux 内核(2000)
顺便说一句,请注意降低 nice
水平均值更高Linux 中的优先级。