本文主要是介绍ucore—23讲:I/O系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 第二十三讲:I/O子系统
- 23.1 I/O特点
- 23.1.1 设备接口类型
- 23.1.2 同步和异步I/O
- 23.2 I/O结构(重要)
- 23.3 I/O数据传输
- 23.4 磁盘调度(类比处理机调度)
- 23.5 磁盘缓存
第二十三讲:I/O子系统
23.1 I/O特点
23.1.1 设备接口类型
- 三种常见的设备
- 设备访问特征
在unix/linux中,所有IO设备都模型化为文件,对设备的读写只需要操作fd即可
23.1.2 同步和异步I/O
- 阻塞IO(同步IO)
注意请求传送到硬件时不用经过中断处理,返回时才需要通过中断
- 非阻塞IO
存在问题:虽然请求立即返回,但是实际上可能底层并未完成正确的读写!
- 异步IO
请求可以立即返回,不用阻塞进程,可以直接向下执行;底层硬件完成了数据读写之后再通过中断通知进程
23.2 I/O结构(重要)
- IO结构示例
北桥连接高速设备;南桥连接I/O设备
- CPU与设备的连接
1.设置控制器在设备端,而不是在os端;
2.每个I/O设备都通过一个控制器或适配器与I/O总线相连。控制器与适配器之间的区别主要在于它们的封装方式。控制器是置于I/O设备本身的或者系统的主印制电路板(通常成为主板)上的芯片组,而适配器则是一块插在主板插槽上的卡。无论如何,它们的功能都是在I/O总线和I/O设备之间传递信息。
3.IO地址有两种表示方式:端口、内存映射
4.设备通过中断主动与CPU通信
- I/O指令(端口) 和 内存映射I/O
- 内核IO结构
- I/O请求的生命周期
23.3 I/O数据传输
- CPU与设备控制器的数据传输
- DMA
- I/O设备通知OS的机制
- 轮询
- 设备中断
23.4 磁盘调度(类比处理机调度)
- 磁盘工作机制和性能参数
- 磁盘调度算法
- FIFO
- 最短服务时间优先(SSTF)
- 扫描算法/电梯算法(SCAN)
- 循环扫描算法(C-SCAN)
=> 提高公平性 - C-LOOK算法
扫描算法/循环扫描算法的改进
- N步扫描算法(N-step scan)
- 双队列扫描算法(FSCAN)
23.5 磁盘缓存
- 磁盘缓存
虚拟内存是将内存中的数据放到磁盘;
而磁盘缓存是将磁盘上的数据缓存到内存 =>从而不用每次读文件都访问慢速的磁盘;
- 单缓存与双缓存
- 访问频率置换算法(综合LRU和LFU)
这篇关于ucore—23讲:I/O系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!