Windows I/O操作

在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层通过这块共同的内存空间进行数据的交互

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值