GithubHelp home page GithubHelp logo

6.s081's Introduction

6.s081(xv6)

xv6是MIT6.s081这门操作系统课所用到的基于riscv架构的教学操作系统。这门课,主要布置了以下10个lab,这些lab基本上都是围绕xv6来修改相关代码,以及增加相关特性

写在前面


项目是以一个git分支来完成一个lab的,所以不同的lab分布在不同的分支中。

目录

labx: <labname> <branchname>

  • lab1: Utilities util

    lab1主要是利用系统调用实现一些小命令,有sleep、find、primes、xargs。 其中稍为绕一点的是primes,基于管道来实现素数筛算法

  • lab2: SystemCalls syscall

    lab2主要是熟悉xv6的系统调用的工作方式,为xv6添加两个系统调用 1.sys_trace() 记录一个进程都使用了哪些系统调用,并输出

    2.sys_info() 收集正在运行的系统信息(空闲内存,进程数量)存在一个结构体sysinfo中

  • lab3: PageTables pgtbl

    lab3主要是对页表的一些操作,包括以下内容

    1.通过修改页表映射加速getpid()系统调用,让其无需经过内核

    2.实现一个函数vmprint(),用来打印当前页表的映射情况

    3.实现一个新的系统调用pgaccess(),检测并报告被访问的页

  • lab4: traps traps

    lab4主要是探究基于trap的系统调用的过程,包含以下内容

    1.实现函数backtrace(),打印栈上的函数调用情况

    2.实现系统调用sigalarm(n,fn),每过n个tick调用函数fn、以及系统调用sigreturn(void),用来重启用户程序

  • lab5: cow cow

    lab5主要是实现cow(copy on write)写时复制这个特性

    在传统fork中,因为需要拷贝父进程的地址空间,但有时其实用不到父进程的比如子进程要执行exec的时候,这样就会浪费了拷贝时间。

    于是引入了cow这个技术,先不急着给子进程分配物理页,即父子进程都指向相同的物理页,当需要写的时候,利用pagefault机制再来分配新的物理页。

  • lab6: mutilthread thread

    lab6主要与多线程有关,大致内容为实现一个简单的线程库,以及用pthread库写一些简单的多线程程序

    1.实现线程切换、创建线程

    2.减小锁的颗粒度来提高程序的并发速度

    3.利用pthread库实现多线程的同步

    lab2

  • lab7: locks lock

    lab7主要是重新设计锁来提升并行度

    1.CPU的内存分配器

    2.Buffer cache 在多进程对于文件系统的读取中,对于Buffer cache代码的重构

  • lab8: filesystem fs

    lab8主要是在文件系统中添加对大文件的支持,以及软链接

    1.提高文件的最大大小

    2.实现软链接

  • lab9: mmap mmap

    lab9主要是实现mmap系统调用

  • lab10: networking net

    lab10主要是写一个简单的xv6网络驱动程序

6.s081's People

Contributors

flamintune avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.