今年年初寒假的时候,尝试做了一下CMU-15445的lab2,并发B+树的实现。可惜能力实在有限,如果不是西部小笼包大佬的博客,我都完全不知道从哪里开始。最后也是7分抄3分自己写,对着课件PPT的B+树分裂合并流程一点点啃完了。不过还有一个一直困扰我的问题,就是大佬使用了一个thread_local变量来记录根节点锁的上锁次数,我一直不明白为什么要这样做。然后我决定自己单步调试一下如果不使用thread_local变量记录根节点锁加锁次数会怎么样。
6.824-lab2总结
发表于
更新于
领导人选举
Raft 将所有节点分为三个身份:
Leader
:集群内最多只会有一个 leader,负责发起心跳,响应客户端,创建日志,同步日志。Candidate
:leader 选举过程中的临时角色,由 follower 转化而来,发起投票参与竞选。Follower
:接受 leader 的心跳和日志同步数据,投票给 candidate。
Raft使用心跳来维持leader身份。每个节点都以follower的身份启动。leader定期发送心跳给所有follower以维持自身的身份。每当follower收到了leader的合法心跳,就刷新自己的超时选举时间。每个节点在初始化时启动一个定时器协程节点选举超时后转变为candidate,提高任期,并发起这轮任期内的选举。
6.824-lab1总结
发表于
更新于
窗前呓语
发表于
更新于
你用飘忽不定的眼神审视着周围世界,目光在无数个构成事物实体的点上游离,不曾停留。紧张、拘束、好动,你忍不住想将路障桩子一脚踢飞,可你不敢这么做,因为这会吸引市民朋友们的注视。你是一只狼,那种好奇的目光一旦被你的敏锐双眼所捕捉,你就忍不住起鸡皮疙瘩,因此你害怕哪怕是一瞬间的眼神对视。你低着头沿着街道在商店前快步前进着,扭头看见商店玻璃镜子里的你,他是那么的不安,仿佛极不情愿出门似的。你为什么要带他出来?
xv6进程调度细节
发表于
更新于
二分题汇总
发表于
CMU 15-445 Project-1(2022秋季)
发表于
更新于
git配置
发表于
更新于
配置git账户名与邮箱
1 | git config --global user.name "forgivehat" |
lab-8-lock
发表于
更新于
lab-9-fs
发表于
更新于
lab-fs
Large files
修改fs.h
中关于直接块间接块的定义,前11
块为直接快,第12
块为一级间接块,第13
块为二级间接块。
1 | #define NDIRECT 11 |
当要访问的bn(block number)
大于NDIRECT + NINDIRECT
时,访问二级间接块,仿照一级间接块的查询方式即可,注意需要查询两级地址。