-
第一章 计算机系统概述
-
操作系统基本概念
-
操作系统的概念
-
操作系统特征
- 并发
- 共享
- 虚拟
- 异步
-
操作系统的目标和功能
-
-
操作系统发展历程
- 手工操作
- 批处理
- 分时操作系统
- 实时操作系统
- 网络操作系统和分布式操作系统
- 个人计算机操作系统
-
操作系统运行环境
-
处理器运行模式
- 用户态
- 核心态
-
指令
-
内核的概念
- 时钟管理
- 中断机制
- 原语
- 系统控制的数据结构及处理
-
中断和异常的概念
-
系统调用
-
-
操作系统结构
- 分层法
- 模块化
- 微内核
- 外核
-
操作系统引导
-
虚拟机
- 第一类虚拟机管理程序
- 第二类虚拟机管理程序
-
操作系统基本概念
操作系统的概念
- 最基本系统软件
- 控制管理计算机系统的软硬件资源
- 为用户和其他软件提供接口与环境的程序集合
操作系统特征
- 并发和共享是最基本的两个性质
- 并发和共享互为存在条件
- 没有并发和共享就没有虚拟和异步
-
并发
两个或多个事件在同一时间段发生
利用 I/O 操作的间隔时间交替调度运行,保持 cpu 忙碌状态
注意与并行的差异
-
共享
系统中的资源可供内存中多个并发执行的进程共同使用
-
互斥共享方式
A 用完 B 才可用,如程序对摄像头权限的调用,打印机打印文件
-
同时共享方式
A 使用到一半时暂停使用,此时 B 可使用
-
-
虚拟
将物理实体虚拟为多个逻辑上的虚拟物理实体
-
时分复用技术
如虚拟处理器,使得多个用户的任务能够在同一时段并发运行,每个用户都感觉存在专门的 cpu 为其服务
-
空分服用技术
利用存储器的空闲空间分区域存放和运行其他的多道程序,以此来提高内存的利用率
-
-
异步
一个任务启动后,程序可以继续执行其他任务,而不需要等待该任务的结果
例如当客户端发送给服务端请求时,在等待服务端响应的过程中,客户端可以做其他事,节约时间,提高效率
操作系统的目标和功能
作为计算机系统资源的管理者
-
处理机管理
-
处理机的分配和运行都以进程为基本单位,处理机管理=进程管理
-
主要功能:进程控制 + 进程同步 + 进程通信 + 死锁处理 + 处理机调度
-
-
存储器管理
- 为了给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率
- 主要功能:内存分配与回收 + 地址映射 + 内存保护 + 共享和内存扩充
-
文件管理
- 计算机的信息都是以文件的形式存在的
- 主要功能:文件存储空间的管理 + 目录管理 + 文件读写管理和保护
-
设备管理
- 完成用户的 I/O 请求,方便用户使用各种设备,提高设备利用率
- 主要功能:缓冲管理 + 设备分配 + 设备处理 + 虚拟设备
作为用户和计算机硬件系统之间的接口
-
命令接口(提供给用户)
-
联机命令接口
又称交互式控制接口,例如 linux 服务器的 shell 控制台
-
脱机命令接口
又称批处理命令接口,由一组作业控制命令组成,用户不能直接干预程序运行,只能使用作业控制命令编写一组命令,提交给操作系统,操作系统再逐条执行
-
-
程序接口(提供给程序员)
由一组系统调用组成,用户通过程序中使用这些系统调用来请求操作系统为其提供服务,系统调用是操作系统的一部分
另外,还有图形接口(GUI),图形接口通过点击直观的按钮来使用系统调用命令,图形接口不是操作系统的一部分,但其调用的命令是
实现了对计算机资源的扩充
- 裸机:没有任何软件支持的计算机
- 扩充机器/虚拟机:覆盖了软件的机器
操作系统发展历程
操作系统运行环境
处理器运行模式
运行模式可以划分为用户态(目态)和核心态(管态、内核态)
cpu 的状态保存在 cpu 内部的一个寄存器中——程序状态字(PSW)寄存器,其中 1 表示内核态,0 表示用户态
-
核心态
- 时钟管理相关指令
- 中断机制相关指令
- 原语相关指令
- 系统控制的数据结构与处理(进程调度程序、进程切换)
-
用户态
- 命令解释程序
- 系统调用
- 外部中断
如何变态:
- 核心态——> 用户态,发生在中断返回用户程序时,使用修改 PSW 的特权指令
- 用户态——> 核心态,发生在中断时,通过硬件完成
指令
指令是机器语言,是 CPU 能直接看懂并执行操作的
-
特权指令
不允许用户直接使用的指令,如:置/关中断、清内存、置时钟、访问程序状态、存取特殊寄存器、修改 PSW 寄存器
-
非特权指令
用户可以直接使用的指令,不能直接访问系统的软硬件资源,防止用户造成破坏
cpu 执行两种不同性质的程序:
- 操作系统内核程序(可以使用特权指令)
- 用户自编程序(不能使用特权指令)
前者是后者的管理者
内核的概念
操作系统包含了内核,内核是计算机上配置的最底层软件,是连接应用程序和硬件的桥梁,由两部分内容构成:
- 与硬件关联紧密的模块(硬件抽象层)
- 运行频率较高的程序
大多数操作系统的内核包含四个内容:
-
时钟管理
- 向用户提供标准系统时间
- 分时操作系统的时间片轮转调度
- 实时操作系统的按截止时间控制运行
- 批处理系统衡量作业的运行程度
-
中断机制
中断机制中只有一小部分属于内核
保护和回复中断现场的信息,转移控制权到中断处理程序
-
原语
- 由若干条指令构成
- 处于操作系统底层,最接近硬件
- 操作只能一气呵成不能中断
- 运行时间短且调用频繁
- 原语的作用主要是为了实现进程的通信和控制
-
系统控制的数据结构及处理
- 进程管理
- 存储器管理
- 设备管理
中断和异常的概念
-
中断(外中断)
由 CPU 外部设备发出的请求,是与当前正在执行的指令无关的异步事件,也不阻止任何指令完成
执行时间:CPU 每执行完一条指令即检查中断请求信号线,检测到则进入中断响应期
-
可屏蔽中断
INTR 线发出的,CPU 可以根据其优先级接受或忽略的中断,如打印机中断
-
不可屏蔽中断
通过 NMI 线发出的,紧急硬件故障,如电源掉电
-
-
异常(内中断)
CPU 执行指令时,CPU 自身检测到的与正在执行的指令相关的同步事件,不可屏蔽
执行时间:执行指令时检查
-
故障
指令启动后,结束前检测到的异常事件,通常可以被故障处理程序修正
非法操作码、缺页故障、除数为 0、运算溢出
-
自陷(陷阱、陷入)
预先安排的“异常事件”,用于在用户态调用操作系统内核程序,例如系统调用
-
终止
出现使 CPU 无法继续执行的硬件故障
-
系统调用
-
定义
- 操作系统给应用程序和程序员提供的用于请求系统服务的接口
- 使用系统调用需要触发自陷(trap/访管指令)
- 操作系统通过提供系统调用避免用户直接访问硬件
-
按功能分类
-
设备管理
设备的请求或释放,设备启动
-
文件管理
文件读写创建删除
-
进程控制
进程创建、撤销、阻塞、唤醒
-
进程通信
进程之间信息传递或信号传递
-
内存管理
内存的分配、回收、获取作业占用内存大小及起始地址
-
-
调用过程
- 传参
- 自陷(执行系统调用),发生于用户态,此时进程进入阻塞态
- 操作系统内核处理系统调用请求,发生于内核态
- 返回应用
操作系统结构
分层法
将操作系统分层,最底层为硬件,最顶层为用户接口,每层只能调用低一层的服务和功能(单向依赖)
-
优点
- 便于系统调试和验证——单向依赖
- 易于扩充和维护,不改变各层之间的接口则不会影响其它层
-
缺点
- 难以合理定义各层,固定依赖关系后不够灵活
- 效率较差,执行一个功能需要跨越多层,增加开销
模块化
将操作系统按照功能划分为具有一定独立性的模块,并规定好各个模块之间的接口,还可以将模块再划分为子模块(模块——接口法)
模块独立性的衡量有两个标准:
- 内聚性:模块内各部分联系的紧密程度,越高独立性越好
- 耦合度:模块间相互联系影响程度,越低独立性越好
-
优点
- 提高操作系统设计的正确性,可理解性和可维护性
- 增强操作系统的可适应性
- 加速操作系统开发过程
-
缺点
- 模块之间的接口规定难以满足实际需求
- 各模块同步开发难以确定统一基础,无法找到可靠决定顺序
宏内核
也称单内核或大内核。将系统的主要功能模块都作为一个紧密整体运行在核心态,各管理模块共享信息,具有性能优势
⭐微内核
-
定义
只把核心功能放入内核,其余功能以用户进程的形式运行在用户态,借助微内核进行通信,即采用客户/服务器模式
- 与硬件处理联系紧密的部分
- 一组关键原语,仅包括建立一个系统必需的几个部分
- 客户与服务器之间的通信
-
基本功能
微内核结构利用“机制/策略分离”原理,机制和与硬件紧密的部分放入内核
-
进程管理
- 进程通信
- 进程切换
- 进程调度
- 多处理机同步
其余内容如用户进程分类、优先级确认方式等都属于策略
-
低级存储器管理
如逻辑地址转换为物理地址,页表机制,地址变换机制,依赖硬件因此属于微内核
实现虚拟存储器管理、应使用的页面置换算法、内存分配与回收的策略应放于内核外
-
中断和自陷处理
捕获中断和自陷,并进行中断响应处理,识别后发送给对应服务器处理
-
-
特点
-
扩展性和灵活性
增改功能只需要增改相应服务器,无需改动内核
-
可靠性和安全性
只有微内核处于内核态,处于用户态的模块错误只会导致模块崩溃,而不会使得内核崩溃
-
可移植性
移植平台时只需要改动与 CPU 和 I/O 硬件有关的微内核代码,其余服务器代码与硬件平台无关
-
分布式计算
采用客户/服务器模式,可以很好支持分布式系统和网络系统
由于微内核的高度可靠性,常用于实时、工业、航空、军事领域
-
-
问题
主要为性能问题,需要频繁进行内核态与用户态的切换
外核
内核态程序,为虚拟机分配资源以及检查并确保虚拟机资源不发生冲突
减少了资源的映射层,资源的管理由外核处理,外核记录已分配的各个虚拟机资源
将外核内的多道程序与用户操作系统代码分离
操作系统引导
操作系统引导是指计算机利用 CPU 运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统,一环扣一环地完成上述过程
-
引导过程
-
激活 CPU
- 读取 boot 程序,开始执行 BIOS 指令
-
硬件自检
- BIOS 构建中断向量表
- 通电自检
-
加载带操作系统硬盘
- BIOS 读取硬盘启动顺序,或与用户交互
- CPU 将该存储设备引导扇区加载到**内存**
-
加载引导扇区中的MBR 主引导记录
- MBR 记录了硬盘分区表和磁盘引导程序
-
扫描硬盘分区表,加载活动分区(C 盘)
-
加载 PBR 分区引导记录
- 将活动分区的第一个扇区 PBR 加载到内存
- 寻找活动分区根目录下的启动管理器
-
加载启动管理器
-
加载操作系统
- 将操作系统初始化程序加载到**内存**中执行
-
虚拟机
利用虚拟化技术将一台物理机虚拟化为多台虚拟机
第一类虚拟机管理程序 | 第二类虚拟机管理程序 | |
---|---|---|
物理资源控制权 | 直接控制和分配物理资源 | 依赖宿主 OS 分配资源 |
资源分配方式 | 安装客户 OS 时,需要自行分配物理存储空间,使用类似外核的方式分配物理硬件 | 由一个宿主 OS 的文件作为虚拟磁盘 |
虚拟机性能 | 好 | 差,需要宿主 OS 作为中介 |
支持虚拟机数量 | 更多,不与宿主 OS 争夺资源 | 更少,宿主 OS 本身运行需要占用资源 |
虚拟机迁移性 | 差 | 好,只需要导出虚拟机镜像文件即可 |
运行模式 | 运行在最高特权级,可以执行最高特权指令 | 部分运行在用户态,部分运行在内核态 客户 OS 的系统调用会被截获转换为宿主 OS 的系统调用 |