在像MS DOS这样的单编程系统中,当进程等待任何I/O操作完成时,CPU仍然是空闲的。 这是一个开销,因为它浪费时间并导致饥饿问题。 但是,在多程序系统中,CPU在进程的等待时间内不会保持空闲状态,而是开始执行其他进程。 操作系统必须定义CPU将被给予哪个进程。
在多程序系统中,操作系统调度CPU上的进程以获得最大的利用率,此过程称为CPU调度。 操作系统使用各种调度算法来调度过程。
这是短期调度程序的一项任务,用于调度CPU以查找作业池中存在的进程数量。 每当运行进程请求某个I/O操作时,短期调度程序就会保存进程的当前上下文(也称为PCB)并将其状态从运行状态更改为等待状态。 在此期间,进程处于等待状态; 短期调度程序从就绪队列中选择另一个进程并将CPU分配给此进程。 这个过程被称为上下文切换。
操作系统在进程的生命周期中维护一个进程控制块。 进程终止或终止时,进程控制块将被删除。 有以下信息保存在过程控制块中,并随过程状态而变化。
在多道程序中,如果长期调度程序选择更多的I/O绑定进程,那么大多数时候CPU仍然是空闲的。 操作系统的任务是优化资源的利用。
如果大多数正在运行的进程将其状态从运行状态更改为等待状态,那么系统中可能始终存在死锁。 因此,为了减少这种开销,操作系统需要调度作业以获得CPU的最佳利用率并避免死锁的可能性。