大作业
文章平均质量分 83
Wound+=s
这个作者很懒,什么都没留下…
展开
-
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 · 1439 阅读 · 0 评论 -
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 · 1889 阅读 · 0 评论 -
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 · 742 阅读 · 0 评论 -
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 · 739 阅读 · 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()->原创 2021-10-31 21:20:28 · 335 阅读 · 0 评论 -
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 · 1306 阅读 · 0 评论 -
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 · 3083 阅读 · 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 · 2399 阅读 · 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 · 3622 阅读 · 8 评论