自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

原创 Extendible Hashing

Extendible HashingBackground最近在学习CMU 2021的15-445课程, 其中lab2便是要实现一个Extendible Hash, 实验过程踩了不少的坑,在这里记录一下。Extendible Hashing正如其名, 是一种可扩展哈希表, 可扩展指其容量,因为当不停往哈希表插入键值对时, 如果纵向(纵向是哈希表目录 director 大小, 横向是每个键对应的同一键池 bucket 大小)大小不扩张, 只扩张横向大小, 导致冲突键值对太多,寻找效率退化为 O(n)

2022-04-14 13:21:51 528

原创 frangipani 论文笔记

Frangipani: A Scalable Distributed File SystemAbstractFrangipani 是一个两层架构的文件系统:底层为Petals :一个分布式虚拟磁盘顶层为Frangipani file system,在每台机器上运行同样的代码,利用分布式锁来保证一致性系统中的节点相互之间拥有信任权限,分享虚拟磁盘对外界根据协议暴露接口,可通过网络调用访问文件1. Introduciton面对逐日增长的文件存储需求,增加机器是必须要做的事。这就引出了一下

2022-01-05 20:29:05 490

原创 MIT 6.s081 导航栏

xv6-lab1-utilxv6-lab2-syscalxv6-lab3-pgtblxv6-lab4-trapxv6-lab5-lazyxv6-lab6-cowxv6-lab7-threadxv6-lab8-lockxv6-lab9-fsxv6-lab10-mmap

2021-11-16 18:41:12 492

原创 xv6-lab10-mmap

Lab: mmap实验目标在实验环境中实现 mmap() 系统调用hintschar* mmap(void *addr, int length, int prot, int flags, int fd, int offset);int munmap(void *addr, int length); mmap() 映射的页面应该是 lazy alloc 的,以保证在映射大文件时不会阻塞每个进程应保持对 mmap() 映射的记录。创建一个符合 VMA 要求的

2021-11-16 16:52:44 1415

原创 xv6-lab9-fs

Lab: file system前置知识阅读xv6 book 第八章Large files实验目标在本实验中,测试程序将创建一个65803个磁盘块大小的文件,而未修改前的xv6只支持最大268个磁盘块大小的文件。你的目标是修改文件系统结构和分配磁盘块代码以支持更大的文件。实验实现hints新增一个二级目录以支持(11 + 256 + 256*256)= 65803大小的文件fs.h 中的 struct dinode,NDIRECT,NINDIRECT,MAXFILE 是

2021-11-08 15:32:41 1867

原创 xv6-lab7-thread

Lab: Multithreading前置知识阅读xv6 book 第七章Uthread: switching between threads实验目的在本实验中,你需要设计用户级线程切换的上下文uthread.c 包含了用户级线程切换的代码uthread_switch.S 是你要是实现的保存和恢复线程上下文代码实验实现hints在thread_creat() 和 thread_schedule() 中添加你的代码修改 struct thread 来保存你的上下文你将会在 t

2021-11-07 19:06:55 732

原创 xv6-lab6-cow

Lab: Copy-on-Write Fork for xv6实验目标本实验你的目标是实现xv6上的 copy-on-write实验实现copy-on-write介绍copy-on-write 是指当你创建子进程时,并不实际复制父进程的空间地址的内容到新的物理内存,而是将页表项改为只读,并在第一次父/子进程要改变页面内容时才进行复制,并将原来的页面解锁为可读写。这种做法节省了大量的物理内存,尤其是现在大部分程序在 fork() 和通常立马会接上 exce() 载入新的程序 。总体来说本实验的思

2021-11-05 14:53:55 730 1

原创 xv6-lab5-lazy

Lab:xv6 lazy page allocationEliminate allocation from sbrk()实验目标本实验你的任务是修改 sys_sbrk() 使得其只增加/减少进程地址空间大小,而不真正地分配页面实验实现/* sysproc.c */uint64sys_sbrk(void){ uint64 addr; int n; if(argint(0, &n) < 0) return -1; addr = myproc()-&gt

2021-10-31 21:20:28 328

原创 xv6-lab4-trap

Lab:traps前置知识xv6 book 第四章kernel/trampolines.S 涉及从用户态到内核态以及返回的代码kernel/trap.c 处理中断的代码RISC-V assembly实验目标该实验旨在让你熟悉一些汇编代码Backtrace实验目标在kernel/printf.c 中实现一个函数 backtrace(), 并在 sys_sleep 中调用它。backtrace() 会打印当前栈上所有函数调用返回地址backtrace:0x0000000080

2021-10-30 15:45:35 1301

原创 xv6-lab3-pgtbl

Lab:page tables前置知识xv6 book 第三章熟悉kernel/memlayout.h、vm.c、kalloc.cPrint a page table实验目标实现一个函数 vmprintf(pagetable_t)该函数能按照以下格式打印页表page table 0x0000000087f6e000..0: pte 0x0000000021fda801 pa 0x0000000087f6a000.. ..0: pte 0x0000000021fda401 pa

2021-10-28 21:18:44 3064 3

原创 xv6-lab8-lock

Lab:lock前置知识xv6 book 章节6、3.5、8.1对于hash的基本认知对于锁的基本认知以及死锁的处理方法Memory allocator实验目标在未修改前,所有内存块由一个锁管理,若有多个进程并发地获取内存,则会造成非常多的锁等待,kalloctest则统计了锁冲突的次数,如下$ kallocteststart test1test1 results:--- lock kmem/bcache statslock: kmem: #fetch-and-add 83

2021-10-27 17:13:26 2374 1

原创 xv6-lab2-syscall

Lab: system calls(HITSZ)前置知识阅读xv6 book 章节2、4.3、4.4熟悉系统调用用户空间代码 user/user.h 和 user/usus.pl熟悉系统调用内核空间代码 kernel/syscall.h 和 kernel/syscall.c熟悉进程相关代码 kernel/proc.h 和 kernel/proc.cSystem call tracing实验目标实现一个系统调用 trace(uint64 mask)若mask的二进制表示中第n位为1

2021-10-26 16:04:03 3585 8

原创 HITsz os-lab xv6-util

HITsz os-lab xv6-util1.sleep题目输入 sleep 命令后,命令行会 ”暂停“ 一段时间 (10个ticks,ticks由内核定义),然后输出"(nothing happens for a little while)"。实现原理调用系统调用 sleep(int)代码#include "kernel/types.h"#include "user.h"int main(int argc,char* argv[]){ if(argc != 2){

2021-09-29 16:29:31 1305

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除