Skip to content

emidec/cs179f-fall23

 
 

Repository files navigation

CS179F Fall 2023

Catalog Description

CS179F delves into the design and implementation of operating systems by conducting a quarter-long project.

Team

  • Instructor: Emiliano De Cristofaro
    • Email: emilianodc AT cs DOT ucr DOT edu
    • Lectures: Tuesdays 3:30 - 4:20 PM Gordon Watkins Hall, Room 1101
    • Office hours: TBD
  • Teaching Assistant: Gao Lian
    • Email: lian DOT gao AT email DOT ucr DOT edu
    • Office hourse: TBD

Textbooks

Communication

  • Piazza for announcement, discussions, and help
  • Canvas for assignments and grading

Acknowledgments

  • MIT 6.1810 Operating System Engineering class series for setting up the projects and maintaining xv6-riscv
  • Prof. Heng Li for sharing material related to his iteration of the class in W'21 and W'20

XV6

  • We will use the XV6 operating system as a base for our projects
  • Please familiarize yourself with XV6 to get a grasp on how it is organized and implemented, e.g., using:
    • Online version of the Lions commentary
    • Source Code, also available through the Unix Heritage Society
    • If you are curious, you can also see the original code in the PDP11/40 Processor Handbook, Digital Equipment Corporation, 1972 [PDF] [Web]

Environment

  • You need three main things:
    • xv6-riscv, a re-implementation of Unix Version 6 for a modern RISC-V multiprocessor using ANSI C
    • qemu, an open source machine emulator and virtualize
    • class git repository, https://github.com/emidec/cs179f-fall23/
  • Please see https://pdos.csail.mit.edu/6.828/2023/tools.html for instructions re. how to set up xv6 on your local machine, or see below
  • Note: I've encountered problems with running qemu on Macs running Apple M1/M2 silicon. I'm still working on possible solutions, but my advice for the moment is to use a virtual machine running Ubuntu
  • Note: I also encountered problems with latest versions of qemu. My advice is to get (and compile from source) qemu 4.1.1 from https://download.qemu.org or even better 5.10 rather than the latest version installed via packages. You can do so by running (replace version to 5.10 if you want to install that):
wget https://download.qemu.org/qemu-4.1.1.tar.xz
tar xf qemu-4.1.1.tar.xz
cd qemu-4.1.1
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
make
sudo make install

Install on Linux

  • Debian/Ubuntu:
    • sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
  • Arch Linux:
    • sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-emulators-full
  • To test your installation, run:
    • $ qemu-system-riscv64 --version
      QEMU emulator version 5.1.0
    • $ riscv64-linux-gnu-gcc --version
      riscv64-linux-gnu-gcc (Debian 10.3.0-8) 10.3.0
    • Checkout to the util branch (git checkout util), then run make qemu, you should get a shell and an output to ls like this:
$ ls
.              1 1 1024
..             1 1 1024
README         2 2 1982
xargstest.sh   2 3 93
cat            2 4 22360
echo           2 5 21304
forktest       2 6 11976
grep           2 7 25648
init           2 8 21928
kill           2 9 21192
ln             2 10 21056
ls             2 11 24608
mkdir          2 12 21312
rm             2 13 21296
sh             2 14 39408
stressfs       2 15 22280
usertests      2 16 104752
wc             2 17 23360
zombie         2 18 20576
cow            2 19 28168
uthread        2 20 23968
call           2 21 21136
kalloctest     2 22 25992
bcachetest     2 23 26800
mounttest      2 24 33064
crashtest      2 25 22176
console        3 26 0

Projects

We will have five projects, each counting 20% of the final grade, aimed to making several improvements on xv6:

  1. Unix Uilities: sleep, find, xargs
  2. Memory Allocation
  3. Copy-On-Write
  4. File System: large files and symbolic links
  5. mmap

Grading

Each lab will be graded based on:

  • Source code and comments
  • Lab report
  • Tests created and passed
  • In-person answers to questions regarding the work ("demo") with TA

Late Submissions

  • Late submissions within 48 hours will be graded with 20% penalty
  • Late submissions beyond 48 hours will not be graded
  • Exceptions may only be granted case by case with evidence presented

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 83.9%
  • Python 10.9%
  • Assembly 2.7%
  • Makefile 2.3%
  • Perl 0.2%
  • Shell 0.0%