两级调度是一种有效的调度方法,它使用两个调度程序来执行进程调度。
让我们通过一个例子来理解它:
假设系统有50个正在运行的进程,所有进程都具有相同的优先级,并且系统的内存只能同时容纳10个进程。因此,总是交换出40个进程并将其写入硬盘上的虚拟内存。换出和换入一个过程,分别需要50毫秒。
让我们通过简单的循环调度来解决上述情况:每次发生上下文切换时,都需要交换一个进程(交换最近最少使用的进程)。交换进出成本太高,不必要的交换浪费了调度程序的大量时间。
因此,该问题的解决方案是两级调度。两级调度中有两种不同的调度程序:
1. Lower level scheduler
2. Higher level scheduler
- 下层调度程序–
该调度程序选择将从内存中运行的进程。 - 更高级别的调度程序–
该调度程序专注于在硬盘和内存之间换入和换出进程。交换需要很多时间,因此它的调度要少得多。它还会交换在内存中长时间运行的进程,并与磁盘上长时间未运行的进程交换。
使用以下变量:
- 响应时间 –
响应时间变量很重要,因为它可以防止资源匮乏,并且可以完成一个过程。如果某个进程换出的时间过长,则某些其他进程将不得不不必要地等待很长时间。因此,此变量至关重要。 - 流程规模–
较大的进程较少交换,因为它们花费很长时间进行交换。随着这些进程的增大,只有其中一些可以与该进程共享内存。 - 优先事项 –
具有较高优先级的进程会在内存中保留更长的时间,以便更快地完成。