CS439_OperatingSystem
course repo for CS439 Operating System
p1: familiarize with the qemu emulator, implement a spinlock
p2: dynamic memory allocation by implementing malloc(bytes) and free()
p3: same as p2
p4: cooperative multithreading by implementing thread(function_to_run) and yield()
p5: preemptive multithreading by making changes to thread(function_to_run) and yield() such that an interrupt is issued every 1ms and the current thread is forced to yield; implement a blocking counting semaphore
p6: implement a simple file system (BobFS) that is loosely inspired by ETX2
p7: enable virtual memory and implement the page fault handler
p8: go to user mode by loading a ELF file and switch to it using "iret" insturction (previlige level, user stack, kernel stack)
p9: implement 14 system calls which are interfaces user program use to request the kernel to do certain things for it
pz: self-assessment