LAB
文章平均质量分 86
千裡
无
展开
-
《Distributed Systems》(6.824)LAB4B(Sharded Key/Value Service)
LAB4的系统架构图如下,在前面的Lab4A中,已经实现了LAB4B,原创 2020-12-01 11:54:41 · 611 阅读 · 0 评论 -
《Distributed Systems》(6.824)LAB4A(Sharded Key/Value Service)
任务描述在之前的lab中我们已经实现了kv存储系统,但是所有的put/get请求都打在leader上,leader的负载很大,因此在Lab4在此基础上进行改进,根据实验任务描述,通过一个master进行集群的配置,一个集群负责一部分碎片任务即shards,可以通过客户端管理master的配置信息,同时master的配置即表示了各个集群该完成什么样的任务,这样,比如对于kv存储系统固定的键的put和get操作都由不同的集群控制,同时客户端在拿到master中关于访问根据数据的hash,数据应该找哪个集群的配原创 2020-11-29 19:12:05 · 312 阅读 · 0 评论 -
《Distributed Systems》(6.824)LAB3B(Fault-tolerant Key/Value Service)
LAB3B的任务是实现一个快照,但是相对之前难度在于代码量非常大,逻辑处理起来较为复杂,需要处理server层和raft层的交互,以及raft层与raft层之间的交互。client的代码较之前的lab无需改变。流程梳理需要在raft层的log大于给定maxraftstate的时,server层的kv系统进行快照,raft根据应用层的快照再压缩raft层的日志,并且将snapshot和log写入持久化层。而在leader向follower发送心跳包时,根据rf.nextIndex[]和rf.lastInc原创 2020-11-29 14:32:18 · 415 阅读 · 0 评论 -
《Distributed Systems》(6.824)LAB3A(Fault-tolerant Key/Value Service)
流程MIT 6.824: Distributed Systems- 实现Raft Lab3A原创 2020-11-26 21:28:10 · 475 阅读 · 0 评论 -
The Missing Semester of Your CS Education
课程首页1/13: Course overview + the shell介绍了一些shell方面的简单指令和概念,比如data、ls、cd、which、pwd、<、>、>>、echo、mv、curl、man等,如果了解linux c编程,这些应该都懂的。列出一些我平时没有注意到的细节和指令。关于文件和目录的rwx权限,进入文件夹需要x权限,以及删除文件时对当前目录需要有写权限等。空格分割参数,如果想要参数包含空格,则使用""或\,比如mkdir hello\ world原创 2020-11-24 22:06:25 · 460 阅读 · 0 评论 -
《Distributed Systems》(6.824)LAB2(raft)
写在前面本次lab2有三部分,分别是lab2A(leader选举),lab2B(记录日志),lab2C(可持续化),其中最难的点在于lab2C的Figure 8 (unreliable)样例。本次实验我是写了10天左右,尽管LAB分成了3部分,但是实际上可能由于考虑不全面通过了当前的样例在后面被测出来之后就要修改之前的代码。因此不要觉得过了样例就肯定没问题了。我写的代码可以在后面给出的我的GITHUB地址去看,**本篇博客就列出我踩过的坑,不分析我写的代码了。**因为我打算参考GITHUB上高st原创 2020-11-21 15:24:12 · 895 阅读 · 0 评论 -
《Distributed Systems》(6.824)LAB1(mapreduce)
目录开始之前lab开始之前6.824是mit开的一门分布式系统的课程,任课教师是课程视频B课程首页go文档lab原创 2020-11-12 13:42:49 · 747 阅读 · 2 评论 -
《Intro to Computer Systems》(csapp)LAB7(proxylab)
网络编程与web服务器与并发《csapp》11章和12章。对锁的理解。lab首先需要阅读本次lab的writeup以及《CSAPP》的网络编程和并发两章,本次lab给我们提供了一个《CSAPP》 上实现的一个tiny(一个web服务器),我们需要做的是写一个代理服务器,用来接受请求,并且将请求发送给tiny启动的服务器。在PART 2和PART 3中添加线程并发访问以及缓存,来完善我们写的代理服务器。实验完成以后可以直接将代理服务器应用到浏览器上。实现主要参考了七 PROXY LAB问题可能由于环原创 2020-11-06 17:58:38 · 1529 阅读 · 6 评论 -
《Intro to Computer Systems》(csapp)LAB6(malloclab)
目录动态内存分配lab动态内存分配lab本次实验参考了《CSAPP》原创 2020-10-31 13:58:49 · 369 阅读 · 0 评论 -
《Intro to Computer Systems》(csapp)LAB5(shlab)
异常控制流了解基本的LinuxC编程,除了《csapp》的第八章以外,也推荐看看《Linux/Unix编程实践教程》以及《Unix环境高级编程》。LAB本次LAB难度不是很大,但是需要多查阅手册,以及注意细节。在《Linux/Unix编程实践教程》里也简单实现过一个shell。本次lab根据给测试样例一点一点完善shell。test1当标准输入流关闭时退出终端。分析这里简单分析一下已经提供的代码框架。执行我们写的shell时,根据参数进行对应的操作,比如-v、-h、-p参数。默认关闭原创 2020-10-30 12:28:37 · 314 阅读 · 0 评论 -
《Intro to Computer Systems》(csapp)LAB4(CacheLab)
有2s组,每组有E行,每一行是一个缓存块,每一行包括1个有效位,t个标记位。有2b字节存数据以及有效位和标记位(标记位用来和给定地址的标记位对比,判断给定地址在不在该行中,如果在则命中)。参数是判断高速缓存是否存在对应地址的数据的操作为:参数S和B将m位地址分为了三段,首先通过S找到对应的组,再该组的行中找到标记位t与查询地址的标记为t相等的行,然后再该行包含的块中查找偏移地址位B的位置。即缓存命中。直接映射高速缓存在理解了组、行、标记、偏移地址概念后,直接映射就是每组只有一行,因此当两个原创 2020-10-28 18:05:35 · 396 阅读 · 4 评论 -
《Intro to Computer Systems》(csapp)LAB3(Attack Lab)
话说,试了一下retq弹栈64位,明明pushq压入64位,却只能pushq $0x4017ec,不能pushq $0x4017ec001200目录运行时栈结构缓存区溢出对抗缓冲区溢出的方法栈随机化栈破坏检测(金丝雀值)LAB3Part I: Code Injection AttacksLevel.11Level.12我的错解正解分析Level.13Part II: Return-Oriented Programminglevel.21Level.23运行时栈结构缓存区溢出比如不安全的gets()原创 2020-10-25 22:50:07 · 430 阅读 · 0 评论 -
《Intro to Computer Systems》(csapp)LAB2(Bomb lab)
目录编译系统常用寄存器操作数格式数据传送指令gcc 和 gdbgdb常用指令lab1编译系统对于源代码hello.c。gcc -Og -S hello.c,则生成hello.s汇编程序。gcc -Og -c hello.c,则生成生成hello.o可重定位文件。gcc -Og hello.c,则生成可执行文件a.out.可以使用objdump -d a.out对.o文件或.out文件进行反汇编。常用寄存器操作数格式数据传送指令gcc 和 gdbgdb常用指令layout原创 2020-10-24 21:53:38 · 267 阅读 · 0 评论 -
《Intro to Computer Systems》(15-213)LAB1(Data lab)
课程首页目录lab1lab1原创 2020-10-23 11:54:14 · 221 阅读 · 0 评论 -
【计算机网络】Stanford CS144(原实验相关内容已删)
该课程主要的作业是自己使用c++实现一个tcp,能够加深对计网的理解。记录解决lab的过程。环境搭建开始时,我使用的是ubuntu16.04,apt下载的gcc版本较低,中间make编译时发现gcc要求8+(lab0的pdf也明确说明),装了半天没成功于是又装了一个ubuntu20.04。之后参考课程网站lab0的pdf,在git上clone项目即可开始实验。LAB0Networking by handFetch a web page使用telnet 发送http(命令中http换成80也是可以原创 2020-10-22 10:27:50 · 4066 阅读 · 19 评论