文件系统读写--文件预读 和 文件锁


10.2 文件预读

        对于文件请求,Linux内核提供了预读策略,比要求长度多读一些,存储在page cache里,后续读顺序的,马上可以利用page cache的数据返回,不必再次读硬盘。对于硬盘这种慢速设备而言,利用缓存数据大大提升I/O效率

struct backing_dev_info default_backing_dev_info = {
	.ra_pages	= (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE,
	.state		= 0,
	.capabilities	= BDI_CAP_MAP_COPY,
	.unplug_io_fn	= default_unplug_io_fn,
};
EXPORT_SYMBOL_GPL(default_backing_dev_info);

        a


10.3 文件锁

        读写调用之间没有同步,可能导致 读进程 读取到 被破坏或者不完整的数据。

--建议锁:

应用层实现,内核只提供程序接口,不参与锁的控制和协调,也不对读写操作做内部检查和强制。

如果有进程不检查文件是否有建议锁 就写入数据,内核不加以阻拦。建议锁要求进程遵守规则;建议锁可以对整个文件进行加锁,也可以对文件的一部分进行加锁。

--强制锁:

由内核强制实施。只要进程调用读写操作,内核都会检查与存在的锁是否冲突,如果冲突,内核会加以阻拦。


根据访问方式的不同,文件锁又分为 读锁 、 写锁

--读锁    :

允许多个进程同时进行操作,称为共享锁。文件加了读锁就不能再设置写锁,但允许其他进程再同一区域在设置读锁。

--写锁    :

主要目的是隔离文件,是所写的内容不被其他进程的 读写 干扰,以保证数据的完整性。 写锁一旦加上,只有上锁的人可以操作,其他进程无论读还是写都只能等待写锁释放后才能执行,故写锁又称 互斥锁


        如果一个文件已经被加上了读锁,其他进程再对这个文件进行写 操作就会被内核阻止

        如果一个文件已经被加上了写锁,其他进程再对这个文件进行 读取 或者 写操作 就会被内核阻止

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值