操作系统学习——知识点复习整理提纲

计算机系统概述

操作系统地体系结构

大内核和微内核

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

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

但随着体系结构应用需求的发展,操作系统的设计规模增长,内核功能如进程管理、虚存、I/O 与设备管理、IPC、文件系统等几个层次,层次间接口定义越发复杂,层次间界限也逐渐模糊。

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

需要证明的是,微内核在系统效率上并没有论证由于大内核(陷入过程/通信机制影响了系统的效率)。

疑难区分点

  1. 并行性与并发性的区别和联系

    并行性(parallel)和并发性(concurrency)是既相似又有区别的两个概念,并行性是指两个或多个事件再同一时刻发生,并发性是指两个或多个事件再同一时间间隔内发生。

    在多道程序环境下,并发程序是指在一段时间内,宏观上有多个程序同时运行,但在单处理器系统中每个时刻却仅能有一道程序执行,故微观上这些程序只能分时地交替执行。若在计算机系统中有多个处理器,则这些可以并发执行地程序便被分配到多个处理器上,实现并行执行,即利用每个处理器来处理一个可并发执行地程序。

  2. 特权指令与非特权指令

    特权指令,是指有特殊权限地指令,由于这类指令地权限最大,使用不当将导致整个系统崩溃,如清内存、置时钟、分配系统资源、修改虚存地段表或页表、修改用户地访问权限等。为保证系统安全,这类指令只能用于操作系统其他系统软件,不直接提供给用户使用。

    特权指令必须在核心态执行,用户态下只能使用非特权指令,核心态下可以使用全部指令。在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令。用户态转换为核心态地唯一途径是中断或者异常

进程管理 进程与线程 进程的概念和特征 设计概念(数学不严谨的 Specification):在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间歇性不可再现性的特征(单道的确定性被破坏?)。为此引入了进程(Process)的概念,以便更好描述和控制程序的并发执行,实现操作系统的并发性和共享性(最基本的两个特征),进程曾是分时系统的基本运作单位(面向进程设计的系统),现代系统中多作为线程的容器(面向线程设计的系统)。

具体实现(实体描述 Implementation):为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。系统利用 PCB 来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段、相关数据段和 PCB 三部分构成了进程映像(进程实体)。

注意:PCB 是进程存在的唯一标识!

引入进程实体概念后,我们可以把进程定义为:“进程是进程实体的运行过程(抽象实现),是系统进行资源分配和调度的一个独立单位。”

进程的特征 进程的性质描述。

动态性:进程是程序的一次执行,有执行状态和生命周期。 并发性:多个进程实体同时存在内存中,能够在一段时间内同时执行(联系并发 concurrency 的概念)。并发是进程的重要特征。 独立性: 异步性: 结构性: 进程的阻塞和唤醒 这里描述的进程阻塞过程和唤醒过程实际上就对应了后面一小节,其他调度参见调度的短期调度

正在执行的进程,由于期待的某些事件未发生,由系统自动执行阻塞原语 Block,使自己由运行态变为阻塞态。可见,进程的阻塞时进程自身的一种主动行为(或者理解为内核行为),也因此只有处于运行态的进程(获得 CPU),才可能将其转换为阻塞态。操作:找 PCB、改未阻塞态、插入等待队列。

当阻塞进程所期待的事件出现时,如它所启动的 I/O 操作已完成或其所期待的数据已到达,由有关进程(如提供数据的进程)调用唤醒原语 Wakeup,将等待该事件的进程唤醒。操作:找 PCB、从等待队列中移出、置就绪态、插入就绪队列等待调度器调度。

上下文 Switch(切换)负担的主要来源。在计算机科学中,任务(task)的上下文(英语:context)是一个任务所必不可少的一组数据(该任务可以是进程、线程)。这些数据允许任务中断,在这之后仍可在同一个地方继续执行(现场情况)。上下文的这一概念在中断的任务的场景下具有重大意义,其中,任务在被中断之后,处理器保存上下文并提供中断处理(interrupt service routine)。因此,上下文越小,延迟越小。

上下文的数据可能存放于处理器寄存器、任务所利用的内存、某些操作系统管理的任务所使用的控制寄存器(control registers)。

(笔者自己的调查)针对放置在寄存器(Register)还是内存(Memory)中我个人看法如下:

寄存器:最小执行单位(进程/线程)处就绪态时,CPU 利用寄存器内容做计算,此时上下文数据通过 Load/Store(假定 ARM 指令集)将上下文相关数据从内存传送至寄存器 任务所用内存:最小执行单位(进程/线程)处于阻塞态时,不利用 CPU 时间,此时上下文数据应在内存中保存。 中期调度——挂起的时候应该会把上下文也储存在磁盘上?

