OSTEP: Ch2: Introduction

22nd September 2020 at 3:59pm

操作系统的核心功能:

  • 虚拟化:将物理硬件抽象成通用的、易用的虚拟形式。这里的虚拟化并不是指 KVM 等虚拟化技术
  • 提供了 API 供开发者操作这台「虚拟机」的方方面面
  • 管理硬件资源,提供给应用程序高效和公平使用的能力

设计目标:

  • 抽象:抽象物理设备、抽象磁盘成为文件系统等等,为使用者提供便利
  • 高性能:OS 带来了抽象,势必也会带来一些性能上的损失(overheads),比如更多的指令消耗更多的时间、占用更多的内存或者磁盘。OS 需要尽可能减少这部分损耗
  • 保护:使不同应用程序之间不被相互影响,保护系统本身不被非法侵入
  • 高可靠性:操作系统需要保护高可靠性,不停机工作

此外还有一些特定场景的设计目标,比如 节能(enery-efficiency) 对于一些 IoT 设备来讲就相对重要。安全(security)适合移动平台(mobility) 也有其各自的场景。

OS 简要发展史:

  1. 一开始计算机只是一些 ,方便开发人员使用
  2. 后来开始产生 内核态和用户态,使得一些核心的操作(比如 I/O、访问物理内存等)仅在内核态下可用,而用户需要使用系统调用(system call)来使 OS 帮你做这部分能力。这种隔离避免了不同用户态程序各自操作系统核心资源带来的混乱
  3. 微机出现后,开始有了 并发 的概念,使得操作系统和硬件可以同时服务于多个应用程序
  4. 当代 PC,集前人智慧,成熟完善,但对新的场景仍有发展,比如移动平台

内容来自 OSTEP: Ch2: Introduction