了解操作系统是什么,是学习操作系统的首要问题。

# 操作系统基础

# 操作系统的概念和功能

操作系统 (operating system, OS) 是在硬件和应用之间的软件层。其作用是管理计算机硬件为应用程序提供基础充当计算机硬件与用户之间的媒介

# 操作系统的特征

操作系统具有四个特征,分别是并发 (concurrence)、共享 (sharing)、虚拟 (virtual) 和异步 (asynchronism)。这四个特征都是操作系统在解决应用程序运行过程中所采用的主要方案。其中,并发和共享是两个最基本的特征,两者互为存在条件。

并发和并行的区别:并行 (parallel) 是指在某一时刻下,多个应用程序独立执行同时执行,一般是宏观角度。而并发指某一时间间隔下,多个程序同时执行。其在微观上依然是顺序执行的。

# 操作系统的设计

# 策略和机制

操作系统设计的一个重要原则是策略和机制相分离策略 (policy) 即 what will be done, 指操作系统的具体实现方法,而机制 (mechanism) 即 how to do something, 指宏观上采用何种方法。例如:定时器是一种保护 CPU 的机制,但是为某个特定用户应将定时器设置成多长时间,就是一个策略问题。

# 操作系统的发展

操作系统的发展经历了早期人机交互阶段批处理阶段分时操作系统实时操作系统四个阶段。

# 早期人机交互

早期人机交互过程无真正的操作系统,程序的装入和运行操作依赖手工完成。

# 批处理阶段

批处理系统的思想是将作业中的共性内容合并处理,尽可能减少人工操作。

批处理阶段按发展历程可以分为单道批处理系统多道批处理系统

单道批处理系统的特点包括:

  1. 自动性;多个顺序作业可以自动运行,无需人工干预。
  2. 顺序性:作业顺序装入内存并顺序完成;
  3. 单道性:内存中每次只有一道程序运行。

多道批处理系统的特点包括:

  1. 多道性:内存中同时存放多道相互独立的程序;
  2. 宏观并行;
  3. 微观串行。

因此,多道批处理系统首先体现了并发的特点。

此后,还出现了脱机输入输出技术,用来解决批处理过程中 I/O 速度慢带来的 CPU 利用率低的问题。

批处理系统的缺点是仅以 CPU 利用率作为评价指标,没有人机交互。

# 分时操作系统

分时操作系统是目前个人计算机操作系统的主要类型。分时技术指的是将处理器的运行时间划分成很短的时间片,按时间片将处理器分配给各程序使用。分时操作系统可以兼顾 CPU 利用率与用户体验,但优化中用户体验的优先级高于 CPU 利用率。

分时系统的主要特征如下:

  1. 同时性:允许多个用户同时使用同一台计算机;
  2. 交互性:用户可以方便地与系统交互;
  3. 独立性:使用同一计算机的多个用户可以彼此独立进行操作,互不干扰;
  4. 及时性 (友好性):用户的请求可以在很短的时间内得到响应。

# 实时操作系统

实时操作系统是为了解决某些时间限制短于时间片长度的紧急任务而诞生的,其完成紧急任务时不需要进行时间片排队。实时操作系统按照任务是否要严格遵守完成时刻可以分为硬实时系统和软实时系统。

# 操作系统的硬件基础

# 冯・诺依曼架构

在现代计算机中,冯・诺依曼架构即 I/OCPU存储器三者组成的计算机结构。其存在一些局限,例如:

  1. CPU 与内存的交互引起的内存墙问题
  2. 数据与指令不区分,指令等数据或数据等指令
  3. 串行顺序处理,缺乏数据并行能力

# 指令集架构

指令集架构 (Instruction Set Architecture, ISA) 是 CPU 和软件之间的桥梁。ISA 主要包括:

  • 指令集 (instruction set): 包括多种不同功能的指令,用来实现数据移动、计算、内存访问、子程序调用等。
  • 特权级 (privilege levels): 可以大致划分为用户态和内核态,但在不同的指令集架构中有更加个性的划分。
  • 寄存器 (register): 寄存器也是指令集架构的重要组成部分。指令集架构中需要规定各寄存器的功能和使用规范。例如,8086 中的 CS 寄存器 (code segment) 只能用于存储代码段偏移,不能用于存储一般的计算结果。又如,在 C++ 内联汇编中指定的内联汇编中,指定的同一虚拟寄存器可以映射到不同的物理寄存器,以提高指令运行效率。

此外,执行模式、安全扩展、性能加速扩展、中断处理,I/O 控制,流水线等指令调度方式等内容也属于 ISA.