Skip to content

Jerry-Terrasse/xv6-labs-2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Xv6 Labs

我的Xv6实验代码,基于 原仓库(git://g.csail.mit.edu/xv6-labs-2020)

实验简介

Lab Utilities

分支 util

  • 实现Xv6的编译、启动
  • 编写sleep find等一些用户态应用程序,以熟悉Xv6。

Lab System Calls

分支 syscall

  • 实现trace用于跟踪系统调用
  • 实现sysinfo用于获取系统信息。

Lab Page Tables

分支 pagetable

  • 实现vmprint用于打印页表
  • 实现各进程独立的内核页表
  • 将用户页表中的映射内容同步到内核页表,以便内核态可以直接访问用户态的内存。

Lab Traps

分支 traps

  • 实现backtrace用于打印函数调用栈
  • 利用时钟中断实现自定义定时器alarm

Lab Lazy Allocation

分支 lazy

  • 基于page fault实现惰性内存分配

Lab Copy-on-Write

分支 cow

  • 基于page fault实现写时复制,优化fork的性能
  • 基于引用计数维护内存页的生命周期

Lab Multithreading

分支 thread

  • 实现用户态线程切换uthread
  • (非Xv6) 利用pthread_mutex修复并发bug
  • (非Xv6) 利用pthread_cond实现barrier

Lab Lock

分支 lock

  • 实现多核内存分配器,优化kalloc性能
  • 利用哈希桶优化bcache,减少锁的竞争

Lab File System

分支 fs

  • 为原有inode添加二级间接索引,以支持更大的文件
  • 实现符号链接文件symlink,并在其他系统调用中提供支持

Lab mmap

分支 mmap

  • 实现mmap系统调用,以支持内存映射文件
  • 实现munmap系统调用,以支持解除内存映射
  • 需要支持最基本的mmap特性(MAP_PRIVATE MAP_SHARED)
  • munmap需要支持部分解除映射,必要时立即将修改写回文件

Lab Network Driver

分支 net

  • 补全e1000网卡驱动,以支持Xv6的网络功能
  • 需要根据手册e1000_transmit e1000_receive功能,即发送和接收数据包

相关资料

About

MIT 6.S081 Lab

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published