
国外课程实验
文章平均质量分 96
mit6.824 cmu15445等课程实验
最佳损友1020
xdu 计科毕业
xjtu 计科在读
种一棵树的最好时机是十年前,其次是现在
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mit6.824 2022 lab4
简要地介绍代码结构,我的代码中有许多不必要的约束,但我也懒得去掉这些约束,首先是RPC处理函数在处理客户端请求前判断分区状态,看是否拥有且负责该分区数据。原创 2022-11-24 08:00:08 · 628 阅读 · 0 评论 -
mit6.824 2022 lab3
推荐博客:如何的才能更好地学习 MIT6.824 分布式系统课程?SOFAJRaft 日志复制 - pipeline 实现剖析 | SOFAJRaft 实现原理raft在处理用户请求超时的时候,如何避免重试的请求被多次应用?原创 2022-11-23 10:49:27 · 844 阅读 · 0 评论 -
mit6.824 2022 lab2
汇总博客:MIT6.824 2022不论是访问还是修改Raft可变类成员,都需要加锁可以改为2A时就尽可能实现更多功能,而不是仅仅通过测试,中文版论文用来大致了解raft算法,对照英文版论文编写代码。问题:RequestVote RPC中 at least as up-to-date对应于:由于是at least as,还包括相等的情况。votedFor:candidateId that received vote in current term (or null if none)当前任期接受到的原创 2022-11-22 20:32:59 · 1751 阅读 · 0 评论 -
mit6.824 2022 lab1
例如,切片是一个具有三项内容的描述符,包含一个指向(数组内部)数据的指针、长度以及容量, 在这三项被初始化之前,该切片为 nil。bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,,而"[[]]"是bash脚本中的命令,因此在执行时,使用sh命令会报错,将sh替换为bash命令即可。也就是说,new(T) 会为类型为 T 的新项分配已置零的内存空间, 并返回它的地址,也就是一个类型为 *T 的值。用Go的术语来说,它返回一个指针, 该指针指向新分配的,类型为 T 的零值。原创 2022-11-22 20:25:36 · 939 阅读 · 0 评论 -
mit6.824 2022
两年前写过一次6.824,一直卡在2c没过去,就放弃了。当时只看了,对GO也不怎么熟悉,现在看了一遍《Go程序设计语言》后再写一遍这些实验,锻炼一下GO语言能力。这篇博客只是简单记录一些实验过程中遇到的问题与收获,并不具备太多参考性。如何的才能更好地学习 MIT6.824 分布式系统课程?实效Go编程raft可视化Raft Q&ASOFAJRaft 日志复制 - pipeline 实现剖析 | SOFAJRaft 实现原理raft在处理用户请求超时的时候,如何避免重试的请求被多次应用?原创 2022-10-08 19:52:28 · 1200 阅读 · 16 评论 -
CMU15445 2020 B+TREE简单记录
做完了2021的15445,想做一下2020的b+ tree。按照2020 c++ primer assignment步骤一样拉取仓库,安装依赖包,但拉取的代码已经是最新的2021,所以需要将commit回滚到之前的版本。用pro1做测试,回滚到有buffer_pool_manager.cpp的版本。将 build_support中gtest_CMakeLists.txt.in的master改成main。通过课程代码:5VX7JZ添加2020的课程。图中为vscode插件git graph。........原创 2022-08-31 16:31:46 · 1959 阅读 · 3 评论 -
MIT6.S081 2021 locks
另外,许多编译器和CPU会对代码进行指令重排,乱序执行以获取更高的性能,为了不让临界区代码移出临界区,使用内存屏障,告知编译器和CPU不对屏障内部的load store指令进行重排。竞争常常造成丢失更新或读到部分更新问题,竞争的结果取决于CPU的执行顺序,内存操作的再排序,它的结果是很微妙的,调试时一条输出语句就能改变执行顺序,使得bug无法复现。假如数据结构的释放也由其内嵌的锁控制的的话,一旦该数据结构释放,则其他同时请求该锁的线程则会‘失灵’,使用引用计数来解决该问题。.........原创 2022-08-29 15:36:18 · 686 阅读 · 0 评论 -
MIT6.S081 Multithreading
MIT6.S081 Multithreading阅读xv6 book之前,简要看一下《深入了解linux内核》进程一章(不怎么看得懂),当然xv6 book也看的犯困原创 2022-08-28 23:05:29 · 435 阅读 · 0 评论 -
MIT6.S081 2021 mmap
在本实验中我定义了两个结构体,struct shared_memory和struct vm_area,其中shared_memory为共享物理页,分配给MAP_SHARED模式的mmap系统调用,vm_area描述文件映射的区域信息。创建一个结构体来描述mmap映射的内存区域,阅读《linux内核设计与实现》第15章进程地址空间,定义一个vm_area_struct类似的结构体,由于不能动态分配内存,故使用静态数组的方式来分配内存区域。找到unmap对应的区域并修改其地址范围,取消相应的映射。.......原创 2022-08-27 22:02:08 · 582 阅读 · 0 评论 -
MIT6.S081 2021 file system
在follow_link函数实现时我错误地使用了iunlockput方法,使得inode的引用计数变为0了,在sys_open函数ilock的时候就会报ilock错误,实际上我在只需要调用iunlock解锁即可,不需要降低引用计数。此时已经可以使用普通的gdb进行调试,判断错误在follow_link函数后,将该函数设置为断点。bmap函数,仿照一级索引块处理流程即可,二级索引块->一级索引块->数据块。itrunc函数,对索引块先释放buffer再free,数据块则直接free。...原创 2022-08-21 19:41:06 · 547 阅读 · 0 评论 -
MIT6.S081 2021 Copy-on-Write Fork for xv6
MIT6.S081 2021 Copy-on-Write Fork for xv6There is a saying in computer systems that any systems problem can be solved with a level of indirection.全局搜索scause,找到寄存器状态定义先不考虑引用计数原创 2022-05-24 10:44:14 · 618 阅读 · 0 评论 -
MIT6.S081 2021 networking
MIT6.S081 2021 networkingconsole驱动与时钟中断网卡驱动背景console驱动与时钟中断16550芯片相关介绍:16550芯片课程介绍由于不是学硬件的,一直没太搞懂这几个东西的交互关系是啥,我的理解是如下图所示。如果不看display这一边,那这个驱动是非常好懂的,正好和开头的介绍吻合,驱动存在两个上下文:内核进程上下文和中断上下文。分别对应consolewrite consoleread和uartintr三个函数。但我一直没看懂的是为啥uartintr函数有时候会调原创 2022-05-16 08:52:59 · 528 阅读 · 0 评论 -
内核页表学习记录
内核页表学习原创 2022-05-03 19:16:41 · 654 阅读 · 13 评论 -
mit 6.NULL简单记录
mit 6.NULL1 课程概览与 shellfind用法:Linux find 命令将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:# find . -name "*.c"将当前目录及其子目录中的所有文件列出:# find . -type f将当前目录及其子目录下所有最近 20 天内更新过的文件列出:# find . -ctime 20grep用法:Linux grep 命令grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式原创 2022-04-24 21:57:17 · 1749 阅读 · 1 评论 -
MIT6.S081 2021
MIT6.S081 Xv6 and Unix utilities system calls page tables traps原创 2022-04-04 23:14:38 · 3131 阅读 · 0 评论 -
CMU 15213(已搁置)
CMU15213datalabbomblab地址datalabbombobjdump -S bomb > bomb.asm # 反汇编结果输出到文件bomb.asm用asm后缀在vscode可以高亮,更好看一点。可以使用examine命令(简写原创 2022-03-16 19:49:04 · 670 阅读 · 0 评论 -
CMU15445 2021
lab地址讲义地址《数据库系统概念》中文版有许多删减和错误,英文版看起来又费劲。数据密集型应用设计Google 开源项目风格指南Effective系列(Effective c++,Effective STL,Effective modern c++)由于刚开始不知道咋注册Gradescope,就只通过了本地的测试用例,做完了3个实验后才开始提交Gradescope。Gradescope的注册邀请码为4PR8G5,学校填Carnegie Mellon University就可以了。原创 2022-02-21 22:05:34 · 7922 阅读 · 18 评论 -
CMU15445 buffer pool 2021
CMU15445 buffer pool 2021源代码lab1地址源代码LRU Replacement Policy//lru_replacer.h#pragma once#include <list>#include <mutex> // NOLINT#include <vector>#include "buffer/replacer.h"#include "common/config.h"namespace bustub {/**原创 2022-01-06 16:58:07 · 3419 阅读 · 4 评论 -
CMU15445 C++ primer 2021
CMU15445 C++ primer源代码知识点lab0地址看完了《C++ primer》,拿这个项目练手,熟悉C++,一边看《Effective C++》和Google 开源项目风格指南,一边写这个,加深印象。做第一个lab就遇到了一些问题。test/primer/starter_test.cpp:测试代码src/include/primer/p0_starter.h:实现代码在实现完代码功能后,去掉测试代码中的DISABLED_前缀,进行测试。我一般都是一边看着测试代码,一边看测试输出,看原创 2022-01-02 11:53:31 · 7229 阅读 · 14 评论 -
MIT6.824 lab1
6.824 Lab 1: MapReduceSpring 2018lab1链接博客的markdown文件step1 安装go并设置环境变量$ wget -qO- https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz | sudo tar xz -C /usr/localvim /etc/profile# 在最后一行添加export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin# 保存原创 2020-12-18 20:40:23 · 405 阅读 · 0 评论