Blobfish OS -- A Taste of Building an Operating System
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.
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.