Windows I/O操作

挂起: 比如读取一个文件要两分钟,那么程序就被挂起两分钟,必须等读取完成后,才会返回给线程完成程序的后续操作。


为了解决挂起问题,微软就弄了个叫做I/O完成端口的机制来提高程序的运行性能。


I/O完成端口:比如读取一个文件,这个操作会立即被返回给线程,然后文件读取被系统处理,当处理的读取操作完成后,在叫线程过来拿读取后的结果,这样程序就不会被卡死。

简单的说就能让程序挂起来的时候,可以执行别的操作。


文件内核对象:比如说,一个文件的存储大小是A-B,那么这就会出现一个文件内核对象来维护他,这是操作系统自动生成的,他所表示的是一个单位和事务。



设备的打开方式—>句柄

拿打开文件示例:当程序调用API,在R3层中会跟R0层通信,燃后R0层会去访问硬件,打开文件。但是很多软件都会去打开文件,为了做到唯一标识,这时在R0层中会产生一个文件内核对象(内核对象只会存在于内存中),R0层如果直接将读取到的文件返回给程序,消耗的资源会非常的多,而且R3和R0层之间是不会直接有数据往来的。R0层会重新开辟一块空间来存储读取到的文件,然后R0成会把内核对象的编号返回到R3层,返回的这个编号就是句柄。!!!!API会根据返回的句柄到R0成开辟的公共空间里面去取出读取进去的文件,然后返回给程序。    所以,句柄其实就是内核对象,一个内核对象代表的就是一个事物的抽象。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值