1 Star 0 Fork 0

WHC/xv6-course

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
62-buffer.org 1.13 KB
一键复制 编辑 原始数据 按行查看 历史
殊蕤 提交于 2023-12-03 21:06 . timestamp: 2023-12-03 21:06:16

Disk 和 Buffer

mkfs

../../study/os/xv6-public/mkfs.c

make fs.img | grep nmeta
nmeta 59 (boot, super, log blocks 30 inode blocks 26, bitmap blocks 1) blocks 941 total 1000

Disk 层回顾

  1. ide.c

img/idequeue.png

Buffer Cache

  1. 同步对磁盘的访问
    • 目的是对于每一个块,同一时间只有一份拷贝放在内存中
    • 并且只有一个内核线程使用这份拷贝
  2. 缓存常用的块以提升性能
    • bcache 管理
    • LRU 最近访问缓存

img/bcache.png

bio.c 代码分析

  1. bget 获取一个 (dev,blockno) 对于的 buf
    • 如果 cached, return b
    • 否则 return 一个未使用的 buf
  2. bread
    • 做检查 b->flags & B_VALID) == 0
    • 调用 iderw
  3. bwrite
    • 置 B_DIRTY
    • 调用 iderw 写入数据
  4. brelse
    • 获取锁 bcache.lock
    • refcnt–
    • 将当前的 block 移到 LRU 的前面
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/whc_softHardware/xv6-course.git
git@gitee.com:whc_softHardware/xv6-course.git
whc_softHardware
xv6-course
xv6-course
master

搜索帮助