Skip to content

操作系统基础

1. 基本概念

1.1. 操作系统的目标

  • **方便性(用户):**良好一致的用户接口;

  • **有效性(管理员):**有效利用外设,软硬件资源;

  • **可扩充性:**新增/修改功能模块;

  • 开放性:遵循标准规范;

1.2. 操作系统的作用

  • 作为用户和硬件系统之间的接口;

  • 管理计算机系统资源;

  • 对计算机资源的抽象(用 API 操作硬件);

1.3. 操作系统的特性

  • 三种基本操作系统:多道批处理系统,分时系统,实时系统;

    • 三种系统的共同基本特征:并发,共享,虚拟,异步

    • 不同的特征:

      • 批处理系统:较高资源利用率和吞吐量;

      • 分时系统:响应及时;

      • 实时系统:实时性;

  • 并发(Concurrence)

    • 区分:并行与并发
  • 共享(Sharing)

    • 互斥共享某些系统资源(如打印机)同一时间段内只允许一个进程访问,系统应建立一个机制,确保多个进程对这类资源的互斥访问;

    • 同时访问:同一时间段内允许多个进程“同时”进行访问的系统资源(如磁盘,或一些用重入码编写的文件);

  • 虚拟(Virtual)

    • 时分复用技术

      • 虚拟处理机

      • 虚拟设备

    • 空分复用技术

      • 虚拟磁盘

      • 虚拟主存

  • 异步(Asynchronism)

    • 定义:进程向前推进的速度,程序完成所花费的时间在并发系统中是不可预知的;

    • 原因:由于某些系统资源的互斥性,处于内存中的多个进程提出资源占用请求时可能需要等待,而等待的时间未知,加之进程能获得处理机运行的时间未知,导致并发系统中,一个程序完成所实际需要的时间是不可预知的;

1.4. 操作系统的主要功能

  • 传统 OS:处理机管理,存储器管理,设备管理,文件管理等功能,和提供方便的用户接口

  • 处理机管理:进程控制,进程同步,进程通信,调度(作业调度,进程调度)

  • 存储器管理:内存分配,内存保护,地址映射,内存扩充;

  • 设备管理

    • 主要任务:完成用户进程提出的 IO 请求,提高 CPU 和 IO 设备的利用率,提高 IO 速度;

    • 功能:缓冲管理,设备分配,设备处理;

  • 文件管理:存储空间管理,目录管理,文件读写管理,文件保护;

  • 用户接口:联机接口,脱机接口,图形接口,程序接口;

    • 联机用户接口:命令接口和解释程序;

    • 脱机用户接口:脚本,作业控制语言;

  • 程序接口:为用户程序在执行中访问系统资源而设置的接口,是用户程序取得操作系统服务的唯一途径;

2. 操作系统的发展过程

2.1. 无 OS 的计算机系统

  • 人工操作方式:纸带穿孔直接送入计算机;

    • 缺点:用户独占全部计算资源,CPU 需要等待人工操作,利用率低。
  • 脱机 IO 方式外围机将纸带数据输入磁带,再输入计算机;

    • 磁带输入速度快,减少了 CPU 空闲时间,提高了 IO 速度。

2.2. 单道批处理系统(Simple Batch Processing System)

  • 处理过程:一批作业先输入到磁带上,再在监督程序控制下,由系统连续处理

  • 缺点:系统资源(CPU)利用率低,程序 IO 时,CPU 空闲,且 IO 设备速度低加剧问题;

2.3. 多道批处理系统

  • 基本概念:引入了多道程序设计技术形成的批处理系统

  • 优点

    • 资源利用率高,CPU 能最大限度保持忙碌状态,同时提高了内存的利用率和 IO 设备利用率;

    • 系统吞吐量大,单位时间内能处理的工作数提高;

    • 系统调度开销小

  • 缺点

    • 周转时间延长,由于作业排队处理,对于单个作业,其周转时间可能较长;

    • 无交互能力,用户提交作业到系统后,无法与作业进行交互,修改与调试程序极为不便

  • 需要解决的问题

    • 处理机分配:满足多个程序运行需要的同时,提高处理机利用率;

    • 内存分配和保护;

    • IO 设备分配:方便用户使用设备的同时,提高设备利用率;

    • 文件的组织与管理;

    • 作业管理;

    • 用户与系统的接口;

2.4. 分时系统(Time Sharing System)

  • 为了满足**人机交互(共享主机)**的需求,而引入的一种新型 OS;

  • 关键概念:时间片,时间片轮转

  • 关键问题:实现用户与作业的交互

    • 及时接收作业(使用多路卡)

    • 及时处理作业

      • 作业直接进入内存

      • 作业轮转运行,每个作业每次只能运行一个时间片

  • 特征:多路性,独立性,及时性,交互性;

2.5. 实时系统(Real Time System)

  • 常见的几种实时系统:工业或武器控制 OS,信息查询 OS,多媒体 OS,嵌入式;

  • 实时任务的类型

    • 周期性和非周期性任务:看外部设备发出的激励信号有无明显周期性,但都需要具有截止时间

    • 硬实时任务和软实时任务:是否必须满足截止时间要求,对于软实时任务,错过截止时间对系统产生的影响也不大。

3. 程序运行环境

3.1. CPU 运行模式

  • 内核模式和用户模式

    • 内核态(管态,系统态):系统管理程序执行时的状态。具有较高的特权,能执行一切指令,访问所有的寄存器和存储区;

    • 用户态(目态):用户程序执行时的状态。具有较低的特权,只能执行规定指令;访问指定的寄存器和存储区;CPU 的指令集分为特权指令和非特权指令两类

    • 注意:以上两种为模式为概括性描述,实际 CPU 工作模式远多于这两种;

