GatOS Kernel v1.7.0
The GatOS Kernel has just been updated from 1.6.0 to 1.7.0, by merging branch "memory". Due to the sheer scale and range of changes, incremental version 1.6.5 has been omitted.
Several improvements are introduced in this version:
- Added optional
CFLAGS_FASTto the Makefile for generating very fast kernel images. - Introduced new helper functions across paging, serial, VGA I/O, misc, and debug modules for improved modularity and maintainability.
- Implemented a Physical Memory Manager (PMM) based on a buddy allocator to reduce fragmentation and improve allocation performance.
- Extended the PMM to support up to 16 TB of memory and added header validation for integrity checks, relying on the physmap to access physical frames.
- Introduced a fully featured Virtual Memory Manager (VMM) with dynamic mapping, resizing, and robust page table management.
- Integrated a Slab Allocator for efficient small-object allocations and tighter control over kernel heap usage.
- Implemented a new kernel heap manager with multi-arena support, non-contiguous regions, and boundary tag coalescing for efficient free block merging.
- Added extensive memory integrity helpers in all allocators (PMM, VMM, Slab, Heap), including red zones, magic values, free list checks, and statistics.
- Refactored the serial subsystem to separate QEMU logs from internal logs for clearer runtime vs debug output.
- Overhauled debug logging, introducing
QEMU_GENERIC_LOG,QEMU_LOG, andLOGFfor consistent, distinct logging across modules. - Added kernel panic handlers and integrity checks for stable recovery and clear error reporting during critical failures.
- Introduced CPU feature detection and runtime enablement for PAE, NX, SSE, and AVX for improved hardware compatibility.
- Refactored the ACPI subsystem and other core components for clarity, consistent naming, and easier future expansion.
- Enhanced the build system, boot flow, and ISO generation process, improving output readability and version labeling.
- Each build now generates an ISO based on the current kernel version defined in
kernel_main. - Introduced
PANIC_ASSERTfor critical kernel assertions. - When run in QEMU, GatOS now outputs a
debug.logcontaining internal debug logs. - MMIO region handling is now supported natively in the VMM.
- Moved several definitions between headers for clarity; all headers now use
#pragma once. - Implemented
kmalloc,krealloc,kcalloc, and userland equivalents for dynamic memory allocation.