5.输入/输出

  1. I/O硬件原理

I/O设备:
块设备把信息存储在固定大小的块中,每个块有自己的地址
字符设备以字符为单位发送或接收一个字符流,而不考虑块结构
设备控制器/适配器:
把串行的位流转换为字节块,并进行必要的错误校正
内存映射I/O:
每个控制寄存器端口被分配一个I/O端口号
每个控制寄存器被分配唯一的一个内存地址,并且不会有内存被分配这一地址
IN REG, PORT 读取I/O端口4的内容并存入REG
DMA直接存储器存取:
每次一字模式:
DMA控制器请求传送一个字并得到这个字,若CPU也想使用总线则必须等待,这种机制称为 周期窃取
即设备控制器偶尔偷偷溜入并从CPU偷走一个临时的总线周期
块模式:
DMA通知设备获得总线,发起一连串的传送,然后释放总线,称为 突发模式
飞越模式:
DMA控制器通知设备控制器直接将数据传送到主存
中断:
地址线上的数字指向称为 中断向量的表格索引,以便读取一个新的PC,PC指向中断的开始
陷阱和中断通常共享相同的中断向量
精确中断:机器留在一个明确状态的中断
PC保存在一个已知的地方
PC指向的指令之前的所有指令已经完全执行
PC指向的指令之后的所有指令都没有执行
PC指向的指令的执行状态已知

2. I/O软件原理

设备独立性:程序可以访问任意I/O设备而无需事先指定设备
统一命名:一个文件或设备的名字是一个简单的字符串或数字,不依赖于设备
错误处理:错误尽可能在接近硬件层面得到处理
同步(阻塞)、异步(中断驱动)
程序控制I/O:
I/O最简单的形式是让CPU做全部工作
OS通常将字符串缓冲区复制到内核空间的一个数组中
轮询/忙等待:输出一个字符后,CPU不断查询设备是否就绪准备接收另一个字符
中断驱动I/O:
不缓冲字符,而是每个字符到来时便打印
使用中断,允许CPU在等待打印机变为就绪的同时,做些其他事情
中断发生在每个字符
使用DMA的I/O:
DMA本质是程序控制I/O,但由DMA控制器而不是主CPU做全部这工作

3. I/O软件层次

设备驱动程序:
块设备:包含多个可以独立寻址的数据块,如磁盘
字符设备:生成或接收数据流,如键盘、打印机
接收来自与设备无关软件发出的抽象的读写请求,并目睹这些请求被执行
与设备无关的I/O软件:
设备驱动程序的统一接口:
把符号化的设备名映射到适当的驱动程序
设备名唯一确定了一个特殊文件的i节点,包含 主设备号(定位驱动程序)、 次设备号(作为参数传递给驱动程序)
缓冲:匀速传输
错误报告
分配与释放专用设备
提供与设备无关的块大小

4. 盘

4.1 盘硬件

重叠寻道:控制器同时控制两个或多个驱动器进行寻道
逻辑块寻址(LBA):磁盘从0开始连续编号,无论磁盘的几何规格
RAID:廉价磁盘冗余阵列
SLED:单个大容量昂贵磁盘

4.2 磁盘格式化

磁盘能使用前,每个盘片经受由软件完成的 低级格式化,包含一系列的同心磁道,每个磁道包含若干扇区,扇区间存在短的间隙
磁盘扇区:前导码、数据、ECC
前导码:以位模式开始,使硬件识别扇区的开始
ECC域包含冗余信息,用来恢复读错误
低级格式化使磁盘容量减少,减少的量取决于前导码、扇区间隙、ECC大小、保留备用扇区的数目
如作为200GB的磁盘销售,格式化后只有170GB( )字节可存放数据,软件把1GB看成是 字节,而不是 字节,因此报告为158GB,实际应报告为158GiB
寻道期间有一些扇区通过,因此在每个磁道上第0扇区的位置与前一个磁道存在偏移,称为 柱面斜进
ECC计算后,数据复制传送到主存需要时间,因此需要通过编号模式设置偏移
0扇区包含主引导记录(MBR),包含某些引导代码和处在扇区末尾的分区表
x86上,MBR分区表具有4个分区的空间,形如C: D: E: F:
高级格式化:设置一个引导块、空闲存储管理、根目录、空文件系统,将一个代码设置在分区表项以表明在分区中使用哪个文件系统

4.3 磁盘调度算法

读写磁盘块的时间:
寻道时间(磁盘臂移动到适当的柱面)
旋转延迟(等待适当的扇区旋转到磁头下)
实际数据传输时间
电梯算法:
保持按一个方向运动,直到这个方向上没有请求,然后改变方向

4.4 错误处理

坏扇区
制造时的瑕疵
控制器中处理:
出厂前测试,用备用扇区替换
操作系统中处理:
建立重映射表,创建一个包含所有坏扇区的秘密文件
寻道错误

4.5 稳定存储器

当一个写命令发给它后,磁盘要么正确写数据,要么什么也不做,让现有数据完整留下
不惜一切代价保持磁盘的 一致性
稳定写:
若不正确,则再次写和重读,直到n次
若n次连续失败,则重映射到备用块重复
稳定读:同上
崩溃修复:
崩溃后扫描两个磁盘,比较对应的块
若一个具有ECC错误,则坏块用好块覆盖
若一对都是好块但不同,则将驱动器1的块写到驱动器2上

5. 时钟

晶体振荡器:产生非常精确的周期性信号
计数器:在每个脉冲中递减,变为0时产生一个CPU中断
存储寄存器:加载计数器
一次完成模式:时钟启动时,把存储寄存器的值复制给计数器,每个脉冲中计算机减1,为0时产生中断停止工作,直到软件再一次显式启动它
方波模式:计数器为0产生中断后,存储寄存器的值自动复制到计数器,无限重复,周期性的中断称为 时钟滴答
当前时间转换成自某个标准时间以来的时钟滴答数,如1970.1.1 12:00即 UTC(协调世界时)
时钟驱动程序:
维护日时间
防止进程超时运行
CPU记账:辅助定时器的值表示该进程运行多长时间
处理用户进程的alarm系统调用
为系统各部分提供监视定时器
剖析、监视、统计信息收集
软定时器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B.D.S.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值