Blobfish OS -- A Taste of Building an Operating System

Mar 2023

Thanks to the CPSC436A OS Design and Implementation course at UBC and teammates, I had a wonderful semester building an Operating System. Our project Blobfish is based on BarrelFish OS, a microkernel Operating System. To be honest, BlobFish is far from being a complete OS, but we did work our way through core functionalities like memory management, process control, message-passing and so on, which gave us a great sense of accomplishment.

Components

Since it is a school project, I cannot put too much detail here without exposing course specific content. Therefore, I will just include a brief description of each component:

  • Physical memory manager:
    • We have built a linked-list based physical memory allocator.
  • Virtual memory paging:
    • A typical radix-tree-like virtual memory mapping system. We also made it lazy, which means pages of physical memory are allocated only when the virtual memory it mapped to is used.
  • Process management:
    • Blobfish maps elf file into memory and spawn processes.
  • Message passing:
    • To communicate across cores, we developed a ring buffer backed shared-memory for simple message passing.
  • File System:
    • This is my individual project and is installed to Blobfish as a service. The file system is FAT32 without longname support.