操作系统定义

Posted by Persuez on April 18, 2018

为什么会有这篇博文

这篇博文只从标题来看会觉得很无聊(确实也是这样),并且会觉得没有必要。可是如果别人问你操作系统的主要作用是什么?你会很棒的回答,还是支支吾吾呢!下面进入正题。

思路

人类的思考一般要么是自顶向下(国人的思维方式)(国外),要么是(自底向上)(国外)。

  1. 隐藏硬件(自顶向下)
  2. 资源管理(自底向上)

隐藏硬件(将丑陋转变为美丽)

这里涉及到一个关键名词:抽象。我想,如果可以的话,没有哪个程序员想要在硬件层面上直接和硬盘打交道。最少,也会通过一些名为硬盘驱动的软件来和硬盘交互(这类软件提供了读写硬盘的接口,而不用渗入细节)。但是,即使在这个层面上,对于大多数应用来说,还是太过于底层。所以,(所有的)操作系统都提供硬盘的有一层抽象:文件。我相信,所有写过文件基本读写操作的程序员都可以体会到操作文件的便捷(相比于操作硬盘)。其他的硬件也大概如此。所以,操作系统的一个主要任务是隐藏硬件,呈现给程序员良好、清晰、优雅、一致的抽象。 资源管理 资源管理的一般描述为在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O设备的分配。资源管理以两种方式实现多路复用:在时间上复用和在空间上复用。

  1. 时间上复用
    • 若系统中只有一个CPU,而多个程序需要在其上运行,操作系统则首先将CPU分配给某个程序运行一段时间,然后另一个程序获得CPU,如此进行下去,最终轮到第一个程序再次运行(如果第一个程序在第一次获得CPU后还没运行结束)。至于程序运行的顺序以及每个程序运行的时间长度则是操作系统的任务。
    • 打印机的共享。当多个作业在同一打印机排队时,操作系统必须决定下一个打印的作业时哪一个。
  2. 空间上的复用
    • 将多个程序同时加载进内存(分割程序)。
    • 在许多系统中,一个磁盘同时为多个用户保存文件。分配磁盘空间并记录谁正在使用哪个磁盘块是操作系统的典型任务。

参考文献

现代操作系统(原书第4版)