This page will list each of the features tasks you are expected to add to your kernel implementation.
The starting kernel code you are provided will includes logic to find a terminal_write function, which allows you to print characters to the screen after your kernel boots.
We will discuss the memmap and hhdm structure tags provided by the bootloader (see the [stivale2 boot protocol documentation](https://github.
This is the first implementation task related to handling interrupts.
For this implementation task you will set up the programmable interrupt controller (PIC) to deliver interrupts to your kernel whenever a keyboard key is pressed or released.
Now that you have code to handle key press events (you finished the last implementation task, right?) we need to create an interface that allows programs to wait for keyboard input.
We’re going to shift gears a bit and move away from handling keyboard input.
Now that you have implemented address translation to traverse existing page table structures, we’re going to add support for mapping new memory into an address space by changing the page table structure.
One of the main pieces we need to run a program on top of our kernel is a system call interface.
Our next major implementation task is to load and run an executable.
Now that our kernel can load and run programs, we’re going to start thinking about the standard library functions required to support more interesting programs like a shell.
There are a few small housekeeping tasks we’ve avoided for a while, but we should now deal with them to make some of our later implementation work go smoothly.
We’ll spend some time in class today setting up our kernel so it can run the init program in user mode.
You will need to submit your final kernel implementation by email.