Skip to content

giovgiac/CassiOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

125 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CassiOS

A microkernel operating system targeting i386 (32-bit x86), written in C++ and assembly. Boots via GRUB using the Multiboot specification. Built from scratch with a custom modular standard library -- every component from the GDT to the IPC layer is hand-written.

Features

  • Microkernel architecture -- kernel provides IPC, scheduling, memory management, and interrupt routing; everything else runs as userspace services
  • Synchronous IPC -- message passing (send/receive/reply) and fire-and-forget notify between processes
  • Userspace drivers -- PS/2 keyboard, PS/2 mouse, VGA terminal, ATA PIO disk, all as separate services
  • Userspace services -- nameserver for service discovery, FAT32 filesystem with long filename support, interactive shell with 16 commands
  • Higher-half kernel mapped at 0xC0000000+ with per-process address spaces
  • Preemptive round-robin scheduler driven by PIT timer (~1000 Hz)
  • ELF32 loader for statically linked userspace binaries via GRUB multiboot modules
  • Syscall interface via int 0x80 (IPC, memory, process control, system info)
  • Physical memory manager, kernel heap with new/delete, paging
  • Persistent FAT32 filesystem -- 32 MiB disk image, on-demand FAT via LRU sector cache, directories, LFN, case-sensitive
  • Modular standard library -- 17 modules under libs/ (std:: namespace), from core types/mem/str to service clients (std::vga, std::vfs, std::kbd, etc.)
  • Two-tier test framework -- 247 kernel unit tests + 97 userspace integration tests, run headlessly via QEMU

Prerequisites

  • g++, as, ld (GNU toolchain with 32-bit support)
  • qemu-system-i386 (for running)
  • grub-mkrescue and xorriso (for building the bootable ISO)
  • dosfstools and mtools (for FAT32 disk image creation)

Build

make kernel    # compile and link the kernel binary
make run       # build and launch in QEMU with all services
make test      # build and run all tests (kernel + userspace)
make iso       # build a bootable ISO
make clean     # remove build artifacts

About

A 32-bit operating system for x86 processors.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors