CPSC 410 / CPSC 611 -- Operating Systems: Projects

CPSC 410 / CPSC 611 -- Operating Systems: Projects


This page contains information about the projects.


Presentations about the Project Environment

Topic Slides
Introduction
slides
The Boot Process
Compiling and Linking a Kernel
Issues when Building a Kernel in C++
Low-Level Programming
slides
Exceptions
Interrupts
Simple Devices

Handing in Projects

You are to submit your projects through the department's turn-in system. Proceed as follows:


Grading Criteria:


Turn in suggestions for Machine Problems:

Points to remember throughout the development of solutions to the machine problems:

Mention "CSCE 410" in the subject while communicating with the TA. All course related communication will be sent to your CS email address. Please check it regularly or forward it to another email that you check regularly.


Infrastructure for Machine Problems

Check with the class handouts (slides) for details about the infrastructure needed for the machine problems (Bochs emulator, compiler, etc.).

Feel free to check out the walkthrough for the infrastructure setup that Jared Brandhorst kindly made available!

The following describes the installation of the project infrastructure in a Windows environment. We have tested it on Windows XP and Windows 7. These instructions describe the installation of the software in the CSE lab machines (for example in Reed McDonald 111J). They can be followed with minor modifications for installation on any other Windows machine (for example, replace the references to the H: drive with the appropriate location).

The suport files for the machine problems can be found in this zip file. This archive containes four files:

Note: Depending on the particular installation of Bochs on your system, you may need to specify the complete path of the image file for your floopy disk in file bochs.bxrc for Bochs to find the floppy "device". Edit the file bochsrc.bxrc and modify the definition for floppy A to be the absolute path of the .IMG file.


Machine Problem 1 (Due Date: Check CSNET)

This first machine problem is easy and should get you used to the machine problem environment, such as the Bochs emulator, the compilers, and so on.

The handout for MP1 is available here, and the source code that you need to work with is contained in this ZIP file.

To set up the environment for this MP on your machine, create a directory of your choice, copy and unzip the MP1_Sources.ZIP to the new directory. This archive contains also all the Bochs environment file needed to run the kernel in the Bochs emulator. Alternatively, you can copy and unzip the file BaseBochsEnv.zip (see paragraph about Bochs Environment above) to that directory as well.You are now ready to go.


Machine Problem 2 (Due Date: Check CSNET)

In the second machine problem you start working on the virtual memory management of your operating system. You will set up the paging system and initialize the page table. The code for this MP can be found here. You will receive the handout associated with this MP by e-mail.


Machine Problem 3 (Due Date: Check CSNET)

In the third machine problem you will further develop the memory manager developed in MP2 to have page tables in virtual memory. In addition, you will write a simple virtual memory allocator and link it up to the new/delete operators in C++. With dynamic memory available, life will be much simpler! The code for this MP can be found here. You will receive the handout associated with this MP by e-mail.


Machine Problem 4 (Due Date: Check CSNET)

In the fourth machine problem you will work with the low-level threading system of your operating system. You will implement a scheduler and work on the interaction between low-level threads and your scheduler subsystem. The code for this MP can be found here. You will receive the handout associated with this MP by e-mail.


Machine Problem 5 (Due Date: Check CSNET)

In the fifth machine problem you improve a simple device driver for a disk to support asynchronous operations and (optionally) mirroring. In addition, you will implement a simple file system on top of the disk device. The code for this MP can be found here.