ECS 150: Operating Systems and Systems Programming
From course description:
Basic concepts of operating systems and system programming. Processes and interprocess communication/synchronization; virtual memory, program loading and linking; file and I/O subsystems; utility programs. Study of a real operating system.
http://www.cs.ucdavis.edu/blog/ecs-150-operating-systems-system-programming/
This course consisted of 4 projects:
- Simple Shell
Requirements PDF- The shell must be able to execute applications, be able to setup pipes between executed applications, redirect standard input/output from/to files for the executed applications, and perform simple commands internally (cd, ls, pwd, ff, and exit).
- Virtual Machine Thread Scheduler
Requirements PDF- The virtual machine will load the “applications” from shared objects that implement the VMMain function. The virtual machine will need to support multiple user space preemptive threads.
- Virtual Machine Memory Pools and Mutex
Requirements PDF- Create, allocate, deallocate, query and delete memory pools. Allow for dynamic memory allocation from specified pools of memory; the stack space for each of the threads must be allocated from this memory pool. Implement Mutex creation, locking, unlocking, deletion.
- Virtual Machine File System
Requirements PDF- Mount and manipulate a FAT file system image. Implement the ability to create, read and write files that are in the root directory and to open and read the root directory.