Kernel Implementation

This page will list each of the features tasks you are expected to add to your kernel implementation.

  Printing Functions (Assigned January 27, 2022)

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.

  Printing Usable Memory (Assigned February 1, 2022)

We will discuss the memmap and hhdm structure tags provided by the bootloader (see the [stivale2 boot protocol documentation](https://github.

  Catch System Exceptions (Assigned February 3, 2022)

This is the first implementation task related to handling interrupts.

  Handling Keyboard Interrupts (Assigned February 8, 2022)

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.

  Keyboard Input Buffer (Assigned February 10, 2022)

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.

  Paging (phase 1) (Assigned February 15, 2022)

We’re going to shift gears a bit and move away from handling keyboard input.

  Paging (phase 2) (Assigned February 17, 2022)

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.

  System Calls (Assigned February 24, 2022)

One of the main pieces we need to run a program on top of our kernel is a system call interface.

  Load an Executable (Assigned March 3, 2022)

Our next major implementation task is to load and run an executable.

  Standard Library (Assigned March 10, 2022)

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.

  Housekeeping Tasks (Assigned March 10, 2022)

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.

  Switching to User Mode (Assigned March 15, 2022)

We’ll spend some time in class today setting up our kernel so it can run the init program in user mode.

  Self-Evaluation and Implementation (Assigned April 5, 2022, Due April 19, 2022)

You will need to submit your final kernel implementation by email.