这部分内容这个笔记注定只能做一个泛泛的了解,想要深入了解必须自己去写代码学习各种协议,(不过不用慌,微机原理实验很快就会讲到)

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文件:文本文件,均为可见字符
  • 二进制文件:流式文件,

目录文件 链接到标题

设备文件 链接到标题

  • 字符设备文件
  • 块设备文件

组织与管理 链接到标题

  • 文件管理:实现文件的逻辑结构,系统调用、权限设置等
  • 目录管理:查找文件描述符,进而找到需要访问的文件及进行访问权限检查等工作
  • 磁盘主存映射管理:将文件的逻辑地址转换成磁盘的物理地址,即将逻辑块号映射为柱面号、磁道号和扇区号,具体数据操作由设备驱动程序实现。

存取 链接到标题

指读写文件存储器上的物理记录的方法。

  • 顺序存取:主要用于磁带文件
  • 直接存取:常用语磁盘文件
  • 索引存取:常用于数据库文件
信息
后面的一堆对文件目录的定义如果玩多了命令行的话就都会懂了。