This was a project developed during my exchange in Ensimag which I find particularly interesting: we had to build an Operating System from scratch for an x86 architecture.


Of course, we didn’t need to include every feature a modern Linux distribution might have. In fact, our OS is very simple:

  • VGA text UI, with a single TTY for a single user.
  • No files (in fact, the entire thing runs on 256MiB of RAM).
  • A very primitive shell and not that many syscalls.

However, the reason I like it is that we had the opportunity to really go low on the stack and implement (mostly using C, sometimes resorting to x86/IA-32 assembly):

  • Drivers for periphals such as the 8259 PIC, the 8253/8254 PIT and PS/2 keyboard and mouse cursor.
  • Multiple process trees time-sharing a single CPU, with a priority-based preemptive scheduler (although the kernel itself is not preemptive).
  • Inter-process communication and synchronization mechanisms: message queues and semaphores.
  • Kernel and user-space separation, including dynamic virtual memory through paging, protection mechanisms and syscalls.
  • Init daemon and a system shell which allows users to launch programs either in the foreground or in the background.

You can read more about the project and check out its GPL’ed source. Also, shoutout to the OSDev wiki and community, which helped quite a lot.