进程调度和优先级
易忘的知识点解释和操作
操作和解释
ps - l
:查看当前终端的进程优先级
PRI
字段(priority)NI
字段,进程优先级的修正数据。UID
:执行者的身份ID。PID
: 进程代号ID。PRI
:代表被执行的优先级,值越小越早执行。PRl(new)=PRl(默认old值为80)+nice,因此可以更改NI
来修改进程优先级- top [r]…
- nice
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
并发: 多个进程在一个CPU下采用进程切换——(与时间片有关)的方式,在一段时间之内,让多个进程都得以推进。
基于进程切换基于时间片轮转的调度算法
进程优先级
优先级:由于资源的稀缺性,决定进程存在访问资源的先后问题,因此进程之间具有竞争关系。
权限:决定能或者不能。
进程饥饿:一个进程长时间不能被调度。
配置进程优先权,可能会改善系统性能,也可以将某些进程,安排到某个CPU上…。
调度器
即计算机中分配工作所需资源的方法。为了保障进程的相对公平,linux对用户更改优先级的范围进行了调整。即NICE
的值为 [-20,19]
调整需要管理员权限
如何根据优先级开展调度?
运行队列
采用了两个二级指针,分别指两个指针数组。并且可以用位图
的方式,来记录某个PRI
值对应的队列是否为空。
这种方式也叫做linux内核的O(1)
调度算法。
正在被调度的进程,按照图中正在处理。
新添加的进程,则也根据PRI
,保存到*waiting[]
相应的位置。(*runing[]
和 *waiting[]
的存储逻辑是相同的)等到 *runing[]
处理完毕之后,swap(**run,**wait)
,让新添加的进程被调度。
由于PRI较低的在头部,优先被遍历,故优先被执行。
进程调度和优先级
https://weihehe.top/2024/07/13/优先级/