Windows I/O操作

来源:互联网 发布:网络电视江苏卫视直播 编辑:程序博客网 时间:2024/05/17 04:39

在windows程序中,基础的运行单位为线程,为没个线程分配一个处理器,可以让系统执行多个操作,当线程进行I/O操作时会被挂起,从而影响性能,为解决这类问题,windows使用一套非常好的机制:I/O完成端口.

因为现在计算机的瓶颈主要是在磁盘操作这块,磁盘的读取速度是以MB为单位的,,如果说我们需要读取1GB的文件大小,此时所耗费的时间是非常长的.如果执行该操作的线程需要等待该操作完成的话,无疑是很浪费性能的,
为了解决这个问题,,windows使用了I/O完成端口,这套机制是每当有一个I/O请求时,该线程会发生这个I/O请求给操作系统,然后继续执行其他事情,当该I/O操作完成之后,操作系统会给该线程发送一个通知,此线程会返回处理I/O加载完成之后的事情

I/O操作可以分为对文件的I/O操作,对外部设备的I/O操作,网络通信等都属于I/O操作

这里写图片描述
这里写图片描述
这里写图片描述
在windows的文件系统中,实际存在的只有文件和物理磁盘驱动器,平常我们所见的文件资源管理器并不是实际存在的,,它是操作系统帮我们维护出来的
文件的本质是存在于硬盘上的二进制数据,而操作系统把指定大小的二进制数据通过文件内核对象组织起来形成文件,再把这些文件以目录的形式显示出来,就是我们平常所见的文件

进行I/O操作时R3与R0层的交互方式
当我们打开一个文件时,通过我们自己写的程序调用R3层提供的API,然后R3层会对该请求进行检测,然后到达R0层,然后R0层在指定的硬盘上找到该文件,然后产生一个文件内核对象来标识该文件.因为R3和R0层之间是物理隔离的,在R0层打开了这个文件之后并不能直接将该文件内核对象返回给R3层..windows开辟了一块共同的内存空间,R3层和R0层通过这块共同的内存空间进行数据的交互

0 0