Skip to content

Latest commit

 

History

History
34 lines (29 loc) · 2.24 KB

README.md

File metadata and controls

34 lines (29 loc) · 2.24 KB

xv6

How to run

  • Dockerfile contained in this repo should be enough to get experiment environment
  • make qemu-nox may compile and start the xv6 OS
  • make clean will delete executables and generated OS image
  • ctrl-A-x to exit the OS

Report

The report illustrates the motivation, design, implementation and result of this project.

Video

This video shows how to interact with updated xv6.

Declaration of revision on xv6 source code

Our changes on xv6 source code are mainly on following files:

  • mkfs.c: add bin directory and put all user programs into during OS initialization
  • exec.c: check /bin first before execution
  • path_util.h: path related functions, including get current working directory, and path concatenation
    • For the working directory fetching, I referenced blog1 and blog2
  • pwd.c: get absolute current working directory, and relative path within container
  • sh.c: check whether path to switch is valid within container
  • proc.[h.c]: container and process releted initialization and status handling
    • For the data structure of container and process, and initialization part(cinit(), userinit(), fork(), cfork()),we use xv6c and this project_report as a reference
  • cont.c: for the interface design(stages of container, style of commands) we use ctoos as a reference
  • For syscall-related files, we mainly reference this blog on how to add syscall to xv6
  • path_concatenation_test.c: a testcase file to test the functionality of path utils in path_util.h
  • testcases.txt: a sequence of commands and what to expect as testcases

Contribution

This project is a groupwork of Duke COMSCI510 Advanced Operating System. group member: