进程调度和优先级

易忘的知识点解释和操作

操作和解释

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/优先级/
作者
weihehe
发布于
2024年7月13日
许可协议