登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: generic_file_read_iter 和 __generic_file_write_iter 有相似的逻辑,就是是否使用缓存     [回主站]     [分站链接]
generic_file_read_iter 和 __generic_file_write_iter 有相似的逻辑,就是是否使用缓存
clq
浏览(294) - 2022-10-19 15:21:53 发表 编辑

关键字:


https://blog.csdn.net/weixin_42462202/article/details/102592948

2.1 直接读写

对于 ext4 文件系统,定义了一个文件操作集 file_operations,如下

const struct file_operations ext4_file_operations = {
......
.read_iter = ext4_file_read_iter,
.write_iter = ext4_file_write_iter,
......
}

1
2
3
4
5
6
7

对于 ext4 文件系统,没有定义 read 和 write,所以会调用 ext4_file_read_iter 和 ext4_file_write_iter

ext4_file_read_iter 会调用 generic_file_read_iter,ext4_file_write_iter 会调用 __generic_file_write_iter

ssize_t
generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
{
......
if (iocb->ki_flags & IOCB_DIRECT) {
......
struct address_space *mapping = file->f_mapping;
......
retval = mapping->a_ops->direct_IO(iocb, iter);
}
......
retval = generic_file_buffered_read(iocb, iter, retval);
}


ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
{
......
if (iocb->ki_flags & IOCB_DIRECT) {
......
written = generic_file_direct_write(iocb, from);
......
} else {
......
written = generic_perform_write(file, from, iocb->ki_pos);
......
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

generic_file_read_iter 和 __generic_file_write_iter 有相似的逻辑,就是是否使用缓存

缓存其实就是一块内存空间,因为内存的访问速度比硬盘快许多,所以Linux为了提高读写性能,会准备一块缓存,不直接操作硬盘,而是直接操作内存,然后批量读取或者写入磁盘


总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录
操作系统内存占用高2 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1