点我查看操作系统秘籍连载


了解一点重要的操作系统发展历史


最原始的操作系统一次性只能执行一个任务,任务执行完成之后才执行装载、执行下一个程序。

但是,磁盘速度相对于CPU来说非常慢,CPU经常因IO而等待,此时cpu完全处于浪费状态,整个操作系统的效率也非常低。

后来出现了划时代的多道操作系统(multiprogramming OS),多道操作系统主要是一个批处理系统,可以支持多任务(multitasking)的系统。

多道操作系统可以执行多个任务,在一个任务需要等待的情况下,CPU可以去装载另一个程序到内存或执行其它已装载好或已运行的程序,或者一个进程执行时间太长,或者一个进程优先级太低,都会导致CPU的切换。总之,这样的多道批处理,使得看上去总有进程在执行中,从而CPU的利用率得到了极大的提升。

为了理解清楚单道和多道处理系统:

  • 单道批处理系统:每次只有一条路可走,一路走到黑,只有走完一条路才能换下一条路继续走,走不下去了就在那等着。是为单道
  • 多道批处理系统:一条路能走完就走完,走到中间实在走不下去就去走另一条路,是为多道

严谨点的描述:假设先后有a b c d四个任务。

  • 单道系统的执行过程:调入任务a并执行,执行完了再执行b,执行完了再执行c,执行完了再执行d。要求每一个任务都执行完才能调入下一个任务,否则就在那干等。
  • 多道系统的执行过程:调入任务a并执行,如果任务a执行过程中没有出现IO等待,则一直执行直到完成a,如果a出现IO等待,则调入任务b并执行(注意不是主动调入新任务的,而是实在没东西执行了才调入新任务),对任务b、c、d也是同样的逻辑。

再多一点补充

  • 单道批处理系统有很明显的缺点:它经常会浪费大量CPU资源,且任务的整体执行速度非常慢(后面的任务必须等待前面的任务执行完成)。
  • 多道批处理系统改善了单道批处理系统,但也有很明显的缺点:有的任务可能会长时间霸占CPU(因为只有遇到IO等待这类无法继续执行下去的情况才会切换到下一个任务),对其它任务来说意味着有些任务需要等待很长时间才能获取到CPU的执行权

在多道处理系统的基础上衍生出了一个多道处理系统的变体:**分时系统(time sharing)**。

分时系统下,强行将CPU资源划分短的时间片,每个任务最多只能执行一个时间片时长,一个时间片之后必须放弃CPU,让CPU去执行其它任务。这在很大程度上避免了某任务长时间占用CPU的可能性,同时也使得每个任务可以很快地获取到CPU,相对来说体现了一定的公平性,当然,具体的执行和分配方式还需要结合任务调度算法。