@llplmlyd
2018-09-22T22:07:13.000000Z
字数 1982
阅读 922
操作系统原理
以字节为单位顺序访问;IO命令通常使用文件访问接口与语义
均匀的数据块访问;原始IO或文件系统访问接口,内存映射文件访问
格式化报文交换;IO命令send/receive网络报文,通过网络接口支持各种协议
用户的请求首先通过系统调用到设备驱动,设备驱动会把用户请求转换成实际的硬件控制命令,绕过中断处理,直接控制硬件进行相应的操作。
操作结束之后,产生中断请求,转到设备驱动,最后通过系统调用的返回到用户态,用户得到相应的结果。
立即从read或write系统调用返回,返回值为成功传输字节数
read或write的传输字节数可能为0
设备控制器
总线接口 | 提供CPU和 I/O 设备间的接口 |
---|---|
硬件控制器 | |
寄存器(读数据、写数据、控制、状态) | 进行数据的交互和状态和控制的交互 |
可寻址存储或队列(内存映射) | 映射到内存当中,给一段内存区域,对这段内存区域的访问,对应过来就是I/O设备的访问 |
I/O 地址
I/O 地址通过总线连到CPU,总线和实际设备之间有总线适配器
CPU用来控制 I/O 硬件
中断控制器
设备产生中断之后,在中断控制器进行汇总然后送给CPU,CPU就能对外部设备的事件作出响应
CPU与外部设备的通信方式
I/O 指令:通过 I/O 端口号访问设备寄存器的特殊的CPU指令
内存映射 I/O:设备的寄存器/存储被映射到内存物理地址空间中,通过内存load/store指令完成 I/O 操作,MMU设置映射,硬件跳线或程序在启动时设置地址
1 判断是否没有i/o请求结果
2 是则向驱动发送请求并等待结果,否则跳到 8 继续
3 处理i/o请求,发送控制命令,并等待中断响应
4 控制设备操作完成时 产生中断
5 i/o完成 生成中断请求
6 接收中断 保存结果 并通知设备驱动
7 确定i/o操作完成状态 通知i/o子系统
8 与进程交换数据 并返回完成结果或错误信息
9 i/o操作完成,输入数据可用或输出完成
读取或写入时,磁头必须被定为在期望的磁道,并从所期望的柱面和扇区的开始
寻道时间:定为到期望的磁道所花费的时间
旋转延迟:从零扇区开始处到达目的地所花费的时间;平均旋转延迟时间=磁盘旋转一周时间的一半
磁盘调度算法 磁盘i/o传输时间
放在内存里的磁盘数据的缓存。这些缓存是为了避免对同一块磁盘扇区里的内容进行反复引用时候的多次磁盘访问
磁盘缓存是磁盘扇区在内存中的缓存区:
单缓存(Single Buffer Cache)
设立一个缓存区,设备往缓存区写数据时,CPU不能从操作;当CPU从缓存区读数据时,设备不能写数据
由于任何时刻只有一方能够操作,速度就会很受限制
双缓存(Double Buffer Cache)
设立两个缓存区,当设备往缓存区1写数据时,CPU可以从缓存区2读数据,可以提升交换速度
待补充