摘要: 目录 作者:殷某人 更新时间:2022/07/03 WAL机制 xv6操作系统中的log机制, 目的是为了在系统 cash的时候,可以达到: 数据的一致性,达到事务的原子性目的: 要么写入全部成功,要么写入全部失败 提供发生故障时,数据恢复机制。 本质原理就是遵守 Wirte Ahead Log原则 阅读全文
posted @ 2022-07-10 23:31 殷大侠 阅读(542) 评论(0) 推荐(3) 编辑
摘要: 作者:殷某人 更新时间:2022/07/10 数据结构 文件的内存中的定义 xv6中,文件是一个广义的概念, 它即可以是磁盘文件,也可以是管道。 数据结构定义如下: struct file { enum { FD_NONE, FD_PIPE, FD_INODE } type; int ref; // 阅读全文
posted @ 2022-07-10 23:30 殷大侠 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 作者:殷某人 更新时间:2022/07/10 管道机制 管道可以看到双端队列,一头读,一头写,如下图所示: 在xv6系统中,使用一块内存缓存块实现管道机制: 管道可以看作为特殊的文件, 通过文件的api对管道进行读写操作, 通过下面文件结构定义就可以看出来: struct file { enum { 阅读全文
posted @ 2022-07-10 23:29 殷大侠 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 目录 作者:殷某人 更新时间:2022/07/03 相关源码文件 buf.h bio.c ide.c 架构图 数据结构 内存的缓存块 缓存块用于缓存磁盘上的一个block, 大小为512字节, 在内存中,缓存块采用数组+双向链表的数据结构,使用链表的目的是进行LRU优化, 链表的顺序按照最近使用顺序 阅读全文
posted @ 2022-07-10 23:27 殷大侠 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 作者:殷某人 更新时间:2022/07/08 框架图 文件系统在磁盘上的布局 block块管理: free bitmap区 使用每一个比特表示磁盘上的一个block块是否可用。 inode保存数据的结构 使用两层的结构进行数据存储。 数据结构定义 磁盘上的保存的数据结构 超级块对象 每一个文件系统都 阅读全文
posted @ 2022-07-10 23:25 殷大侠 阅读(1128) 评论(1) 推荐(0) 编辑