Weenix
Semester-long project completed as a half-credit addition to Brown CS 167 - Operating Systems (known as CS 169).
Weenix is modeled after the early Unix kernel, can run arbitrary C programs with dynamic linking, and required student implementation of:
- Single-processor kernel threads
- A tty line discipline
- Drivers for /dev/zero and /dev/null
- Virtual file system - a kernel-facing API to abstract system call implementations away from the particular file system implementation
- The System V File System (S5FS)
- A virtual memory system that handles pagefaults with permissions checking and maintains shadow memory objects for private mappings
-
The following system calls:
- fork()
- mmap() and munmap()
- brk() and sbrk()
- open() and close()
- dup() and dup2()
- read() and write()
- lseek()
- mknod()
- link() and unlink()
- mkdir() and rmdir()
- rename()
- stat() and getdents()
- chdir()
- waitpid() and getpid()
Code for this project is not public on GitHub, but can be made available on request.