3.2. 中断和异常处理

  • 中断(Interrupt)是处理机对系统内外发生的异步事件的响应;

  • 异常(或陷阱,Trap)系统发起的一次确定的服务过程;

3.3. 系统调用

  • 系统调用是应用程序请求 OS 内核完成某功能的一种过程调用;

  • 系统调用是特殊的过程调用,和一般的过程调用由如下区别

    • 系统调用时,CPU 会运行在不同的系统状态,涉及到状态切换

    • 返回值问题;

    • 嵌套调用;

  • 区分:看是否涉及到 OS 完成某一功能,一般与 IO 有关

3.4. 程序的链接和装入

  • 用户程序要在系统中运行,通常要经过以下步骤(静态链接)

    • 编译(Compile):由编译程序进行编译,生成若干个模块(Object Module);

    • 链接(Link):由链接程序将上述模块以及所需库链接,形成完整的装入模块(Load Module)

    • 装入(Load):由装入程序将模块装入内存(装入程序为系统软件);

    • 图示

      img_49BQfYNUdt

  • 程序的装入方式

    • 绝对装入(Absolute Loading Mode)

      • 场合:单道批处理 OS;

      • 特点:程序装入内存的地址是固定的,编译和链接时产生的都是物理地址,无逻辑地址;

    • 可重定位装入(Relocation Loading Mode)

      • 特点:装入时将程序指令中的逻辑地址全部替换为内存中的物理地址;

      • 也称为静态重定位装入

    • 动态运行时装入(Dynamic Runtime Loading)

      • 特点:装入时,程序指令中的逻辑地址不进行替换,当运行到相关指令时,再动态计算物理地址;
  • 程序的链接方式

    • 静态链接(Static Linking)

      • 将程序所用到的库函数实现全部封装至可执行文件中;

      • 特点:程序一般比较大,但是跨平台性好;

    • 装入时动态链接(Load-time Dynamic Linking)(不常考)

    • 运行时动态链接(Runtime Dynamic Linking)

      • 运行到缺失实现的函数时,再去库文件搜索对应实现,装入内存运行;

      • 特点:程序本体精简,体积小;

3.5. 程序运行时的内存映像与地址空间(了解)

  • 装载到内存中的程序代码区域称为程序的内存映像,按存放的内容可分为 3 个区域

    • 程序区:存放程序指令;

    • 静态存储区:存储永久数据;

    • 动态存储区:存放临时数据;

4. 操作系统体系结构(了解)

4.1. 分层

  • 分层法的设计任务:在目标系统 An 和裸机系统(又称宿主系统)A0 之间,铺设若干个层次的软件 A1,A2,,An1,使得 An 通过这些中间层能够在 A0 上运行;

  • 优缺点

    • 优点

      • 容易保证系统正确性;

      • 容易扩充,可维护性好;

    • 缺点

      • 系统开发效率低(每层之间都要建立通信机制,且 OS 的每个功能都要自上而下穿越多个层次,修改代价高)

4.2. 模块化设计

  • 概念:一种结构化的程序设计技术,基于“分解”和“模块化”的原则来控制大型软件的复杂度;按其功能划分为若干个具有一定独立性和大小的模块

  • 关键:模块化设计中,关键问题是模块的划分设计模块之间的接口

4.3. 宏内核

  • 概念将内核(进程、线程和内存管理,文件系统,驱动,网络协议等核心功能)从整体上作为一个大过程实现,同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。

4.4. 微内核(主流)

  • 足够小的内核:指精心设计的,能够实现现代 OS 最基本功能的小型内核,通常包含

    • 与硬件处理紧密相关的部分;

    • 现代 OS 较为基本的功能;

    • 客户和服务器之间的通信;

  • 基于客户/服务器模式(C/S 模式)

    • 程序进行内核调用时,类似于客户端向服务端发送请求的过程;
  • 基于“策略与机制分离”原则;

    • 机制:指内核具有的功能特性,例如进程切换功能;

    • 策略:机制的具体算法实现,这部分不放在内核中;

  • 面向对象技术;

4.5. 外核

  • 主要任务是为虚拟机分配资源,并确保不同虚拟机之间的资源相互独立

  • 每个用户层的虚拟机可以运行自己的 OS,但只能使用自己申请并获得分配的资源来运行;

5. 操作系统引导

5.1. 传统 BIOS 引导和 UEFI 引导

  • 传统 BIOS 引导过程

    img_GhePtMUfBe

    • 第一步:BIOS 启动,BIOS 内 bootstrap 程序启动,执行硬件检查;

    • 第二步:读取 MBR(Master Boot Record,主引导记录)内容,启动激活分区;

    • 第三步:从激活分区读取对应系统的引导加载程序(如 Windows 是 bootmgr);

    • 第四步:读取 BCD(Boot Configuration Data,启动设置数据);

    • 第五步:启动系统(如 Windows 是启动 winload.exe);

  • UEFI 引导过程(现在主流)

    img_To7mG0K4ld

    • FAT 分区是磁盘上的一个分区;

6. 虚拟机

6.1. 第一类虚拟机

  • 虚拟机监控程序,在逻辑上运行并具备了多道程序功能;

  • 该系统向上层提供若干台虚拟机,是裸机硬件的精确复制品;

6.2. 第二类虚拟机

  • 提供虚拟系统服务,管理程序,利用宿主 OS 及其文件系统创建进程,存储文件等;

  • 例如:虚拟机 Linux(WSL)

小结

  • 基本概念;

  • 用甘特图分析多道批处理系统;