6s081专题

MIT 6s081 blog1.xv6内存管理

xv6内存管理部分 xv6内存布局 内核地址空间 如xv6指导书中图3.3:从0x80000000开始的地址为内核地址空间,CLINT、PLIC、uart0、virtio disk等为I/O设备(内存映射I/O),可以看到xv6虚拟地址到物理地址的映射,大部分是相等的关系。 在kernel/memlayout.h中对内存分布进行了宏定义 // kernel/memlayout.h//

MIT 6s081 lab6:Copy-on-Write Fork for xv6

lab6:Copy-on-write fork 作业地址:Lab: Copy-on-Write Fork for xv6 (mit.edu) 实现 fork 懒复制机制,在进程 fork 后,不立刻复制内存页,而是将虚拟地址指向与父进程相同的物理地址。在父子任意一方尝试对内存页进行修改时,才对内存页进行复制。 物理内存页必须保证在所有引用都消失后才能被释放,这里需要有引用计数机制。 一开始做

MIT 6s081 lab7:Multithreading

Thread switching 作业地址:Lab: Multithreading (mit.edu) lab7:Multithreading Uthread: switching between threads (moderate) 实现一个用户态的线程库 补全 uthread.c,完成用户态线程功能的实现。 这个实验其实相当于在用户态重新实现一遍 xv6 kernel 中的 sch

MIT 6s081 lab9:file system

Lab9: file system 作业地址:Lab: file system (mit.edu) 文件系统的实验,需要对提前阅读fs.c\bio.c\sysfile.c以及相关头文件 Large files (moderate) 本实验为xv6的文件系统添加大文件支持 原本的xv6文件系统的每个inode结构体,采用混合索引的方式记录数据所在的盘块号,如下图。 对于文件的前12K

MIT 6s081 blog 1.xv6内存管理

xv6内存管理部分 xv6内存布局 内核地址空间 如xv6指导书中图3.3:从0x80000000开始的地址为内核地址空间,CLINT、PLIC、uart0、virtio disk等为I/O设备(内存映射I/O),可以看到xv6虚拟地址到物理地址的映射,大部分是相等的关系。 在kernel/memlayout.h中对内存分布进行了宏定义 // kernel/memlayout.h//