优先级调度算法

  • #算法思想
  • 随着计算机发展,尤其是实时操作系统的出现,很多的应用场景需要根据任务的紧急程度来决定处理顺序。
  • #算法规则
  • 每个作业/进程都有各自的*优先级*,调度是选择优先级最高的作业/进程
  • #用于作业/进程调度
  • 既可用于作业调度,也可用于进程调度。甚至还会应用于之后的IO调度
  • #是否可抢占
  • 抢占式和非抢占式都有
  • 区别:非抢占式只需要在进程主动放弃处理机时进行调度即可。而抢占式还需要再就绪队列变化时,检查是否会发生抢占。
  • #优缺点
  • *优点*:用优先级区分紧急程度,重要程度,适用于实时操作系统。可以灵活调整各种作业/进程的偏好程度。
  • *缺点*:若有源源不断的高优先级进程到来,可能导致进程饥饿
  • #是否会导致饥饿
  • #补充
  • 就绪队列未必只有一个,可以按照不同优先级来组织。
  • 另外,也可以把优先级高的进程排在更靠近队头的位置。
  • 根据优先级是否可以动态改变,可将优先级分为静态优先级动态优先级
  • 静态优先级:创建进程时确定,之后一直不变
  • 动态优先级:创建进程时有一个初始值,之后会根据情况动态调整优先级
  • 通常:
  • *系统进程优先级高于用户进程*
  • *前台进程优先级高于后台进程*
  • *操作系统更偏好I/O型进程(或称I/O繁忙型进程)PS:与I/O型进程相对的是计算机进程(或称CPU繁忙型进程)*
  • why?Pasted image 20260628161147.png
  • 所以更偏好I/O进程
  • 采用*动态优先级时,可以参考以下操作调整进程优先级*
  • 1.如果进程在就绪队列中等待很长时间,可以适当提升其优先级
  • 2.如果进程占用处理机运行了很长时间,可以适当降低其优先级
  • 3.如果发现一个进程频繁进行I/O操作,可以适当提升其优先级(why参考上图)