[关闭]
@llplmlyd 2018-09-22T22:07:13.000000Z 字数 1982 阅读 922

操作系统原理(十三)之IO系统

操作系统原理


常见输入输出设备接口

访问设备特征

字符设备

以字节为单位顺序访问;IO命令通常使用文件访问接口与语义

块设备

均匀的数据块访问;原始IO或文件系统访问接口,内存映射文件访问

网络设备

格式化报文交换;IO命令send/receive网络报文,通过网络接口支持各种协议

同步与异步IO

阻塞IO :wait() 读、写等待

用户的请求首先通过系统调用到设备驱动,设备驱动会把用户请求转换成实际的硬件控制命令,绕过中断处理,直接控制硬件进行相应的操作。
操作结束之后,产生中断请求,转到设备驱动,最后通过系统调用的返回到用户态,用户得到相应的结果。

非阻塞IO:Don't wait()

立即从read或write系统调用返回,返回值为成功传输字节数
read或write的传输字节数可能为0

异步 I/O :”Tell Me Later“

I/O 结构

CPU与设备的连接

设备控制器

总线接口 提供CPU和 I/O 设备间的接口
硬件控制器
寄存器(读数据、写数据、控制、状态) 进行数据的交互和状态和控制的交互
可寻址存储或队列(内存映射) 映射到内存当中,给一段内存区域,对这段内存区域的访问,对应过来就是I/O设备的访问

I/O 地址
I/O 地址通过总线连到CPU,总线和实际设备之间有总线适配器
CPU用来控制 I/O 硬件

设备到CPU的通道

中断控制器
设备产生中断之后,在中断控制器进行汇总然后送给CPU,CPU就能对外部设备的事件作出响应
CPU与外部设备的通信方式

I/O 指令和内存映射 I/O

I/O 指令:通过 I/O 端口号访问设备寄存器的特殊的CPU指令
内存映射 I/O:设备的寄存器/存储被映射到内存物理地址空间中,通过内存load/store指令完成 I/O 操作,MMU设置映射,硬件跳线或程序在启动时设置地址

IO请求生存周期

1 判断是否没有i/o请求结果
2 是则向驱动发送请求并等待结果,否则跳到 8 继续
3 处理i/o请求,发送控制命令,并等待中断响应
4 控制设备操作完成时 产生中断
5 i/o完成 生成中断请求
6 接收中断 保存结果 并通知设备驱动
7 确定i/o操作完成状态 通知i/o子系统
8 与进程交换数据 并返回完成结果或错误信息
9 i/o操作完成,输入数据可用或输出完成

I/O数据传输

CPU与设备控制器的数据传输

通过直接i/o寻址读取磁盘数据的步骤

  1. 设备驱动收到内存地址X
  2. 设备驱动控制磁盘控制器从磁盘读取数据
  3. 磁盘控制器初始化DMA传送
  4. 磁盘控制器传送数据到DMA控制器
  5. DMA控制器传送C字节数据到内存地址X
  6. DMA控制器完成数据传送后,产生中断请求,通知CPU传送完成

磁盘调度

工作机制

读取或写入时,磁头必须被定为在期望的磁道,并从所期望的柱面和扇区的开始

性能参数

寻道时间:定为到期望的磁道所花费的时间
旋转延迟:从零扇区开始处到达目的地所花费的时间;平均旋转延迟时间=磁盘旋转一周时间的一半

其他

磁盘调度算法 磁盘i/o传输时间

磁盘缓存

放在内存里的磁盘数据的缓存。这些缓存是为了避免对同一块磁盘扇区里的内容进行反复引用时候的多次磁盘访问
磁盘缓存是磁盘扇区在内存中的缓存区:

单缓存(Single Buffer Cache)
设立一个缓存区,设备往缓存区写数据时,CPU不能从操作;当CPU从缓存区读数据时,设备不能写数据
由于任何时刻只有一方能够操作,速度就会很受限制
双缓存(Double Buffer Cache)
设立两个缓存区,当设备往缓存区1写数据时,CPU可以从缓存区2读数据,可以提升交换速度

访问频率置换算法(Frequency-based Replacement)

待补充

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注