第一章 计算机系统概述

内容摘抄自《王道——操作系统考研复习指导》

知识框架
概 论 { 特 征 { 并 发 共 享 虚 拟 异 步 目 标 和 功 能 { 计 算 机 系 统 资 源 的 管 理 者 用 户 与 计 算 机 系 统 之 间 的 接 口 { 命 令 接 口 程 序 接 口 G U I 扩 充 机 器 发 展 — — 批 处 理 操 作 系 统 → 分 时 操 作 系 统 → 实 时 操 作 系 统 → 网 络 和 分 布 式 系 统 运 行 机 制 { 中 断 和 异 常 系 统 调 用 体 系 结 构 { 大 内 核 微 内 核 概论 \begin{cases} 特征\begin{cases} 并发\\ 共享\\ 虚拟\\ 异步 \end{cases} \\目标和功能\begin{cases} 计算机系统资源的管理者 \\用户与计算机系统之间的接口\begin{cases}命令接口\\程序接口\\GUI \end{cases} \\扩充机器 \end{cases} \\发展——批处理操作系统\rightarrow 分时操作系统\rightarrow 实时操作系统 \rightarrow 网络和分布式系统 \\运行机制\begin{cases} 中断和异常\\ 系统调用 \end{cases} \\体系结构\begin{cases} 大内核\\ 微内核 \end{cases} \end{cases} GUI{{

1.1 操作系统的基本概念

1.1.1 操作系统的概念

计算机系统自下而上可以分为4部分:

  • 硬件
  • 操作系统
  • 应用程序
  • 用户

操作系统(Operating System,OS)指的是控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其它软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件。


1.1.2 操作系统的特征

操作系统的基本特征包括并发、共享、虚拟和异步

  • 并发(Concurrence)

    操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。

    注意并发并行的区别:操作系统的并发性是通过分时(时间片)来实现的,宏观上有多道程序在运行,微观上这些程序是分时交替执行的。而操作系统的并行性需要有相关硬件的支持,入多流水线或多处理机硬件环境。

  • 共享(Sharing)

    资源共享即共享,是指操作系统中的资源可供内存中多个并发执行的进程共同使用。

    共享可分为以下两种资源共享方式

    • 互斥共享方式
    • 同时访问方式

    并发和共享是操作系统两个最基本的特征,两者之间护卫存在的条件。

  • 虚拟(Virtual)

    虚拟是指吧一个物理上的实体变成若干逻辑上的对应物。比如下面的情况

    • 虚拟处理技术是通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器。将一个物理上的CPU虚拟为多个逻辑上的CPU,称为虚拟处理器
    • 可以采用虚拟存储器技术将一台物理I/O设备虚拟为多台逻辑上的I/O设备,以便从逻辑上扩充存储器的容量,比如虚拟内存。

    因此,操作系统的虚拟技术可归纳为:时分复用技术,如处理器的分时共享;空分复用技术,如虚拟存储器。

  • 异步(Asynchronism)

    多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,二十走走停停的,它以不可预知的速度向前推进,这就是进程的异步性。

    只要运行环境相同,操作系统就必须保证多次运行进程后都能获得相同的结果。


1.1.3 操作系统的目标和功能

为了给多道程序提供良好的运行环境,操作系统应具有以下几方面的功能:处理机管理、存储器管理、设备管理和文件管理。

为了方便用户使用操作系统,还必须向用户提供接口。

同时操作系统可用来扩充机器,以提供方便的服务、更高的资源利用率。

  • 操作系统作为计算机系统资源的管理者

    • 处理机管理

      处理机的分配和运行都以进程(或线程)为基本单位,因而对处理机的管理可归结为对进程的管理。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度。

    • 存储器管理

      存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存的分配与回收、地址映射、内存保护与共享和内存扩充等功能。

    • 文件管理

      计算机中的信息都是以文件的形式存在的,操作系统中负责文件管理的部分称为文件系统。文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等。

    • 设备管理

      设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虚拟设备等功能。

  • 操作系统作为用户与计算机硬件系统之间的接口

    ​ 为了让用户方便、快捷、可靠地操纵计算机硬件并运行自己的程序,操作系统还提供了用户接口。操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业的执行;另一类是程序接口,编程人员可以使用它们来请求操作系统服务。

    • 命令接口(允许用户直接使用)

      使用命令接口进行作业控制的主要方式有两种,即联机控制方式和脱机控制方式。

      • 联机命令接口又称为交互式命令接口,用户输入一条命令,控制权就交给了操作系统,操作系统完成指定的功能后再将控制权交还给用户。
      • 脱机命令接口又称为批处理命令接口,它由一组作业控制命令组成。脱机用户不能直接干预作业的运行,操作系统按命令清单逐一执行。
    • 程序接口(允许用户通过程序间接使用)

      程序接口由一组系统调用(也称广义指令)组成,用户通过再程序中使用这些系统调用来请求操作系统为其提供服务,如使用外部设配,申请分配和回收内存等操作。

      当前最为流行的是图形用户界面(GUI),即图形接口。

  • 操作系统用作扩充机器

    没有任何软件支持的计算机称为裸机。裸机在最里层,其外面是操作系统。通常把覆盖了软件的机器称为扩充机器虚拟机


1.2 操作系统的发展与分类

1.2.1 手工操作阶段(此阶段无操作系统)

使用纸带机,效率低下,所有工作都需要人工干预。

1.2.2 批处理系统

为了解决人机矛盾以及CPU和I/O设备之间速度不匹配的矛盾,出现了批处理系统,按发展顺序又可以分为单道批处理系统多道批处理系统

  • 单道批处理系统:系统对作业的处理是成批进行的,但内存中始终保持一道作业。单道处理系统中如果处理器发出IO请求后,告诉的CPU便处于等待底数的IO完成的状态。为了进一步提高资源的利用率和系统的吞吐量,引入了多道程序技术。

  • 多道批处理系统:允许多个程序同时进入内存并允许它们在CPU中交替的运行,这些程序共享系统中的各种软硬件资源。当一道程序因IO请求而暂停运行时,CPU便立即转去运行另一道程序。其在宏观上是并行的,但在微观上串行。提供了资源利用率,但是也增加了资源调度和管理的复杂性。

1.2.3 分时操作系

所谓分时技术,是指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给各联机作业使用。但是在一些应用场景下就不太适用(比如飞机订票系统或导弹制导系统,其对实时性要求较高,需要在规定时间内做出处理),因而提出了实时操作系统。

1.2.4 实时操作系统

为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统。根据时间限制分为两种情况。

  • 硬实时系统:这类系统必须提供绝对保证,让某个特定的动作在规定的时间内完成,如飞行器的飞行自动控制系统。
  • 软实时系统:这类系统能够接收偶尔违反时间规定且不会引起任何永久性的损害,如飞机订票系统、银行管理系统。

实时操作系统的主要特点是及时性和可靠性。

1.2.5 网络操作系统和分布式计算机系统

  • 网络操作系统把计算机中的各台计算机有机地结合起来,提供一种统一、经济而有效的使用割台计算机的方法、实现各台计算机之间数据的相互传送。是一种能代替操作系统的软件程序。
  • 分布式计算机系统是由多台计算机组成的系统,系统中的若干计算机相互协同完成同一任务。

1.2.6 个人计算机系统

常见的如Windows、Linux、IOS等。


1.3 操作系统的运行环境

1.3.1 操作系统的运行机制

计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序,一种是用户程序

前者(内核程序)是后者的管理者,因此要执行一些特权指令,而被管理程序(用户程序)则出于安全考虑不能执行这些指令。

所谓特权指令,是指计算机中不允许用户直接使用的指令,比如I/O指令置终端指令存用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令

在具体实现上,将CPU的状态划分为用户态(目态)和核心态(又称管态、内核态)。用户程序运行在用户态,内核程序运行在核心态。

内核是计算机上配置的底层软件,是计算机功能的延申。大多数操作系统的内核包括4方面的内容

  • 时钟管理

    时钟的第一功能是计时。另外,通过时钟中断的管理,可以实现进程的切换。例如,在分时操作系统中采用时间片轮转调度,在实时操作系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等。

  • 中断机制

    键盘或鼠标的信息输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。可以说,现代操作系统是靠中断驱动的软件。

    中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。

  • 原语

    按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,它们各自完成了一个规定的操作。它们的特点如下:

    • 处于操作系统的最底层,是最近硬件的部分。
    • 这些程序的运行具有原子性,其操作只能一气呵成(主要从系统安全性和便于管理考虑)
    • 这些程序的运行时间都比较短,而且调用频繁。

    通常把具有这些特点的程序称为原语(Atomic Operation)。定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。

  • 系统控制的数据结构及处理

    系统中用来等级状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:

    • 进程管理:进程状态管理、进程调度和分派、创建与撤销进程控制块等。
    • 存储器管理:存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
    • 设备管理:缓冲区管理、设备分配和回收。

1.3.2 中断和异常的概念

操作系统中引入核心态和用户态两种概念后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。通过发生中断或异常,运行用户态的CPU会立即进入核心态。

  • 中断和异常的定义

    中断(Interruption) 也称外中断,指来自CPU执行指令以外的事件的发生。比如一些设备发起的I/O结束中断,时钟中断等。

    异常(Exception) 也称内中断,指源自CPU执行指令内部的事件,比如地址越界、算术溢出等引起的事件。

    内中断和外中断的联系与区别如下:
    中 断 { 内 中 断 { 自 愿 中 断 — 指 令 中 断 强 迫 中 断 { 硬 件 故 障 软 件 中 断 外 中 断 ( 强 迫 中 断 ) { 外 设 请 求 人 的 干 预 中断\left\{ \begin{aligned}内中断 \left\{\begin{aligned} 自愿中断—指令中断 \\ 强迫中断\left\{\begin{aligned}硬件故障\\软件中断 \end{aligned}\right.\end{aligned}\right. \\外中断(强迫中断) \left\{\begin{aligned} 外设请求\\人的干预\end{aligned}\right.\end{aligned}\right. {(){

  • 中断处理的过程

    1)关中断:CPU响应中断以后,首先要保护程序的现场状态。在保护现场的过程中,CPU不应相应更高级中断源的中断请求,否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序。

    2)保存断点:为保证中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来的程序的断点(即程序计数器PC)保存起来。

    3)中断服务程序寻址:取出中断服务程序的入口地址送入程序计数器PC。

    4)保存现场和屏蔽字:进入中断服务程序后,首先要保存现场,现场信息一般是程序状态字寄存器PSWR和某些通用寄存器的内容。

    5)开中断:允许更高级的中断请求得到响应。

    6)执行中断服务程序:中断请求的目的。

    7)关中断:保证在恢复现场和屏蔽字时不被中断。

    8)恢复现场和屏蔽字: 恢复寄存器中的内容等。

    9)开中断,中断返回:开启中断,并返回到源程序的断点处。


1.3.3 系统调用

系统调用是指用户在程序中调用操作系统所提供的一些子功能,系统调用可以视为特殊的公共子程序。这些系统调用按功能大致可分为如下几类。

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。
  • 文件管理。完成文件的读、写、创建及删除等功能。
  • 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
  • 进程通信。完成进程之间的消息传递或信号传递等功能。
  • 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能。

访管指令:用户可以执行陷入指令(又称访管指令或trap指令)来发起系统调用,请求操作系统提供服务,操作系统使用某些特权指令完成对应功能。访管指令通过产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断


1.4 操作系统的体系结构

1.4.1 大内核和微内核

操作系统在核心态应该提供什么服务、怎样提供服务?有关这一问题的回答形成了两种主要的体系结构:大内核和微内核。

大内核将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。

为解决操作系统的内核代码难以维护的问题,提出了微内核的体系结构。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要再核心态执行的功能移到用户态执行,从而降低了内核设计的复杂性。那些移除内核的操作系统代码根据分层的原则被划分为若干服务程序,它们的执行相互独立,交互借助于微内核进行通信。

微内核结构的最大问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大。但是体系结构带来的性能的提升足以弥补切换开销带来的缺陷。