OS161
Project Details
This project covers the process of operating system development using OS161. It focuses on setting up the development environment and familiarizing with essential tools such as GDB. From there, the design delves into implementing synchronization primitives, requiring an understanding of hardware-level atomic instructions and implementing blocking locks and condition variables. Mutual exclusion and precise spinlocking are key ideas covered in this work. It builds upon this by utilizing several of the written primitives to handle a scale problem containing several threads competing for locks concurrently. Next, the focus shifts to developing file-related system calls, gaining insight into safely transporting arguments between user space and the kernel, implementing new system calls, and working with the virtual file system interface. The system calls implemented include open(), read(), write(), lseek(), close(), dup2(), chdir(), and __getcwd(). From there, I introduce process abstraction to the operating system with the implementation of fork(), execv(), and waitpid() system calls, emphasizing protection mechanisms and multiprocess safety. The last area explores virtual memory systems in an OS, covering the functions, benefits, and costs of virtual memory, as well as the hardware and software mechanisms needed to implement it. This includes managing virtual address spaces and implementing page tables and paging. Overall, this project encompasses several key concepts of operating systems used in the real world.