Scheduler调度器和Dispatcher分发器的区别
调度器和分发器与操作系统的进程调度相关。调度是操作系统根据一些规则决定将哪个进程分配给CPU执行的过程。
调度器和分发器的关键区别在于,调度器从多个进程中选择一个进程来执行。而分发器则为被调度器选中的进程分配CPU。
操作系统中的调度器是什么
调度器是一种特殊的系统软件,以各种方式处理进程调度。其主要任务是选择要提交给系统的作业并决定运行哪个进程。操作系统中有三种类型的调度器。
- 长程调度器: 也称为作业调度器。长程调度器确定哪些程序被允许进入系统进行处理。它从队列中选取进程并将其载入内存进行执行。进程加载到内存用于 CPU 调度。 作业调度器的主要目标是提供一个平衡的作业组合,例如 I/O 限制和处理器限制。它还控制多道程序的程度。如果多道程序的程度稳定,那么平均进程创建率必须等于离开系统的进程的平均离去率。 在某些系统上,长程调度器可能不可用或最小化,分时操作系统没有长程调度器。当一个进程将状态从新建变为就绪时,存在长程调度器。
- 短程调度器: 也称为 CPU 调度器。它的主要目标是在选择的一组标准下提高系统性能。它是将进程从就绪状态切换到运行状态。CPU 调度器从准备好执行的进程中选择一个进程,并将 CPU 分配给其中一个进程。 短程调度器,也称为分发器,决定下一个要执行的进程。短程调度器比长程调度器快。
- 中程调度器: 中程调度是换页的一部分。它将进程从内存中移除,并减少多道程序的程度。中程调度器负责处理被换出的进程。 如果正在运行的进程发出 I/O 请求,那么它可能会被挂起,挂起的进程无法进展到完成。在这种情况下,将挂起的进程移动到辅助存储器中,以从内存中删除该进程并为其他进程腾出空间。这个过程被称为换页,进程被称为被换出或滚出。换页可能是为了改善进程组合。
操作系统中的分发器是什么
分发器是调度程序之后介入的特殊程序。当短程调度器从就绪队列中选择时,分发器执行将选定的进程分配到 CPU 的任务。正在运行的进程进入等待状态进行 I/O 操作等,然后 CPU 被分配给其他进程。将 CPU 从一个进程切换到另一个进程的操作称为上下文切换。
调度程序执行各种任务,包括上下文切换、设置用户寄存器和内存映射。这些对于进程执行和将CPU控制转移到该进程是必要的。进行调度时,进程从准备状态更改为运行状态。
调度程序需要尽快执行,因为它在每次上下文切换时运行。调度程序消耗的时间被称为 调度延迟 。
有时,调度程序被视为短期调度器的一部分,因此整个单元称为 短期调度器 。在这种情况下,短期调度器的任务是从就绪队列中选择一个进程,并为该进程分配CPU。在操作系统中,调度程序具有以下责任:
- 切换到用户模式: 所有低级操作系统进程都在内核级安全访问下运行,但所有应用程序代码和用户发出的进程都在应用空间或用户许可模式下运行。调度程序将进程切换到用户模式。
- 寻址: 程序计数器(PC)寄存器指向要执行的下一个进程。调度程序负责寻址该地址。
- 启动上下文切换: 上下文切换是指当前正在运行的进程被停止,并将其所有数据和进程控制块(PCB)存储在主内存中,然后加载另一个进程来执行。
- 管理调度延迟: 调度延迟是指停止一个进程并启动另一个进程所需的时间。调度延迟越低,相同硬件配置的软件效率越高。
注意:调度程序不是线程。调度程序在每个核心上运行,运行一个线程一段时间,保存其状态,加载另一个线程的状态并运行它。
调度器和调度程序的示例
假设有四个进程P1,P2,P3和P4在就绪队列中。它们的到达时间分别为T1,T2,T3和T4。在整个过程或任务中使用先进先出(FIFO)调度算法。
进程P1首先到达,所以调度程序将决定它是第一个要执行的进程,调度程序将从就绪队列中移除P1并将其给予CPU。
然后,调度程序将确定P2是应该执行的下一个进程,所以当调度程序返回队列选择新的进程时,它将获取进程P2并将其给予CPU。这种方式将持续进行,直到进程P3和P4。
操作系统中调度程序和调度器的差别
CPU无法同时执行就绪队列中的所有等待执行的进程。因此,操作系统必须根据调度算法选择特定的进程,调度程序执行此过程,从各个进程中选择一个进程。
一旦调度程序从队列中选择了一个进程,调度程序将其从就绪队列中抓取并将其移动到运行状态。因此,调度程序将有序的进程列表给予调度器,调度器将随时间将此列表的进程移至CPU。
调度程序和调度器都用于操作系统的进程调度,它们完成相同的过程或任务。然而,调度程序和调度器的差别在于调度程序选择一个要执行的进程,而调度器则通过调度程序为所选进程分配CPU。操作系统中的调度程序和调度器之间还有一些其他的差别,例如:
属性 | 调度器 | 调度器 |
---|---|---|
定义 | 调度器是处理进程调度的特殊系统软件,通过选择要执行的进程来进行处理。 | 调度器是一个控制CPU按照短期调度器选择的进程的模块。 |
算法 | 调度器使用各种算法,如FCFS、SJF、RR等。 | 调度器的实现没有特定的算法。 |
类型 | 调度器有三种类型,即长期调度器、短期调度器和中期调度器。 | 调度器没有不同的类型,它只是一个代码段。 |
依赖性 | 调度器独立工作,需要时立即工作。 | 调度器的工作依赖于调度器,这意味着调度器必须等待调度器选择一个进程。 |
时间花费 | 调度器所花费的时间通常可以忽略不计。 | 调度器所花费的时间称为调度延迟。 |
功能 | 调度器的唯一任务是选择进程。 | 调度器还负责上下文切换、切换到用户模式以及在进程重新启动时跳转到适当的位置。 |
任务 | 调度器在三个阶段执行任务,分别是: 长期调度器从作业队列中选择进程并将其移到就绪队列中。 短期调度器选择就绪队列中的一个进程。 中期调度器执行进程的换入、换出。 |
调度器将CPU分配给短期调度器选择的进程。 |