Lab X: challenges
The goal of this lab is to have fun and explore more advanced systems topics.
You have the following options:
- Finish at least two challenge problems from labs 1–5.
- Do lab 6 to extend your JOS for running a web server.
- Work on a project of your choice that involves your JOS.
It must be of the same scope as the above options or larger.
See a list of suggested project ideas below.
Check out the cool lab X demos from past 451:
18sp,
16au,
and
15au!
Deliverables
- Nov 16: submit a short proposal on what you plan to do for lab X.
- Dec 7: demo in class - strongly encouraged.
Due to time constraints,
higher priority will be given to your own projects.
- Dec 10: submit your code and a short write-up; in the write-up,
describe the problems/project and why you chose them,
challenges you faced (if any), your solution,
and anything interesting that you would like to share.
Project ideas
If you are doing your own project, try to make sure your goals are
reasonable; perhaps set a minimum goal that’s definitely achievable
and a more ambitious goal if things go well.
Here’s a list of ideas to get you started thinking.
Feel free to pursue your own ideas.
See more ideas from CSE 481A.
- Make JOS run on RISC-V or ARM CPUs.
- Make JOS run on x86-64 CPUs. This includes redoing the virtual
memory system to use 4-level (or 5-level) pages tables.
- Rewrite the JOS kernel or user-space programs (e.g., the web server in lab 6)
in Go or Rust.
You may need to add necessary runtime support for programs written in these languages.
- Build a virtual machine monitor that can run multiple JOS instances,
using x86 virtualization support.
- Implement virtio drivers in JOS.
For example, you can then replace the disk driver with virtio-blk,
or implement a NIC driver using virtio-net.
- Do something useful with Intel’s
Software Guard Extensions (SGX)
or Transactional Synchronization Extensions (TSX).
- Implement ideas (e.g., packet filter) from the papers on exokernel,
proof-carrying code,
or Jitk.
- Use file system ideas from soft updates, journaling, copy-on-write, LFS,
or another advanced file system.
- A window system for JOS, including graphics driver and mouse.