进程切换 对于通常的进程而言,其创建、撤销及要求由系统设备完成的 I/O 操作,都是利用系统调用而进入内核,再由内核中的相应处理程序予以完成的。进程切换同样是在内核的支持下实现的,因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。

进程切换是指处理机从一个进程的运行转到另一个进程上运行,在这个过程中,进程的运行环境产生实质性变化。进程切换的过程如下:

保存处理机的上下文,包括程序计数器和其他寄存器。 更新 PCB 信息。 把进程的 PCB 移入相应的队列,如就绪、在某事件的阻塞等队列。 选择另一个进程执行,并更新其 PCB。 更新内存管理的数据结构。 恢复处理机上下文(所选择的另一个进程) 疑难区分点

进程管理

进程与线程

进程的概念和特征

设计概念(数学不严谨的 Specification):在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间歇性不可再现性的特征(单道的确定性被破坏?)。为此引入了进程(Process)的概念,以便更好描述和控制程序的并发执行,实现操作系统的并发性和共享性(最基本的两个特征),进程曾是分时系统的基本运作单位(面向进程设计的系统),现代系统中多作为线程的容器(面向线程设计的系统)。

具体实现(实体描述 Implementation):为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。系统利用 PCB 来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段相关数据段PCB三部分构成了进程映像(进程实体)。

注意:PCB 是进程存在的唯一标识

引入进程实体概念后,我们可以把进程定义为:“进程是进程实体的运行过程(抽象实现),是系统进行资源分配和调度的一个独立单位。”

进程的特征

进程的性质描述。

  • 动态性:进程是程序的一次执行,有执行状态和生命周期。
  • 并发性:多个进程实体同时存在内存中,能够在一段时间内同时执行(联系并发 concurrency 的概念)。并发是进程的重要特征。
  • 独立性
  • 异步性
  • 结构性

进程的阻塞和唤醒

这里描述的进程阻塞过程和唤醒过程实际上就对应了后面一小节,其他调度参见调度的短期调度

正在执行的进程,由于期待的某些事件未发生,由系统自动执行阻塞原语Block,使自己由运行态变为阻塞态。可见,进程的阻塞时进程自身的一种主动行为(或者理解为内核行为),也因此只有处于运行态的进程(获得 CPU),才可能将其转换为阻塞态。操作:找 PCB、改未阻塞态、插入等待队列。

当阻塞进程所期待的事件出现时,如它所启动的 I/O 操作已完成或其所期待的数据已到达,由有关进程(如提供数据的进程)调用唤醒原语Wakeup,将等待该事件的进程唤醒。操作:找 PCB、从等待队列中移出、置就绪态、插入就绪队列等待调度器调度。

上下文

Switch(切换)负担的主要来源。在计算机科学中,任务(task)的上下文(英语:context)是一个任务所必不可少的一组数据(该任务可以是进程、线程)。这些数据允许任务中断,在这之后仍可在同一个地方继续执行(现场情况)。上下文的这一概念在中断的任务的场景下具有重大意义,其中,任务在被中断之后,处理器保存上下文并提供中断处理(interrupt service routine)。因此,上下文越小,延迟越小。

上下文的数据可能存放于处理器寄存器、任务所利用的内存、某些操作系统管理的任务所使用的控制寄存器(control registers)。

(笔者自己的调查)针对放置在寄存器(Register)还是内存(Memory)中我个人看法如下:

  • 寄存器:最小执行单位(进程/线程)处就绪态时,CPU 利用寄存器内容做计算,此时上下文数据通过 Load/Store(假定 ARM 指令集)将上下文相关数据从内存传送至寄存器
  • 任务所用内存:最小执行单位(进程/线程)处于阻塞态时,不利用 CPU 时间,此时上下文数据应在内存中保存。

中期调度——挂起的时候应该会把上下文也储存在磁盘上?

进程切换

对于通常的进程而言,其创建、撤销及要求由系统设备完成的 I/O 操作,都是利用系统调用而进入内核,再由内核中的相应处理程序予以完成的。进程切换同样是在内核的支持下实现的,因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。

进程切换是指处理机从一个进程的运行转到另一个进程上运行,在这个过程中,进程的运行环境产生实质性变化。进程切换的过程如下:

  1. 保存处理机的上下文,包括程序计数器和其他寄存器。
  2. 更新 PCB 信息。
  3. 把进程的 PCB 移入相应的队列,如就绪、在某事件的阻塞等队列。
  4. 选择另一个进程执行,并更新其 PCB。
  5. 更新内存管理的数据结构。
  6. 恢复处理机上下文(所选择的另一个进程)