访问文件的方式
读取和写入文件IO操作都需要调用操作系统提供的接口,读和写分别对应read和write两个系统调用,那么就存在内核空间和用户空间地址切换的问题,因为磁盘设备是由操作系统管理的,为了保护系统运行安全将内核运行的内存空间和用户程序的内存空间进行隔离,那么必然存在数据需要从内核空间向用户空间复制的问题。
如磁盘IO,数据需要从磁盘复制到内核空间,处理完成后又从内核空间复制到用户空间,非常耗时。所以操作系统一般会使用缓存机制,就是将文件按照一定的组织形式进行缓存,如果用户访问同一段磁盘地址空间,直接从内核缓存中返回。
标准访问文件方式
当应用程序调用read接口时,操作系统检查高速缓存中是否有,如果有直接从缓存中返回,如果没有,从磁盘读取,并缓存在高速缓存中。写入时,调用write接口将数据从用户地址空间复制到内核缓存中,对于应用程序和用户来说,写入操作已完成,至于什么时候写入到磁盘上,由操作系统决定,除非显示的调用sync同步。
直接IO方式
就是应用程序直接访问磁盘数据,不经过操作系统的内核数据缓存,这样做的目的减少了一次从内核缓冲区到用户程序缓存的数据复制。通常应用在数据库系统中,数据库系统明确知道应该缓存哪些数据,以及一些热点数据。
同步访问文件方式
数据的读取和