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:

  1. 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).
  2. 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.
  3. 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.
  4. 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.

Project 1: Simple Shell

Project 2: Virtual Machine Thread Scheduler

Project 3: Virtual Machine Memory Pools and Mutex

Project 4: Virtual Machine Filesystem