This repository is a placeholder for Weenix Operating System which I, along with two other classmates, have implemented as part of the graduate level course, CSCI 402, which we have taken at USC (Spring 2020). The course instructor was Prof. Bill Cheng.
The goal of the course was to familiarise students with the internals of operating system starting from the abstractions of processes and threads and all the way upto virtual memory.
For more info about the course and instructor, see: http://merlot.usc.edu/william/usc/
- Abstraction of threads, processes, and mutex
- Context switching
- Interrupts
- Understanding the boot process of the kernel
- Reference counting in the file system
- System call wrapper
- Case study of S5FS (system V file system)
- Demand paging
- Virtual memory map and the address space representation of a process
- Copy on write mechanism and shadow objects
-
Memory allocation strategies
- First fit & Best fit (both of which suffer from external fragmentation)
- Buddy system (which is relatively new and chooses internal fragmentation as its design strategy)
- Slab allocation (for pre-defined storage requirements)
- Memory layout of a program (text, data, stack and heap sections)
- Write through and write back caches
- Benfits of log structured file system
- File system consistency/fault tolerance: Soft updates vs Shadow paging
- And much more...! (in private repository)
Note: The actual repository, which contains the source code, has been made private so as to honour the code of conduct of the University. It will only be available to potential employers who want to assess my capabilities in similar domains (and also who will agree not to share it with anyone else too). If you want to look at the code, email me at: [email protected]