2023-06-30 17:08:20 +08:00
|
|
|
|
---
|
|
|
|
|
title: "《操作系统》计算机系统概述"
|
|
|
|
|
date: 2022-08-18T15:53:40+08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 操作系统的基本概念
|
|
|
|
|
|
|
|
|
|
### 操作系统的概念
|
|
|
|
|
|
|
|
|
|
* 负责管理协调硬件、软件等计算机资源的工作
|
|
|
|
|
* 操作系统为上层用户,应用程序提供简单易用的服务
|
|
|
|
|
* 操作系统是一种系统软件
|
|
|
|
|
|
|
|
|
|
### 操作系统的特征
|
|
|
|
|
|
|
|
|
|
* 并发和共享是最基本的两个性质
|
|
|
|
|
* 并发和共享互为存在条件
|
|
|
|
|
* 资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题
|
|
|
|
|
* 若系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法并发执行
|
|
|
|
|
* 没有并发和共享就谈不上虚拟和异步
|
|
|
|
|
|
|
|
|
|
#### 并发
|
|
|
|
|
|
|
|
|
|
* 并发指两个或多个事件在同一时间间隔内发生
|
|
|
|
|
|
|
|
|
|
* 并行:系统具有同时进行运算或操作的特性(同时刻)
|
|
|
|
|
* 可并行的有【处理机与设备】【处理机与通道】【设备与设备】
|
|
|
|
|
* 不可并行的有【进程与进程】
|
|
|
|
|
* 真正实现并行的为多核处理机
|
|
|
|
|
|
|
|
|
|
同一时间间隔(并发)和同一时刻(并行)的区别:
|
|
|
|
|
|
|
|
|
|
* 宏观上有多道程序同时进行,微观上这些程序依旧是分时交替执行的,操作系统的并发性正是分时得以实现的
|
|
|
|
|
* 并行性则是具有同时进行运算或操作的特性,同一时刻能完成两种或两种以上的工作,需要硬件的支持
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 共享
|
|
|
|
|
|
|
|
|
|
共享通常指系统中的资源可供内存中多个并发执行的进程共同使用,拥有两种资源共享方式
|
|
|
|
|
|
|
|
|
|
* 互斥共享方式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当进程A访问某个资源时,必须先提出请求,若此时该资源空闲,则系统将其分配给进程A使用,此后有其他进程也要访问该资源时,就必须等待。仅当进程A访问完并释放该资源后,才允许另一个进程对该资源进行访问。
|
|
|
|
|
|
|
|
|
|
临界资源(独占资源):
|
|
|
|
|
|
|
|
|
|
一段时间内只允许一个进程访问的资源
|
|
|
|
|
|
|
|
|
|
互斥共享要求一种资源在一段时间内(哪怕是很小的时间)只能满足一个请求,否则就会出现严重的问题
|
|
|
|
|
|
|
|
|
|
* 同时访问方式
|
|
|
|
|
|
|
|
|
|
宏观上存在一些资源允许多个进程同时访问,微观上这些进程是交替地对该资源进行访问,即分时共享
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 虚拟
|
|
|
|
|
|
|
|
|
|
虚拟是指把一个物理上的实体变为若干逻辑上的对应物。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 时分复用技术,如处理器的分时共享
|
|
|
|
|
* 空分复用技术,如虚拟存储器
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 异步
|
|
|
|
|
|
|
|
|
|
* 程序异步性:多道程序环境允许多个程序并发执行,但由于资源有限,进程执行并非一贯到底,而是走走停停,以不可预知的速度向前推进
|
|
|
|
|
|
|
|
|
|
* 异步性导致的问题:
|
|
|
|
|
|
|
|
|
|
异步性会使操作系统运行在一种随机的环境下,可能导致进程产生与时间有关的错误。然而在运行环境相同的情况下,操作系统就需要保证多次运行进程后得到的结果相同
|
|
|
|
|
|
|
|
|
|
### 操作系统的目标和功能
|
|
|
|
|
|
|
|
|
|
操作系统应具有以下功能来给多道程序提供良好的运行环境
|
|
|
|
|
|
|
|
|
|
1. 处理机管理、存储器管理、设备管理和文件管理
|
|
|
|
|
2. 需向用户提供接口以方便用户使用
|
|
|
|
|
3. 可用于扩充机器来提供更方便的服务、更高的资源利用率
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 操作系统作为计算机系统资源的管理者
|
|
|
|
|
|
|
|
|
|
* 处理机管理
|
|
|
|
|
* 在多道程序环境下,处理机的分配和运行都以进程(线程)为主要单位
|
|
|
|
|
* 主要功能
|
|
|
|
|
* 进程控制
|
|
|
|
|
* 进程同步
|
|
|
|
|
* 进程通信
|
|
|
|
|
* 死锁处理
|
|
|
|
|
* 处理机调度
|
|
|
|
|
* 处理机的管理可归结为对进程的管理,因此进程创建、撤销、管理、避免冲突、合理共享就是进程管理的主要任务
|
|
|
|
|
* 存储器管理
|
|
|
|
|
* 存储器管理用于给多道程序的运行提供良好环境,便于用户使用及提高内存利用率
|
|
|
|
|
* 主要功能:
|
|
|
|
|
* 内存分配与回收
|
|
|
|
|
* 地址映射
|
|
|
|
|
* 内存保护与共享
|
|
|
|
|
* 内存扩充
|
|
|
|
|
* 文件管理
|
|
|
|
|
* 计算机的信息都是以文件的形式存在的
|
|
|
|
|
* 文件存储空间的管理
|
|
|
|
|
* 目录管理
|
|
|
|
|
* 文件读写管理和保护
|
|
|
|
|
* 设备管理
|
|
|
|
|
* 主要任务是完成用户I/O请求,方便用户使用设备,提高设备利用率
|
|
|
|
|
* 主要功能
|
|
|
|
|
* 缓冲管理
|
|
|
|
|
* 设备分配
|
|
|
|
|
* 设备处理
|
|
|
|
|
* 虚拟设备
|
|
|
|
|
#### 操作系统作为用户与计算机硬件系统之间的接口
|
|
|
|
|
|
|
|
|
|
* 用户使用接口
|
|
|
|
|
* GUI用户界面接口
|
|
|
|
|
* 命令接口
|
|
|
|
|
* 联机命令接口:用户发送一次命令,系统执行一次,主要是交互性,适用于分时或实时系统
|
|
|
|
|
* 脱机命令接口:用户一次性发送命令清单,系统按清单执行,无法中途干预,适用于批处理系统,可解决独占问题
|
|
|
|
|
* 软件使用接口
|
|
|
|
|
* 程序接口(系统调用)
|
|
|
|
|
|
|
|
|
|
#### 操作系统用作扩充机器
|
|
|
|
|
|
|
|
|
|
* 裸机:没有任何软件支持的计算机
|
|
|
|
|
* 扩充机器/虚拟机:覆盖了软件的机器
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 操作系统发展历程
|
|
|
|
|
|
|
|
|
|
### 手工操作阶段
|
|
|
|
|
|
|
|
|
|
用户在计算机上的所有计算流程都要人工干预
|
|
|
|
|
|
|
|
|
|
#### 缺点
|
|
|
|
|
|
|
|
|
|
* 用户独占全机,资源利用率低
|
|
|
|
|
* CPU等待手工操作,CPU利用不充分
|
|
|
|
|
|
|
|
|
|
### 单道批处理系统
|
|
|
|
|
|
|
|
|
|
#### 定义
|
|
|
|
|
|
|
|
|
|
* 程序封闭性,程序执行的结果只取决与进程本身,不受外界影响
|
|
|
|
|
* 失去封闭性后,不同速度下的进程执行结果不同
|
|
|
|
|
|
|
|
|
|
#### 特点
|
|
|
|
|
|
|
|
|
|
* 自动性,顺利的情况下,同一磁带上的同一批作业能够自动逐个运行
|
|
|
|
|
* 顺序性,磁带上的各道作业顺序地进入内存
|
|
|
|
|
* 单道性,内存中仅有一道程序运行
|
|
|
|
|
|
|
|
|
|
#### 缺点
|
|
|
|
|
|
|
|
|
|
* 资源利用率低,吞吐量小
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 多道批处理系统
|
|
|
|
|
|
|
|
|
|
#### 定义
|
|
|
|
|
|
|
|
|
|
* 批处理:允许多个用户将若干作业提交给计算机系统集中处理
|
|
|
|
|
* 多道性则是为了提高系统利用率和吞吐量
|
|
|
|
|
|
|
|
|
|
#### 特点
|
|
|
|
|
|
|
|
|
|
* 多道,共享性,宏观上并行,微观上串行
|
|
|
|
|
* 引入多道后,系统失去封闭性和顺序性
|
|
|
|
|
* 制约性,程序执行因为共享资源和协同所有产生了竞争,相互制约
|
|
|
|
|
* 考虑竞争的公平性,程序断续执行
|
|
|
|
|
|
|
|
|
|
#### 优点
|
|
|
|
|
|
|
|
|
|
* 资源利用率高
|
|
|
|
|
* 系统吞吐量大
|
|
|
|
|
* CPU利用率高
|
|
|
|
|
* IO设备利用率高
|
|
|
|
|
|
|
|
|
|
#### 缺点
|
|
|
|
|
|
|
|
|
|
* 用户响应时间长
|
|
|
|
|
* 不提供人机交互能力(用户无法干预批处理作业)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 分时操作系统
|
|
|
|
|
|
|
|
|
|
#### 定义
|
|
|
|
|
|
|
|
|
|
* 允许多个用户以交互的方式使用计算机的操作系统
|
|
|
|
|
* 快速响应用户(分时系统产生原因)
|
|
|
|
|
* 响应时间 = 时间片*用户
|
|
|
|
|
* 进度调度通常采用抢占式的优先级优先
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 特点
|
|
|
|
|
|
|
|
|
|
* 同时性
|
|
|
|
|
* 交互性,用户能够方便进行人机对话
|
|
|
|
|
* 独立性,多个用户可以彼此独立地进行操作
|
|
|
|
|
* 及时性,用户请求能在很短的时间内响应
|
|
|
|
|
|
|
|
|
|
#### 优点
|
|
|
|
|
|
|
|
|
|
* 提供人机交互能力
|
|
|
|
|
|
|
|
|
|
#### 缺点
|
|
|
|
|
|
|
|
|
|
* 不能在规定的时间内做出处理
|
|
|
|
|
|
|
|
|
|
### 实时操作系统
|
|
|
|
|
|
|
|
|
|
#### 定义
|
|
|
|
|
|
|
|
|
|
* 在该操作系统下,计算机系统能够及时处理过程控制反馈的数据并给出响应
|
|
|
|
|
|
|
|
|
|
#### 特点
|
|
|
|
|
|
|
|
|
|
* 硬实时系统:必须在绝对严格的时间内完成处理(自动驾驶系统)
|
|
|
|
|
* 软实时系统:能接受偶尔违反时间规定(订票系统)
|
|
|
|
|
|
|
|
|
|
#### 优点
|
|
|
|
|
|
|
|
|
|
* 安全可靠
|
|
|
|
|
* 及时处理
|
|
|
|
|
* 快速处理
|
|
|
|
|
|
|
|
|
|
### 网络操作系统和分布式计算机系统
|
|
|
|
|
|
|
|
|
|
#### 特点
|
|
|
|
|
|
|
|
|
|
* 分布性
|
|
|
|
|
* 并行性
|
|
|
|
|
|
|
|
|
|
### 分布式计算机系统
|
|
|
|
|
|
|
|
|
|
#### 特点
|
|
|
|
|
|
|
|
|
|
* 网络中各种资源的关系
|
|
|
|
|
* 网络中各计算机间的通信
|
|
|
|
|
|
|
|
|
|
---------------
|
|
|
|
|
|
|
|
|
|
## 操作系统结构
|
|
|
|
|
|
|
|
|
|
* 分层结构
|
|
|
|
|
* 特性
|
|
|
|
|
* 内核分多层,每层可单向调用更低一层提供的接口
|
|
|
|
|
* 优点
|
|
|
|
|
* 便于调试和验证,自底向上逐层调试验证
|
|
|
|
|
* 易扩充和维护,各层间调用接口清晰固定
|
|
|
|
|
* 缺点
|
|
|
|
|
* 仅可调用相邻低层,难以合理定义各层边界
|
|
|
|
|
* 效率低,不可跨层调用,系统调用执行时间长
|
|
|
|
|
* 模块化
|
|
|
|
|
* 特性
|
|
|
|
|
* 内核 = 主模块 + 可加载内核模块
|
|
|
|
|
* 主模块只负责核心功能,如进程调度,内存管理
|
|
|
|
|
* 可加载内核模块:可动态加载新模块到内核,无需重新编译整个内核
|
|
|
|
|
* 优点
|
|
|
|
|
* 模块间逻辑清晰易维护,确定模块间接口后即可多模块同时开发
|
|
|
|
|
* 支持动态加载新内核模块(如:安装设备驱动程序),增强OS适应性
|
|
|
|
|
* 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
|
|
|
|
|
* 缺点
|
|
|
|
|
* 模块间的接口定义未必合理,实用
|
|
|
|
|
* 模块间相互依赖,更难调试和验证
|
|
|
|
|
* 宏内核
|
|
|
|
|
* 特性
|
|
|
|
|
* 所有的系统功能都放在内核里
|
|
|
|
|
* 优点
|
|
|
|
|
* 性能高,内核内部各种功能都可以直接相互调用
|
|
|
|
|
* 缺点
|
|
|
|
|
* 内核庞大功能复杂,难以维护
|
|
|
|
|
* 大内核中某个功能模块出错,就可能导致整个系统崩溃
|
|
|
|
|
* 微内核
|
|
|
|
|
* 特性
|
|
|
|
|
* 只把中断,原语,进程通信等最核心的功能放入内核,进程管理,文件管理,设备管理等功能以用户进程的形式运行在用户态
|
|
|
|
|
* 优点
|
|
|
|
|
* 内核小功能少,易于维护,内核可靠性高
|
|
|
|
|
* 内核外的某个功能模块出错不会导致整个系统崩溃
|
|
|
|
|
* 缺点
|
|
|
|
|
* 性能低,需要频繁切换用户/核心态,用户态下的各功能模块不可直接互相调用,只能通过内核的消息传递来间接通信
|
|
|
|
|
* 外核(exokernel)
|
|
|
|
|
* 特性
|
|
|
|
|
* 内核负责进程调度,进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全
|
|
|
|
|
* 优点
|
|
|
|
|
* 外核可直接给用户分配不虚拟,不抽象的硬件资源,使用户进程可以更灵活地使用硬件资源
|
|
|
|
|
* 减少虚拟硬件资源的映射层,提升效率
|
|
|
|
|
* 缺点
|
|
|
|
|
* 降低系统的一致性
|
|
|
|
|
* 使系统更加复杂
|
|
|
|
|
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
## 操作系统引导
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
2023-06-30 23:23:57 +08:00
|
|
|
|
* 启动过程
|
|
|
|
|
1. CPU加电,CS:IP指向FFFF0H
|
|
|
|
|
2. 执行JMP指令跳转到BIOS
|
|
|
|
|
3. 登记BIOS中断例程入口地址
|
|
|
|
|
4. 硬件自检
|
|
|
|
|
5. 进行操作系统引导
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 引导流程
|
|
|
|
|
1. CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序
|
|
|
|
|
2. 将磁盘的第一块主引导记录读入内存,执行磁盘引导程序,扫描分区表
|
|
|
|
|
3. 从活动主区(主分区)读入分区引导记录,执行其中的程序
|
|
|
|
|
4. 从根目录下找到完整的操作系统初始化程序并执行,完成开机的一系列操作
|
|
|
|
|
|
|
|
|
|
* 加电启动过程中执行程序的过程
|
|
|
|
|
* 自检程序
|
|
|
|
|
* 引导装入程序/自举装入程序
|
|
|
|
|
* 位于ROM,作为BIOS的组成部分
|
|
|
|
|
* 用于启动具体的设备
|
|
|
|
|
* 引导程序
|
|
|
|
|
* 位于装有操作系统硬盘的活动分区的引导扇区的程序
|
|
|
|
|
* 用于引导操作系统
|
|
|
|
|
* 操作系统
|
|
|
|
|
* 被装入RAM中
|
|
|
|
|
|
|
|
|
|
-----------
|
2023-06-30 17:08:20 +08:00
|
|
|
|
|
2023-06-30 23:23:57 +08:00
|
|
|
|
## 虚拟机
|
|
|
|
|
|
|
|
|
|
使用虚拟化技术,将一台物理机器虚化为多台虚拟机器VM,每个虚拟机器都可用于独立运行一个操作系统
|
|
|
|
|
|
|
|
|
|
| | 第一类VMM(例:WSL) | 第二类VMM(VMWare) |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
|对物理资源的控制权 | 直接运行在硬件之上,能直接控制和分配物理资源 | 运行在Host OS之上,依赖于Host OS 为其分配物理资源 |
|
|
|
|
|
| 资源分配方式 | 安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间,类似于外核的分配方式,分配未经抽象的物理硬件 | Guest OS 拥有自己的虚拟磁盘,该盘实际上是Host OS文件系统的一个大文件,Guest OS分配到的内存是虚拟内存 |
|
|
|
|
|
| 性能 | 性能更好 | 性能更差,需要Host OS作为中介 |
|
|
|
|
|
| 可支持的虚拟机数量 | 更多,不需要和Host OS竞争资源,相同的硬件资源可以支持更多的虚拟机 | 更少,Host OS 本身需要使用物理资源,Host OS上运行的其他进程也需要物理资源 |
|
|
|
|
|
| 虚拟机的可迁移性 | 更差 | 更好,只需导出虚拟机镜像文件即可迁移到另一台Host OS上,商业化应用更广泛 |
|
|
|
|
|
| 运行模式 | 运行在最高特权级(Ring 0 )可以执行最高特权的指令 | 部分运行在用户态,部分运行在内核态,Guest OS发出的系统调用会被VMM截获,转化为VMM对Host OS的系统调用 |
|
|
|
|
|
|
|
|
|
|
## 操作系统运行的环境
|
|
|
|
|
|
|
|
|
|
### 处理器运行的机制
|
|
|
|
|
|
|
|
|
|
* 程序运行原理
|
|
|
|
|
* 高级语言编写代码,转换为机器指令
|
|
|
|
|
* 程序运行过程就是CPU执行指令的过程
|
|
|
|
|
* 两种程序
|
|
|
|
|
* 内核程序
|
|
|
|
|
* 应用程序
|
|
|
|
|
* 两种指令
|
|
|
|
|
* 特权指令:不允许用户直接使用的指令
|
|
|
|
|
* 对I/O设备操作指令
|
|
|
|
|
* 获取特殊寄存器的指令
|
|
|
|
|
* 有关访问程序状态的指令
|
|
|
|
|
* 置中断指令
|
|
|
|
|
* 关中断指令
|
|
|
|
|
* 清内存指令
|
|
|
|
|
* 置时钟指令
|
|
|
|
|
* 非特权指令:允许用户直接使用的指令,不能直接访问系统中的软硬件资源,只限于访问用户的地址空间
|
|
|
|
|
* 访管/trap指令
|
|
|
|
|
* 两种处理器状态
|
|
|
|
|
* 核心态【管态】
|
|
|
|
|
* 时钟管理相关指令【置时钟指令】
|
|
|
|
|
* 中断机制相关的指令【时钟中断程序】
|
|
|
|
|
* 原语相关的指令
|
|
|
|
|
* 系统控制的数据结构与处理【进程调度程序】【进程切换】【缺页处理程序】【系统调用命令】
|
|
|
|
|
* 用户态【目态】
|
|
|
|
|
* 命令解释程序【属命令接口,面向用户】
|
|
|
|
|
* 访管/Trap指令,跳转指令,压栈指令
|
|
|
|
|
* 广义指令(系统调用)的调用
|
|
|
|
|
* 外部中断,缺页
|
|
|
|
|
* 改变处理器状态
|
2023-07-01 23:37:40 +08:00
|
|
|
|
* 内核态$\to$用户态 : 发生在中断返回用户程序是,需要一条修改PSW(程序状态字)的特权命令
|
|
|
|
|
* 用户态$\to$内核态 : 发生在中断时,通过硬件完成
|
|
|
|
|
* 状态区分目的: 保护系统程序
|
|
|
|
|
* 内核功能
|
|
|
|
|
* 时钟管理:实现计时功能
|
|
|
|
|
* 中断处理:负责实现中断机制
|
|
|
|
|
* 设备管理:完成设备的请求和释放,以及设备启动等功能
|
|
|
|
|
* 文件管理:完成文件的读、写、创建和释放等功能
|
|
|
|
|
* 进程管理:完成进程的创建、撤销、阻塞及唤醒等功能
|
|
|
|
|
* 进程通信:完成进程间的信息传递或信号传递等功能
|
|
|
|
|
* 内存管理:完成内存的分配,回收及获取作业占用内存大小及地址等功能
|
|
|
|
|
* 原语
|
|
|
|
|
* 一种特殊的程序
|
|
|
|
|
* 处于操作系统最底层,最接近硬件的部分
|
|
|
|
|
* 运行具有原子性(只能一气呵成,不可中断)
|
|
|
|
|
* 运行时间较短,调用频繁
|
|
|
|
|
* 外中断和内中断
|
|
|
|
|
* 异常(内中断)
|
|
|
|
|
* 基本概念
|
|
|
|
|
* 由CPU内部产生的意外事件
|
|
|
|
|
* CPU执行一条命令时,由CPU在其内部检测到的,与正在执行指令相关的同步事件
|
|
|
|
|
* 故障和自陷为异常
|
|
|
|
|
* 终止异常和外中断属于硬件中断
|
|
|
|
|
* 分类
|
|
|
|
|
* 故障:在引起故障的指令启动之后、执行结束前被检测到的异常事件
|
|
|
|
|
* 指令译码时,出现非法操作码
|
|
|
|
|
* 取数据时,出现缺页或缺段
|
|
|
|
|
* 除数为零
|
|
|
|
|
* 地址越界
|
|
|
|
|
* 自陷:也称陷阱或陷入,是预先安排的一种异常事件,如同预先设置好的陷阱一样
|
|
|
|
|
* x86机器中,用于程序调试的断点设置和单步跟踪功能
|
|
|
|
|
* 系统调用指令
|
|
|
|
|
* 条件自陷指令
|
|
|
|
|
* 终止:在执行指令的过程中发生了使计算机无法继续执行的硬件故障,程序无法执行,只能终止
|
|
|
|
|
* 控制器出错
|
|
|
|
|
* 存储器校验错
|
|
|
|
|
* 调出中断服务程序来重启系统
|
|
|
|
|
* 执行时间
|
|
|
|
|
* CPU在执行指令时检查是否有异常产生
|
|
|
|
|
* 不同点(与外中断)
|
|
|
|
|
* 缺页或溢出等异常事件是特定指令在执行过程中产生的
|
|
|
|
|
* 异常的检测由CPU自身完成,不需要外部某个信号通知CPU
|
|
|
|
|
* 中断(外中断)
|
|
|
|
|
* 基本概念
|
|
|
|
|
* 由来自CPU外部的设备发出的中断请求(常用于输入输出)
|
|
|
|
|
* 典型的由外部设备触发的,与当前正在执行的指令无关的异步事件
|
|
|
|
|
* 外部I/O设备通过特定的中断请求信号线向CPU提出中断请求
|
|
|
|
|
* CPU每执行一条指令就检查中断请求信号线,若检测到中断请求,则进入中断响应期
|
|
|
|
|
* 外部中断都是一条指令执行完成后(中断周期)才被检测并处理的
|
|
|
|
|
* 分类
|
|
|
|
|
* 可屏蔽中断
|
|
|
|
|
* 通过可屏蔽中断请求线INTR向CPU发出的中断请求
|
|
|
|
|
* CPU可通过在中断控制器中设置相应的屏蔽字来屏蔽或不屏蔽它,被屏蔽的中断信号将不被送到CPU
|
|
|
|
|
* 不可屏蔽中断
|
|
|
|
|
* 通过不可屏蔽中断请求线NMI向CPU发出的中断请求
|
|
|
|
|
* 通常为非常紧急的硬件故障
|
|
|
|
|
* 举例
|
|
|
|
|
* Cache缺失
|
|
|
|
|
* I/O中断:键盘输入,打印机缺纸
|
|
|
|
|
* 时钟中断
|
|
|
|
|
* I/O中断请求
|
|
|
|
|
* 执行时间
|
|
|
|
|
* 每个指令周期末尾,CPU都会检查是否有外中断信号需要处理
|
|
|
|
|
* 不同点(与内中断)
|
|
|
|
|
* 不与任何指令相关联,也不阻止任何指令的完成
|
|
|
|
|
* 系统调用(广义指令)
|
|
|
|
|
* 定义
|
|
|
|
|
* 操作系统对应用程序和程序员提供的接口
|
|
|
|
|
* 系统调用需要触发Trap【也叫陷入/访管指令】
|
|
|
|
|
* OS通过提供系统调用避免用户程序直接访问外部设备【应用程序通过】
|
|
|
|
|
* 目的:请求系统服务
|
|
|
|
|
* 与库函数区别
|
|
|
|
|
* 库函数
|
|
|
|
|
* 语言或应用的一部分,可以运行在用户空间中
|
|
|
|
|
* 许多库函数都会使用系统调用来实现功能
|
|
|
|
|
* 有的库函数没有使用系统调用
|
|
|
|
|
* 系统调用
|
|
|
|
|
* 是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间
|
|
|
|
|
* 未使用系统调用的库函数,执行效率通常比系统调用的高【无需完成上下文切换和状态转换】
|
|
|
|
|
* 功能分类
|
|
|
|
|
* 设备管理:完成设备的请求或释放+设备启动
|
|
|
|
|
* 文件管理:完成文件的读、写、创建、删除
|
|
|
|
|
* 进程控制:完成进程的创建、撤销、阻塞、唤醒
|
|
|
|
|
* 内存管理:完成内存的分配、回收、获取作业占用内存区大小及始址
|
|
|
|
|
* 系统调用过程
|
|
|
|
|
1. 传参
|
|
|
|
|
2. 陷入指令/Trap/访管【执行系统调用】(发生在用户态)
|
|
|
|
|
3. 由操作系统内核程序处理系统调用(发生在内核态)
|
|
|
|
|
4. 返回应用程序
|