存储系统I/O处理流程是一个复杂的过程,涉及多个组件和步骤,以下是对存储系统I/O处理流程的详细描述:
I. 应用程序层IO请求
1、应用程序发起I/O请求:应用程序通过文件系统API或直接调用卷管理层或适配器驱动层API来发起I/O请求。
2、文件系统缓存:应用程序可以选择使用系统内核缓存,此时文件系统首先将对应的数据从底层卷或磁盘读入文件系统自身的Buffer,然后再将数据复制到应用程序的Buffer中,如果不使用缓存,数据将直接由操作系统放到应用程序Buffer。
3、同步与异步IO:同步IO模式下,应用程序发出IO请求后等待操作系统返回数据;异步IO模式下,应用程序发出IO请求后继续执行其他操作,不等待返回数据。
II. 文件系统层处理
1、文件系统接口调用:应用程序的I/O请求首先到达文件系统接口。
2、逻辑偏移映射:文件系统将文件的逻辑偏移映射成卷的LBA(Logical Block Addressing)地址偏移。
3、请求转发:文件系统向I/O Manager请求调用卷管理软件模块的接口。
III. 卷管理层处理
1、LBA地址翻译:卷管理软件将卷对应的LBA地址偏移翻译映射成实际物理磁盘对应的LBA地址偏移。
2、请求转发:卷管理软件请求调用磁盘控制器驱动程序。
IV. 磁盘控制器层处理
1、数据写入:I/O Manager向磁盘控制器驱动程序请求将对应LBA地址段的数据从内存中写入某块物理磁盘。
2、数据读取:如果是读请求,磁盘控制器驱动程序将从物理磁盘读取数据并返回给I/O Manager。
V. I/O管理器协调
1、IRP初始化:I/O Manager为文件打开请求的IRP(I/O Request Package)初始化分配内存。
2、权限检查:I/O Manager调用对象管理器查找文件并帮助找到所有相关的符号链接,同时调用安全引用监视器检查权限。
3、请求挂起与恢复:如果文件所在的卷未装入,I/O Manager会暂时挂起请求,待卷装入后再恢复。
VI. I/O状态反馈
1、状态设置:驱动程序在IRP中设置I/O状态块,指明操作是否成功或错误代码,并将IRP返回到I/O Manager。
2、状态返回:I/O Manager从IRP中获得I/O状态,通过被保护的子系统将状态信息返回到原始调用者处。
3、资源释放:I/O Manager释放已经完成任务的IRP。
VII. 数据结构
1、文件对象:文件对象是一种逻辑上的对象,可以代表文件或其他物理设备,通过句柄实现各种I/O操作。
2、驱动程序对象和设备对象:驱动程序对象代表系统中一个独立的驱动程序,设备对象代表系统中的一个物理、逻辑或虚拟的设备。
3、IRP:IRP是I/O系统用来存储处理I/O请求所需信息的地方,包括请求的类型和大小、是同步请求还是异步请求、指向缓冲区的指针和进展状态信息等。
整个I/O处理流程涉及应用程序、文件系统、卷管理层、磁盘控制器和I/O管理器等多个组件,通过一系列复杂的步骤和数据结构来完成数据的读写操作。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1494698.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复