清华大学操作系统OS学习(十五)——I/O子操作系统、同步或异步I/O、I/O结构、I/O结构

一、I/O特点

1、常见设备接口类型

①、字符设备(键盘、鼠标、串口等):以字节位单位顺序访问,get()和put()等

②、块设备(磁盘驱动器、光驱等):均匀的数据块访问,原始IO或文件系统接口,内存映射文件系统接口

③、网络设备(以太网、无线、蓝牙):格式化报文交换,send/receive网络报文,通过网络接口支持多种网络协议

2、同步或异步IO

①、阻塞IO:”Wait“

读数据时,进程将进入等待状态,直到完成数据读出;

写数据时,进程将进入等待状态,直到设备完成数据写入处理。

②、非阻塞IO:”Don't Wait“

立即从READ或WRITE系统调返回,返回值位成功传输字节数;read和write的传输字节数可能为零(跳过中断)

③、异步io:”Tell Me Later"

读数据时,使用指针标记好用户缓存区,立即返回;稍后内核将填充缓冲区并通知用户

写数据时,使用指针标记号用户缓冲区,立即返回;稍后内核将处理数据并通知用户

二、I/O结构

北桥连高速设备,南桥连IO设备。

1、CPU与设备的连接

①、设备控制器:CPU和IO间的接口,向CPU提供特殊指令和寄存器

②、IO地址:CPU用来控制IO硬件,内存地址或端口号

③、CPU与设备的通信方式:轮询、设备中断和DMA

2、IO指令和内存映射IO

①、IO指令:通过IO端口号访问设备寄存器,特殊CPU指令

②、内存映射IO:设备的寄存器/存储被映射到内存物理地址空间中;通过内存load/store指令完成IO操作;MMU设置映射,硬件跳线或程序在启动时设置地址

3、内核IO结构

4、IO请求生存周期

三、I/O结构

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

①、程序控制I/O(PIO,Programmed I/O):通过CPU的in/out或load/store传输所有数据

特点:硬件简单,编程容易,消耗cpu时间和数据量成正比

②、直接内存访问(DMA):设备控制器可直接访问系统总线,控制器直接与内存互相传输数据

特点:设备传输数据不影响CPU,需要CPU参与数据

2、通过直接I/O寻址读取磁盘数据的步骤

3、I/O设备通知操作系统的机制

①、操作系统需要了解设备状态:i/o完成时间、i/o操作遇到错误

两种方式:CPU主动轮询、设备中断

②、CPU主动轮询:IO设备在特定的状态寄存器中放置状态和错误信息,操作系统定期检测状态寄存器

特点:简单;IO操作频繁或不可预测时,开销大和延时长

③、设备中断

Ⅰ、设备中断处理流程:DPU在IO之前设置参数;CPU发出IO请求后,继续执行其他任务;IO设备 处理IO请求;IO设备处理完成时,触发CPU中断请求;CPU接收中断,分发到相应中断处理例程。

Ⅱ、特点:处理不可预测事件效果好;开销相对较高。

四、缓存

单缓存与双缓存

猜你喜欢

转载自blog.csdn.net/qq_36552489/article/details/92955563