磁盘I/O工作机制

磁盘I/O工作机制

应用程序访问文件有哪几种方式?

五种访问文件的方式

​ 首先I/O操作都是由操作系统来完成的,其次操作系统的内核空间地址与用户空间地址是分割的。这个设计是为了保证内核程序的安全性,防止用户程序的奔溃导致系统的崩溃。

​ 由于以上设计,导致用户程序想要进行I/O操作,都是需要调用内核程序,而内核程序与用户程序的空间地址是分割的,导致数据要从磁盘复制到内核空间,在从内核空间复制到用户地址空间,这是非常慢的。

​ 所以有了缓存机制,操作系统读取磁盘的数据有预读的情况,也就是说,当读取002这个地址上的数据时,他也会将001与003地址上的数据也读入到内核空间中。

标准访问文件的方式

​ 当发生read()操作时,操作系统优先读取内核空间中高速缓存区的数据,如果没有,在去磁盘读取数据,存入到高速缓存区,在将数据返回给用户程序。

​ 当发生write()操作时,用户程序将数据写入到内核空间的高速缓存区,然后对于用户程序来说,该操作就算完成了,至于什么时候将高速缓冲区的数据写入到磁盘,由操作系统决定。

直接访问磁盘的方式

​ 不通过操作系统访问磁盘,用户程序直接访问磁盘。一般这种用户程序都是数据库程序。

同步访问的方式

​ 写入与读取操作都是同步操作。与标准访问文件方式不同时,write()操作需要等待返回成功或者失败标识。

​ 一般适用于安全性较高的场景,并且该操作方式的硬件都是定制的。

异步访问的方式

​ 当发起read()请求后,应用程序线程并不会阻塞(也就是傻傻的在哪里等着),它会接着执行它下面的代码逻辑,直到什么时候,他需要被请求的数据时,而该数据还没有读取到时,才会被阻塞。

​ 异步会显著提升应用程序的效率,但是对I/O速率无影响。

内存地址映射的方式

​ 将操作系统的某一块内存地址空间与磁盘的文件关联起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值