这部分内容这个笔记注定只能做一个泛泛的了解,想要深入了解必须自己去写代码学习各种协议,(不过不用慌,微机原理实验很快就会讲到)
I/O系统 链接到标题
概念 链接到标题
基本组成 链接到标题
- I/O设备及其接口线路、控制部件、通道和管理软件的总称
- 不同类型设备差异很大:速率、单位、出错处理
- 寻求规范、一致的I/O接口方案很难,需要通过操作系统来实现。
信息I/O设备通常由机械部分和电子部分构成,便于形成模块化、通用的设计。
flowchart LR
CPU--> 控制逻辑电路
控制逻辑电路 --> 外部设备
subgraph 控制逻辑电路
控制寄存器
状态寄存器
数据寄存器
end
特点 链接到标题
- 操作异步性
- 设备自洽性
- 接口通用性
提示
仅关心如何控制设备工作,而非备内部的工作细节
设备控制器 链接到标题
主要功能 链接到标题
- 接收和识别CPU发来的命令
- 实现数据交换
- 发现和记录设备状态
- 设备地址识别
I/O设备与CPU的连接 链接到标题
连接方式 链接到标题
- 设备接口形式:比如USB等
- I/O指令形式:比如IN/OUT指令等
- I/O地址空间分配以及译码:适用于多个设备的情况,有点类似于网络上的域名
- 连线问题:比如总线协议。
连接模式:I/O端口编地址方法 链接到标题
I/O端口模式:接口电路的中的每一个寄存器都具有唯一的地址
- 内存映像编址
- I/O独立编址
控制方式 链接到标题
- 协调处理器与I/O外设之间的工作
- 确保系统能够正确、稳定、高效的运行
轮询 链接到标题
- CPU不断监测控制器的状态位,确定是否该做下一个I/O操作。
- 由于CPU比I/O设备快得多,所以轮询会浪费大量的CPU时间
中断 链接到标题
参见之前微机课上关于中断的笔记
DMA 链接到标题
- CPU向DMA控制器发送开始地址、方向,然后启动“开始”命令
- DMA控制器向外设提供握手信号,向存储器提供地址和握手信号。
flowchart LR A[CPU] -->|总线| B[存储器] A -->|总线| C[I/O控制器] A -->|总线| D[DMA控制器] C --> E[外设] D --> F[外设]
通道I/O 链接到标题
flowchart LR
A[CPU] -->|总线| B[存储器]
A -->|总线| C[I/O处理器]
C -->|总线| D[外设]
C -->|总线| E[外设]
C -->|总线| F[外设]
也就是增加了一个I/O处理器,使得CPU仅在多个块的 传输开始、结束参与I/O过程
VS 链接到标题
控制方式 | 并发度 | 速度 | 复杂度 |
---|---|---|---|
查询 | 低 | 慢 | 简单 |
中断 | 中 | 中 | 中等 |
DMA | 高 | 快 | 复杂 |
通道 | 更高 | 更快 | 更复杂 |
I/O软件 链接到标题
书上给了一堆词,我觉得 设备无关性是最重要的,也就是从一个抽象的角度去处理端口,给用户“提供一个友好的、清晰的、简单的、功能更强的接口”
flowchart LR
A[用户空间的I/O软件] -->B[独立于设备的I/O软件]
B --> C[设备驱动程序]
C --> D[中断处理程序]
中断处理程序 链接到标题
用封装思想去理解,就是一个I/O端口的处理黑箱
- 进程在启动I/O操作后进入阻塞,
- I/O操作完成后设备控制器产生一个中断,
- CPU调用操作系统处理并唤醒该进程
I/O设备驱动程序 链接到标题
把用户提交的逻辑请求转化为物理I/O操作的启动和执行, 如
- 设备名转化为端口地址
- 逻辑记录转化为物理记录
- 逻辑操作转化为物理操作 分同步和异步两种方式
独立于设备的I/O软件 链接到标题
实现I/O软件通用功能的复用
- 设备命名和设备保护
- 提供与设备无关的块尺寸
- 缓冲技术
- 设备分配和状态跟踪
- 错误处理和报告
extra:缓冲技术 链接到标题
- 消除速率不一致影响(针对不同设备)
- 消除速率抖动影响(针对同一设备)
- 消除数据尺寸不同的影响(说到底也还是等待的问题)
- 尽量减少复制来提高速度
单缓冲 链接到标题
可以参考音乐视频的缓冲技术,也就是边下载边听,如果对应程序的话就是边下载边计算,
flowchart LR
B[用户内存区] -->|计算时间: C|A[进程]
C[磁盘读缓冲区]-->|花费时间: M|B
D[硬盘]-->|花费时间: T|C
E[OS]
- 如果没有缓存,用时$T+C$
- 如果有缓存,用时MAX$(C,T)+M$
双缓冲 链接到标题
flowchart LR
B[用户内存区] -->|计算时间: C|A[进程]
C[缓冲区1]-->|花费时间: M|B
F[缓冲区2]-->|花费时间: M|B
D[硬盘]-->|花费时间: T|C
D -->|花费时间: T|F
E[OS]
- 对于有读写冲突的缓冲区(也就是同时只能读或者写),双缓冲就能解决问题,在用另外一个缓冲区进行计算时,另一个缓冲区可以进行读写操作。从而进一步提高效率。
- 需要注意的是,在连续工作情况下双缓冲才能体现出优势
SPOOLING 链接到标题
自己了解吧……
文件系统 链接到标题
概念 链接到标题
定义 链接到标题
- 由 名字标识的
- 在逻辑上有特顿饭意义的 一组信息集合。
命名 链接到标题
名字+.后缀名/扩展名
分类 链接到标题
按照用途 链接到标题
- 系统文件:OS及其组成文件
- 库文件:标准子程序以及头文件
- 用户文件:用户自己创建的文件
按文件保护 链接到标题
- 只读文件:只能读,不能写
- 读写文件:可以读、写
- 可执行文件
按信息流向 链接到标题
输入、输出、输入输出
按信息保存期限 链接到标题
temp、permanent、归档文件
按设备类型分 链接到标题
磁带文件(.tar……)、磁盘文件(.iso、.img……)、光盘文件(.iso)、网络文件(.html、.jsp……) ……
文件内容(Unix支持的文件类型) 链接到标题
普通文件 链接到标题
- Ascii文件:文本文件,均为可见字符
- 二进制文件:流式文件,
目录文件 链接到标题
设备文件 链接到标题
- 字符设备文件
- 块设备文件
组织与管理 链接到标题
- 文件管理:实现文件的逻辑结构,系统调用、权限设置等
- 目录管理:查找文件描述符,进而找到需要访问的文件及进行访问权限检查等工作
- 磁盘主存映射管理:将文件的逻辑地址转换成磁盘的物理地址,即将逻辑块号映射为柱面号、磁道号和扇区号,具体数据操作由设备驱动程序实现。
存取 链接到标题
指读写文件存储器上的物理记录的方法。
- 顺序存取:主要用于磁带文件
- 直接存取:常用语磁盘文件
- 索引存取:常用于数据库文件
信息
后面的一堆对文件目录的定义如果玩多了命令行的话就都会懂了。