# 计算机系统操作
- I/O 设备与 CPU 可并行运行
- 每一设备控制器负责一个设备类型
- 每一设备控制器有一局部缓存
- CPU 通过局部缓存与主存交换数据
- I/O 从设备到设备控制器的局部缓存
- 设备控制器通过引起中断 通知 CPU 操作已完成
# 中断机制
中断能使系统更高效以及能提高系统的并发度,包括硬件中断与软件中断
-
硬件中断:设备控制器利用中断通知 CPU 它已经完成了某个操作
-
软件中断:也称为陷阱,包括异常 (Exception) 与系统调用 (System call)
现代操作系统是中断驱动的,中断会将控制权转移到中断服务程序
中断向量是中断服务程序的入口地址。
将所有中断向量集中放在一起,形成中断向量表。8086 系统有 256 个类型的中断源。每个类型对应一个中断向量,一个中断向量由四个字节组成:2 个高地址字节:存放中断服务程序的代码段的段值;2 个低地址字节:存放中断服务程序的偏移地址。中断向量表放在内存的低段地址 0 单元开始的单元:00000H~03FFFH。
# I/O 中断
# I/O 结构
- 设备与控制器相连
- 控制机包含:本地缓冲器,一组寄存器
- 设备驱动程序
# 两种 I/O 操作
同步与异步
- Synchronous 同步:当 I/O 操作开始时,系统会等待 I/O 操作结束才执行其他的操作
busy wait method 忙等方式
interrupt based method: multiple I/O 中断方式
Asynchronous 异步:当 I/O 操作开始时,系统不会等待,而是直接去执行其他的操作
# DMA 中断
设备控制器在本地缓冲和内存之间直接传输一整块数据而无需 CPU 干预
DMA 控制器从 CPU 中窃取内存周期
# 存储结构
存储设备层次 |
---|
寄存器 |
缓存 |
主存储器 |
电子盘 |
磁盘 |
光盘 |
磁带 |
从上到下容量增大,但速度和花费减小
速度,成本,易失性
- Main Memory
包括随机存取存储器 (RAM),是 CPU 可以直接访问的唯一大型存储介质(CPU 可以直接访问寄存器,cache 与主存)
存储属于与指令
缺点:存储空间不够大以及具有易失性 - Secondary Storage
二级存储,指的主要是磁盘,是主存的扩展
磁盘是覆盖了磁记录材料的硬金属或玻璃盘片 - Cache
缓存,暂时保存最近访问的数据,访问速度很快。
把信息复制进较快的存储系统;主存可看作为二级存储器的最后一个缓存
命中率:CPU 先访问 cache,没有相应的数据才去访主存
没有 cache 的访问时间是 100ms,有 cache 的访问时间为 20ms,命中率为 80%,平均需要:(100+20) x0.2+20x0.8=40ms,注意都要加上 cache 的访问时间
缺点:cache 的使用会造成数据的不一致,在多道程序、多处理机、分布式下
# 硬件保护
多用户环境,需要保护磁盘上的文件、数据
硬件陷入到 OS 当非法指令或进程终止
# Dual-Mode Operation 两状态操作
共享系统资源要求操作系统确保有误程序不会引起其他程序的运行错误
至少在两个运行状态之间提供硬件支持
- User mode – execution done on behalf of a user.
用户态 - 代表用户执行 - Monitor mode (also supervisor mode or system mode) – execution done on behalf of operating system.
管态(特权模式或系统模式)- 代表操作系统执行
- 系统引导时,硬件处于管态,在用户模式下执行用户进程;
- 一开机的时候处于管态,要执行用户程序的时候转换为用户态;
- 当出现中断或者陷阱时,硬件会切换到管态
由于部分指令可能会对计算机带来不好的影响,所以将部分指令归为特权指令
特权指令只能在管态下执行,当处于用户态时,会通过系统调用触发软中断,进入软中断后即进入了管态
# I/O Protection I/O 保护
- 所有的 I/O 指令都是特权指令
- 特权指令是在系统态时运行的指令,只允许操作系统使用,不允许应用程序使用。
用户不能直接用 i/o 指令,必须通过系统调用 - 确保用户程序不能在核心态下控制计算机
# Memory Protection 内存保护
- 必须保护中断向量和中断服务程序
- 确定进程能访问的合法空间
- 基址寄存器:地址
- 界限寄存器:长度
- 用户态下所生成的每个地址都要经过硬件检查
显然以下操作都是在管态下进行的:
- 修改 base/limit register
- 将用户的程序加载入用户的内存中
- 程序出错时打印内存空间
- 访问系统调用的参数
# CPU Protection CPU 保护
需防止用户程序陷入死循环或者不调用系统服务且不将控制权返回到 OS - 设置定时器
# 定时器
显然 timer 也是特权指令
设定计时器以便产生中断,定时器中断,控制权会返回给 OS
用来实现分时系统
计算当前时间
# 操作系统服务
# 操作系统的设计目标
- 提供服务
- 为用户和程序提供接口
- 各组成部分及其的相互连接
# 操作系统提供的服务
为用户:
- 用户接口:CLI,GUI
- 程序执行
- IO 操作
- 文件系统操作,读写创建删除文件的能力
- 通信:进程之间
- 出错检测
为提高系统效率
- 资源分配
- 账务,对资源的使用进行跟踪和记录
- 保护:确保对资源的所有访问都在控制中
# 系统调用
# 定义
提供运行程序和操作系统之间的接口
- 通常以汇编语言指令形式提供
- 替代汇编语言的,供系统编程的语言,允许系统直接调用
# API
系统调用过于底层,不好用
API 可移植
使得程序员更多使用 API 执行系统调用
# 系统调用的处理过程
- 当用户使用系统调用时,产生一条相应的指令
- CPU 在执行到该指令时发生中断,发出有关的信号给陷入处理机构;
- 处理机构在收到了 CPU 发来的信号后,启动相关的处理程序去完成该系统调用所要求的功能
- 在处理系统调用之前,陷入处理机构还需保存处理机现场(PSW、PC、系统调用号、用户栈指针、通用寄存器、用户定义的参数等)
- 系统调用的处理机构:陷入(TRAP)或异常处理机构
- 把由于系统调用引起处理机中断的指令称为陷入或异常指令(或称访管指令)
- 如何找到实现系统调用功能的子程序:入口地址表,每个入口地址与相应的系统程序对应
- 陷入处理程序用系统调用功能号查找入口地址表,得到该系统程序的入口地址,并执行之
- 系统调用处理结束后,要恢复处理机现场,从而用户程序可以继续执行
# 3 种常用方式用于在运行程序和操作系统之间的参数传递
- Pass parameters in registers. 寄存器中的参数传递
- Store the parameters in a table in memory, and the table address is passed as a parameter in a register. 参数存在内存的一张表中,表地址作为寄存器的参数传递
- Push (store) the parameters onto the stack by the program, and pop off the stack by operating system. 程序把参数压入栈,由操作系统弹出
# 系统调用的种类
- 进程管理
- 文件管理
- 设备管理
- 信息维护和管理
- 通信
# 操作系统的结构
# 简单结构
# MS-DOS 层次结构:
应用程序可直接访问 BIOS 例程,来直接操纵设备,当然这受限于当时的硬件,intel8088 没提供双模式和硬件保护,这使得 DOS 别无选择只能任由应用程序访问 BIOS.
# UNIX
受硬件功能限制,早期 UNIX 只是有限的结构化。
UNIX 包括 2 个分离的部分
- Systems programs 系统程序
- The kernel 内核
- Consists of everything below the system-call interface and above the physical hardware 包括了在物理硬件之上,系统调用之下的一切
- Provides the file system, CPU scheduling, memory management, and other operating-system functions; a large number of functions for one level. 提供文件系统, CPU 调度,存储管理,和其他操作系统功能 ;每一层有大量的功能
# 层次化结构
-
操作系统划分为若干层,在低层上构建高层。底层(0 层)为硬件;最高层( N 层)为用户层
-
考虑模块化,层的选择是每层只使用低层次的功能和服务
-
分层的基本原则:
每一层都使用其底层所提供的功能和服务,以便于系统调试和验证。 -
困难
层次的划分和安排,要保证不出现双向依赖关系
# THE OS 的层次化结构
THE 操作系统首先使用层次化设计。有如下六层:
- user programs
- buffering for input and output
- memory management
- CPU scheduling
- hardware
优点:
低层和高层可分别实现(便于扩充);
高层错误不会影响到低层,便于调试、利于功能的增删改;
调用关系清晰(高层对低层单向依赖),避免递归调用,有利于保证设计和实现的正确性
缺点:
系统中所有进程的控制转移、通讯等任务全部交给系统的核心去管理,要花费一定的代价
# 微内核
-
Mach 首先使用微内核结构
-
通过划分系统程序和用户程序,把所有不必要的部件移出内核,形成一个小内核
-
微内核提供最少量的进程管理、存储管理,以及通信功能
-
典型系统如 MACH 和 Windows NT
-
操作系统由两大部分组成
- 运行在核心态的内核
- 运行在用户态并以 C/S 方式运行的进程层
-
基于微内核结构的 OS 和传统 OS 相比,具有以下特点:
- 内核精巧.通常内核只由任务管理、虚存管理和进程间通信 3 个部分组成.传统 OS 内核中的许多部分都被移出内核.采取服务器方式实现;
- 面向多处理机和分布式系统.基于微内核的 OS,在内核中引入了多处理机调度和管理机制,并引入了细粒度并发机制 —— 线程,使得多个处理机可以在同一个任务中并行地执行;
- 基于客户/服务器体系结构.在微内核结构的 OS 中,任务间通信机制 —— 消息机制是系统的基础,OS 的各种功能都以服务器方式实现,向用户提供服务.用户对服务器的请求是以消息传递的方式传给服务器的.
-
优点:
易于扩充,易于移植
提高系统的可靠性:
提供多种操作环境
便于实现分布计算:以同样的调用形式,在下层可通过核心中的网络传送到远方服务器上 (RPC, Remote Procedure Call) -
缺点:
消息传递方式增加开销,使响应变慢
几个商品化系统:
NextStep XINU, OSF/1 1.3,
Workspace OS, Chorus/Mix V.4
Mac G3,Windows NT, QNX, CTOS