Each implementation must pass baseline milestone tests that provide core functions of your kernels. Working baseline implementation of all previous milestones is also needed for subsequent milestones as they extend existing implementation with new features.
For each milestone exists a set of extended features that you can implement to improve your knowledge and skills (and get a better grade too).
The table below summarizes all the optional features, the points roughly reflects complexity of each assignment (amount of added code is thus not the only metric taken into account). For most of the features exist automated tests but they will be checked manually too.
Some of the features are additive and require prior implementation of another
feature (for example, implementation of mutex_try_lock
requires working
implementation of mutexes and the point assigned reflex the amount of work
for adding single function to a working mutex implementation).
Milestone | Points | Feature |
---|---|---|
M01 | Dive into kernel | |
1 | Implementation of debug_dump_function |
|
M02 | Kernel heap management | |
4 | Implementation of kfree |
|
7 | kfree with coalescing of free blocks |
|
M03 | Threads and cooperative scheduler | |
7 | No leaks for thread_join and thread_kill (no automated tests) |
|
2 | Support for thread return values and parameters | |
M04 | Preemptive scheduler and synchronization | |
1 | Fair thread scheduling | |
4 | Support for mutexes (with passive waiting) | |
1 | Implementation of mutex_try_lock |
|
6 | Support for semaphores (with passive waiting) | |
1 | Implementation of sem_try_lock |
|
M05 | Frame allocator and virtual memory support | |
2 | Implementation of frame_free |
|
2 | Dynamically allocated bitmap of free frames | |
5 | Dynamically growing heap on top of frame allocator | |
6 | Up to 255 address spaces | |
9 | Up to 255 concurrently existing address spaces | |
7 | No limit on amount of existing address spaces | |
M06 | User process support | |
5 | Support for (userspace) printf |
|
5 | Buffering implementation of printf (no automated tests) |
|
7 | Support for procinfo system call |
|
4 | Support for userspace heap |
Everything must be submitted before the final deadline (mid January, see our calendar).
When a working baseline implementation is submitted before a running (soft) deadline (usually 3 weeks after milestone announcement), two points are added.
When the NSWI200 Midterm Survey is filled-in before deadline (November 14th), four points are added.
When the NSWI200 Christmas Survey is filled-in before deadline (Jan 9th), four points are added.