📜  FCFS 和 Priority CPU 调度的区别(1)

📅  最后修改于: 2023-12-03 15:15:02.932000             🧑  作者: Mango

FCFS 和 Priority CPU 调度的区别


当多个进程同时请求 CPU 时间时,操作系统会按照某种调度算法来选择哪一个进程能够执行。 FCFS(First-Come, First-Served,先来先服务)和 Priority(优先级) CPU 调度是操作系统中两种经典的进程调度算法。

FCFS CPU 调度

FCFS CPU 调度算法是一种简单的调度算法,它把先到达的进程先放到就绪队列中,后到达的进程则排在该进程之后。当 CPU 空闲时,会选择就绪队列中第一个进程进行调度。也就是说,FCFS 调度算法是先来先服务的,排在队列前面的进程先被服务。

特点
  • 简单易懂,实现简单;
  • 对于长作业有利,平均等待时间较短。
缺点
  • 对于短作业,后到达的短作业需要等待前面的长作业执行完成,会造成长的等待时间,不利于响应实时环境。
Priority CPU 调度

Priority CPU 调度算法是根据进程的优先级来决定执行顺序的。进程的优先级一般由进程的类型、大小及经济价值等因素来决定,通常由操作系统、应用程序或用户指定,也可以动态地随着进程的状态、资源的需求等得到调整。

特点
  • 可以按照执行顺序为不同的进程指定优先级,具备更好的灵活性;
  • 优先级高的进程如果使用了几乎所有的 CPU 时间,低优先级的进程可能会被饿死;
  • 适用于实时系统的 CPU 调度。
缺点
  • 可能会出现进程优先级倒置的情况,即优先级较低的进程比优先级较高的进程先执行;
  • 当优先级过高时,自旋锁占用时间过长,浪费 CPU 资源。

根据以上对比,我们可以得到以下结论:

  1. FCFS 是先来先服务的,Priority 则是按照进程的优先级来执行的;
  2. FCFS 算法简单,当作业长度相同时等待时间也相同,但可能会出现后来的进程等待过久的情况,不利于实时处理;
  3. Priority 调度算法可以根据任务的重要性或紧急程度调整优先级,非常适用于实时处理。

因此,在进行 CPU 调度的时候,需要根据具体情况适当选择适合的算法。