0
点赞
收藏
分享

微信扫一扫

30,读写操作

  • write 过程

    • 调用 genric_perform_write 它里面是一个循环,每次写入对应的页
      • 调用 write_begin 对系统进行初始化工作,主要是ext4_journal_start 即日志文件系统准备,然后调用grab_cache_page_write 获取需要写入的缓存页

      • iov_iter_copy_form_user_atmoic 即通过kmap_atomic 映射内核虚拟地址,然后将用户态数据拷贝到内核态。再使用kumap_atmoic 删除映射

    • ext4_write_end 结束日志写入,将数据写入缓存。
    • balance_dirty_pages_ratelimited 查看脏页数量是否超过限制
  • read 过程

    • genric_file_buffer_read 直接查看page cache是否有缓存,假如不存在,然后读入该页,并进行预读。
    • copy_page_to_iter 将内容从内核态复制到用户态。
举报

相关推荐

0 条评论