Projects
- Projects will be given to have hand-on experience on the learned topics
and to experiment with a real OS. You will learn:
- Examining and understanding the code of a real OS implementation.
- Adding modules end enhancements to a real OS.
- Running, testing and debugging a real OS with your added code.
- The projects will be done using C programming language. Since
you learn C++ in CS 201 and CS202 courses and since C is practically a
subset of C++, you should not have any problems in writing programs in C.
- The projects will be done in groups.
- The projects will be about implementing a real OS for x86 hardware. We
will give you a non-complete experimental OS,
GeekOS, and you will complete
that OS to have functionality like processes and threads, inter-process
communication, process synchronization, virtual memory, etc.
- GeekOS is designed to run x86 hardware. However, you can also run it on
x86 emulator Bochs.
The advantage with running and testing an OS over an emulated hardware
is that you don't have to reboot your machine every time you make a mistake
and your running program crashes the underlying hardware emulator.
- GeekOS is developed in Unix environment and cross-compiled for x86
machines. You can also develop it in Windows using a Unix-environment-emulator
CYGWIN.
- Approximate project timeline will be as follows:
| Project |
Assignment
date |
Due date |
| Project 1 |
February 24,
2003 |
March 10,
2003 |
| Project 2 |
|
|
| Project 3 |
|
|
| Project 4 |
|
|
| Project 5 |
|
|
| Project 6 |
may or may
not be given |
|
- You are recommended to follow the C coding style described
here.
- Late Policy: No projects will be accepted after the deadline. This is a
sharp rule.
- Important Notice: Projects will require substantial amount of work
and dedication. You should consider this point in adjusting your course
schedule and planning your time. Project are very important and if you can not
complete them, there is a chance that you can fail in this course.
Please send any comment or correction on this
page to Ibrahim Korpeoglu.