磁盘I/O工作机制

来源:互联网 发布:网络转账骗局怎么处理 编辑:程序博客网 时间:2024/05/01 06:49

应用程序读写文件操作都是调用操作系统提供的接口。只要是系统调用就可能存在内核空间地址和用户空间地址切换的问题。这是操作系统为了保护系统本身安全,而将内核空间地址和用户空间地址隔离开了,这样会保证内核程序运行的安全性,但是也造成了数据从内核空间向用户空间复制的问题。

       访问文件分为以下几种方式:

1、       标准访问文件方式  是当应用程序调用read()接口时,操作系统会检查在内核的高速缓存中有没有需要的数据,如果有,则直接从缓存中返回,如果没有,则从磁盘中读取,然后缓存在操作系统的缓存中。写入的方式为将数据从用户地址空间复制到内核地址空间的缓存中,然后给应用程序返回true。然后操作系统异步把内核地址空间的缓存写入磁盘中。

2、       直接I/O方式  是应用程序直接访问磁盘数据,不经过内核数据缓冲区。这种方式场景通常为对数据的缓存管理由应用程序控制,应用程序的数据管理系统应明确知道那些可能是热点数据。此方法缺点是每次数据都会从磁盘加载,系统只会缓存最近一次的数据,直接加载速度会非常缓慢。通常直接I/O与异步I/O结合使用。

3、  同步访问文件的方式 就是数据的读与写是同步操作的,与标准访问文件方式区别在于写入的时候只有在成功写入磁盘中才会返回成功标准。

4、  异步访问文件方式 就是当访问数据的线程发出请求后,线程会接着去处理其他事情,不是阻塞等待,当请求的数据返回后才继续处理数据。本方式可以提高应用程序的效率,但不会提高访问文件的效率。

5、  内存映射方式 是指操作系统将内存中的部分区域与磁盘的文件关联起来,当要访问内存中的一段数据时,转换为访问文件的某一段数据。

(摘自 深入分析Java Web 技术内幕 第2章)

0 0
原创粉丝点击