访问文件方式

访问基于磁盘的文件很复杂,既牵涉到块设备的处理,也涉及到磁盘高速缓存的处理。
访问文件的方式有一下几种:

1. 规范模式
系统调用read()和 write()来存取。系统调用read()将阻塞调用进程,直到数据被拷贝到用户态地址空间。但系统调用write()不同,它在数据被拷贝到页高速缓存(延迟写)后马上就结束。

2. 同步模式
同步模式下文件打开后,标志O_SYNC 置1或稍后由系统调用fcntl()对其置1.这个标志只影响写操作,它将阻塞调用进程,直到数据有效的写入磁盘。

3. 内存映射模式
内存映射模式下文件打开后,应用程序发出系统调用mmap()将文件映射到内存中。因此,文件就成为了RAM中的一个字节数组,应用程序就可以直接访问数组元素,而不需要系统调用read(),write(),lseek().

4. 直接I/O模式
直接I/O模式下文件打开后,标志O_DIRECT置1。任何读写操作都将数据在用户态地址空间与磁盘间直接传送而不通过页高速缓存。

5. 异步模式
异步模式下,文件的访问可以有两种方法,即通过一组POSIX API或Linux特有的系统调用来实现。所谓异步模式就是就是数据传输请求并不阻塞调用进程,而是在后台执行,同时应用程序继续它的正常执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值