This post was written in Chinese, Read Original Post.
Since this post has not been translate to English, Please use the tool provided to translate.

计算机组成

  1. 中央处理器
  2. 内存
  3. I/O设备

如果把计算机想象成一个餐厅的话,中央处理器就是那个厨师。而内存就是厨师的案板。I/O设备是所有其他非必要组成部分的统称,它对应餐厅里面的所有其他物品。

操作系统的角色

桥梁

从某种角度看,操作系统算是硬件和软件之间的桥梁。操作系统封装了一系列对底层硬件的操作集,并提供了易用的接口给用户。这样,用户便可以安全快捷地使用丰富的应用程序以及开发。

拓展机

也可以把系统看作是一个拓展机,它主要的两个工作是虚拟化(virtualization)和抽象化(Abstraction)。想想看,如果一个用户要读写某个文件,从底层的角度来看它的操作十分枯燥和复杂:

  1. 找到文件所在的磁盘位置
  2. 如果有必要,清理内存以得到足够的空间来读写信息
  3. 移动磁盘的读取装置
  4. 检查是否超出了读取的界限
  5. 检查是否超出了内存
  6. 获取读取文件并传送到内存

操作系统可以运用抽象化,把这些操作细节隐藏掉,并且提供一个简单的接口给用户。譬如:用户只要输入read("/path/to/file")便可获取文件。

所谓虚拟化,就是对不同的进程模拟出一个虚拟的接口来供这些进程使用。对进程来说,它们得到资源都是操作系统虚拟出来的。比如说操作系统会模拟一个内存地址给进程读写,但是实际上物理的内存地址和模拟出来的内存地址位置是不一样的。

资源管理

操作系统同时也是一个庞大的资源管理器。最好的资源管理例子就是多任务处理:一个CPU在不同的程序之间来回变换使得多个程序可以同时作业。用我们餐厅的例子来说,就是这个厨师懂得掌握统筹时间,运用等待某一个菜完成的过程中制作其它的菜。

操作系统的结构

操作系统十分复杂。其中有一些特别重要的功能是必不可少的,这些功能被称之为内核。CPU的指令分为两种,一种是特权指令(privileged instruction),一种是非特权指令(non-privileged instruction)。出于安全考虑,特权指令只能由系统内核使用。为了保证这样的安全性,CPU会处于两种状态之间的任意一种,即内核态(Kernel mode)和用户态(User mode)。在内核态中,CPU可以执行特权指令和非特权指令,而用户态只能操作非特权指令。

kernel

那些和各种硬件沟通的操作, 都由系统内核来完成。操作系统经过层层封装和抽象,并提供了安全便捷的系统调用库(System Libraries Calls)。在这个基础上,更多其他的库(General Libraries)被封装并提供给程序调用。当然了,上层的的库也是可以直接执行CPU指令的,但仅局限于非特权指令。