02 2024 档案
[MIT 6.S081] Lab: mmap
摘要:Lab: mmap 在本次实验中,我们要实现的是一个比较简简单的 mmap 实现,将文件映射到内存中的某个块,并根据权限设置这块内存的行为,以及为其提供延迟分配策略。 mmap 对于将文件映射到内存,其实是先规划好一块区域给文件使用,为什么要提供延迟分配,是因为如果需要映射一个文件时,就规划好一块内
[MIT 6.S081] Lab: file system
摘要:Lab: file system 在这个实现中我们将为 xv6 的文件系统实现二级间接块以支持大文件,与实现文件的软链接。 Large files 在该任务中,我们将为 xv6 的文件系统实现二级间接块,以支持大文件。对于这个功能,我们需要修改 struct inode 中 addr 字段的功能。
[MIT 6.S081] Lab: locks
摘要:Lab: locks 在本次实验中依然是承接上次的实验,继续多线程编程的实践。 Memory allocator 在该任务中,要为每个 CPU 实现单独的内存空闲队列分配,在该分配方式下,若单个 CPU 的空闲队列内存不够,则需要从其他 CPU 拿走一些空闲内存。 转到 kernel/kalloc.
[MIT 6.S081] Lab: Multithreading
摘要:Lab: Multithreading 在这个实验中主要是要熟悉一下多线程的一些东西,比如实现一个用户态线程,还有使用一些 api 。 Uthread: switching between threads 这个任务的主要目的是实现用户态线程的调度,不过这个用户态线程个人认为是有栈协程。在这个任务中,
[MIT 6.S081] Lab: Copy-on-Write Fork for xv6
摘要:Lab: Copy-on-Write Fork for xv6 在这个实验中,我们要为 xv6 实现 cow fork 。 Implement copy-on write 根据写时复制的方式,我们在复制页面的时候应该采用的是将父级的物理页面映射到子级的页面,因此我们需要修改 kernel/vm.c
[MIT 6.S081] Lab: xv6 lazy page allocation
摘要:Lab: xv6 lazy page allocation Eliminate allocation from sbrk() 这一步比较简单,直接在 sys_sbrk 中将分配内存改为对内存大小进行修改而不分配内存即可。 uint64 sys_sbrk(void) { int addr; int n