Modern Operating System 4th 中译

操作系统是一个资源管理器

以自上而下的视角看,操作系统为应用程序提供了抽象层。然而自下往上看,操作系统管理着复杂系统的各个细节。现代计算机系统包含了处理器,内存,计时器,磁盘,鼠标,网络接口,打印机,以及其他各种各样的设备。在自下而上的视角中,操作系统的工作就是面向众多的应用程序提供处理器,内存,I/O设备的有序分配。

现代操作系统允许多个程序同时驻留内存并且同时运行。想象一下如果某台计算机上的三个应用程序都试图同时在同一台打印机上打印它们的输出会发生什么。最后有可能前几行输出来自于程序1,之后的几行来自程序2,下面几行来自程序3,以此类推。最终的打印结果将变得混乱不堪。操作系统可以通过在磁盘上缓存同一台打印机的所有输出来保证有序的输出。当一个程序结束,操作系统将它的输出从磁盘中取出,同时其他程序可以继续产生输出,即使输出并不会真的(立刻)送到打印机。

当一台电脑(或者网络)有多个用户时,管理/保护内存,I/O设备以及其他资源的需求就变得非常迫切,因为用户可能以某些方式干扰彼此。此外,用户经常需要共享硬件以外的东西,比如文件,数据库等。简而言之,这种对操作系统的认识认为操作系统的主要工作是跟踪哪些软件在使用哪些硬件,保证资源请求,统计用量,调解不同的程序和用户之间相互冲突的请求。

资源管理中的资源复用有两种方式:时间复用及空间复用。当资源被时间复用时,不同的程序或用户轮流使用。例如系统仅有一个CPU然而需要运行多个程序,操作系统首先将CPU分配给第一个程序,在其运行足够长的时间后另一个程序得到CPU使用权,之后是另一个,直到回到第一个程序。确定复用策略——谁下一个使用,使用多久——是操作系统的任务。另一个时间复用的例子是打印机,当多个任务排队等待打印时,就需要决定下一个打印哪个。

另一种复用方式是空间复用。消费者并不轮流使用,而是每个消费者使用资源的一部分。例如,内存一般被分配给好几个正在运行的程序,所以每个程序均可在内存驻留(比如在等待CPU)。假如内存足以容纳多个程序,同时容纳多个程序显然比一次容纳一个程序高效得多,尤其是在每个程序仅需要内存的一小部分的情况下。当然,这会引起公平性,内存保护等问题,并且应当由操作系统解决这些问题。另一个空间复用的资源是硬盘,许多系统中,一块磁盘可以同时保存来自多个用户的众多文件。分配磁盘空间,跟踪区块的使用是一个操作系统的典型任务。