Projects
These is a rough idea of the projects that I am envisioning for 2010 and are all subject to change - it will give you an idea of the direction we are going.
For the latest version of a project - please refer to the schedule page.
When I start writing up an assignment or project you may be able to see 'pre-releases' of an upcoming assignment/project, however at midnight of the assignment date make sure that you have the latest version (and refresh the cache of your browser) incase there are modifications and chances of the requirements since you last checked.
Project 1 : Interface: YOSH: (Y)our (O)awn (S)imple S(H)ell. Write a simple shell as a warm up to C and UNIX programming. You will also get more intuition of processes, process control signals and pipes.
Project 2 : Set-up: Setting up MINIX / VMWare and a gentle start to OS kernel hacking. This project is envisioned to be 1/3 effort of a regular project.
Project 3 : Processes : A Chatty program - so that you familiarize yourself with IPC and socket programming. This one will be an individual project and does not require MINIX. As an alternative I am considering a project implementing a few system calls on MINIX - (primarily process control and monitoring).
Project 4 : Scheduling: Implement scheduling mechanisms in MINIX - specifically a multilevel feedback scheduler and a lottery scheduler.
Project 5 : Synchronization : Implement a semaphore service for MINIX, this includes implementing a system's call. This is 1.5 effort of a regular project and two of the three tasks for the project can be developed independently.
Project 6 : Memory: Implement a Memory system in MINIX that implement various allocation strategies: first fit, best fit, and random fit.
Project 7 : File: File System in MINIX - probably a variant of the standard UNIX file system, with direct and indirect blocks.
Optional (Bonus) : Add 20 points to any project or earn 3 grace days.