> For the complete documentation index, see [llms.txt](https://xiayingp.gitbook.io/build_a_os/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xiayingp.gitbook.io/build_a_os/labs.md).

# Labs

- [Lab 1 Xv6 and Unix utilities](https://xiayingp.gitbook.io/build_a_os/labs/lab-1-xv6-and-unix-utilities.md): Implement some user tools.
- [Lab 2 Shell](https://xiayingp.gitbook.io/build_a_os/labs/lab-2-shell.md): Write a simple shell in OS
- [Lab 3 Buddy Allocator](https://xiayingp.gitbook.io/build_a_os/labs/lab-3-buddy-allocator.md): Understand and improve physical memory allocator
- [Lab 4 Lazy](https://xiayingp.gitbook.io/build_a_os/labs/lab-4-lazy.md): Allocate user memory lazily
- [Lab 5 Copy-on-Write Fork for xv6](https://xiayingp.gitbook.io/build_a_os/labs/lab-5-copy-on-write-fork-for-xv6.md): Your task is to implement copy-on-write fork in the xv6 kernel
- [Lab 6 RISC-V assembly](https://xiayingp.gitbook.io/build_a_os/labs/lab-6-risc-v-assembly.md): warmup and learn assembly
- [Lab 6 Uthread: switching between threads](https://xiayingp.gitbook.io/build_a_os/labs/lab-6-uthread-switching-between-threads.md): Design the context switch mechanism for a user-level threading system
- [Lab 6 Alarm](https://xiayingp.gitbook.io/build_a_os/labs/lab-6-alarm.md): Implement a primitive form of user-level interrupt/fault handlers.
- [Lab 7 Lock](https://xiayingp.gitbook.io/build_a_os/labs/lab-7-lock.md): Re-designing code to increase parallelism
- [Lab 8 File System: Large Files](https://xiayingp.gitbook.io/build_a_os/labs/lab-8-file-system-large-files.md): Increase the maximum size of an xv6 file.
- [Lab 8 File System: Symbolic links](https://xiayingp.gitbook.io/build_a_os/labs/lab-8-file-system-symbolic-links.md): Add symbolic links to xv6
- [Lab 9 mmap](https://xiayingp.gitbook.io/build_a_os/labs/untitled.md): Implement features relevant to memory-mapping a file
- [Lab 10 Networking Part 1](https://xiayingp.gitbook.io/build_a_os/labs/lab-10-networking-part-1.md): Complete the implementation of the E1000 networking driver
- [Lab 10 Networking Part 2](https://xiayingp.gitbook.io/build_a_os/labs/lab-10-networking-part-2.md): Implement network sockets
