6.S081

添加用户函数 在 Makefile 的 UPROGS 处添加 添加系统调用 系统调用的用户空间代码在user/user.h和user/usys.pl中。 内核空间代码是kernel/syscall.h

Redis Cluster 公网部署

RT,如果要公网访问服务器的 Redis,要将 redis-cluster 部署在公网上(似乎是废话,但是如果 Redis 服务发现端口是本地的话,就没法公网访问)。 config 中有几个很重要的参数: # redis-cluster.conf cluster-announce-ip 116.205.130.21 # 公

6.824 Lab4

Task 完成 Multi-Raft lab4A:完成 Multi-Raft 控制中心(和 lab3 内容差不多,一句话来说就是 shardctrler 是一个将 Config 作为日志进行维护的单 Raft 集群,并且不需要实现快照和持久化) 需要注意的地方是执行节点的

6.824 Lab3

Task 在 raft 框架的基础上建立一个容错的 KV 数据库。重点在于理解 Service 层和 Raft 层的交互,代码方面较为简单,故不进行赘述。 Step 在 client 和 service 两层完成 Get(), Append(), Put() 对重复的 Append 或 Put 进行去重 service 层的快照

6.824 Lab2D

前置芝士 Task 完成 Raft 的快照功能(涉及到较多的与 Service 层的交互。 为什么要有 snapshot? snapshot 可以将 log 压缩,比如将 10 个 log 压缩成 9 个(当两个 log 修改的 key 值一样时)。 snapshot 可以减少 Raft 层 log 的长度,帮

6.824 Lab2C

前置芝士 Task 完成 Raft 的持久化。 Step 如果前面做得好,只需要完成持久化。 持久化至 Service 层 1 persist() Crash 后从 Service 层恢复 1 readPersist(data []byte) 如果和我一样前面差点意思,就要小修一下 guide AppendEntries Handler 中,Followe

6.824 Lab2B

前置芝士 Task 处理日志,具体来说是接收 Service 层发来的日志,日志复制,应用日志。 涉及到一点 Raft 层与 Service 层的交互,比如 Leader 接受 command 并保存为日志;Apply 日志到 Service 层。 Step 选举的时候需

6.824 Lab2A

Task 完成各种情况的领导人选举。 我们首先需要熟悉一下 Raft 的工作原理,建议先过一遍 前置芝士。 Step 先完善 Raft 结构和 Make 函数,再结合 Gif 思考单个节点的状态。 节点开始时的状态是 Fol