ScaraOS is a 32-bit, multiboot-compliant, monolithic OS kernel. It has the beginnings of a paged VM system and VFS. It supports PCI, DMA, AT floppies (read only), EXT2, and can do all the low-level stuff expected of an OS kernel (program the PIC, handle interrupts, control the timer, etc.). It was written primarily to learn OS fundamentals. It boots using any multiboot bootloader, and it has been tested with grub on qemu and KVM. Bootable floppy images are available.
|Tags||Operating System Kernels|
Release Notes: This release implements a protected userspace environment and full context switching between user and kernel space. It implements and uses semaphores to correctly protect kernel data structures. It implements open/close/read/write system calls. It includes a /bin/cat userspace tool that can display the README file from the floppy image. Numerous other errors were fixed in VFS and core x86 code.
Release Notes: This release implements Inode cache and pagecache. It fixes building on x86_64. Register/stack dump on all unhandled exceptions. Bogus save/restore of segment selectors in interrupt paths has been removed. An oops on schedule after exit() has been fixed. Demand loading of ELF binaries from pagecache. Fixes for a number of inode refcounting bugs exposed by adding inode cache. An option to poison all pages in the buddy system. More terse build output.
Release Notes: Many fixes were made to the scheduler; pre-emptive multi-tasking now works as expected. The scheduler no longer allocates timeslices to an idle task when there's work to do. The system call layer and exit syscall were implemented. Numberous bugs were fixed in the EXT2 filesystem driver and namei() was correctly implemented. pread() was implemented for regular files. The build system was overhauled, so dependency checks are now correct. Work on the exec() system call was started. Other bugs too numerous to mention were fixed.