Aster is my kernel, which I have been working on for the past ~2 months. It's probably my 3rd attempt at writing an OS, the first two being 2-3 years ago. I thought to revisit osdev after I have learned more stuff about computer science in the last years, mostly because low-level stuff never fails to spark my interest. I'm in my highschool final year so time is limited, as I'm also working as a dev in my free time. Here's what I have implemented so far:
- Kernel logging interface with log levels
- Flanterm, Serial, QEMU Debugcon
- GDT, IDT shared between all CPUs
- PIC disabling
- Interrupt handlers
- PMM, based on a bitmap allocator
- VMM, really simple, just maps and unmaps pages or ranges
- Kernel heap based on a first-fit allocator, for general purpose allocations
- ACPI tables parsing (might port uACPI though)
- MADT parsing
- Timer interface which uses the HPET timer if available, otherwise it fallbacks to the PIT
- LAPIC initialization with support for xAPIC and x2APIC & NMI routing as per MADT
- LAPIC timer calibration with HPET or PIT, support for one-shot and periodic modes (no TSC-deadline for now)
- IOAPIC initialization with all external interrupts handling done by the BSP (no IRQ balancing for now)
- APs initialization and per-CPU data
- IPIs
The objective is to be able to run bash, gcc and most software which is intended to run on UNIX-likes.
The name „Aster” comes from the name of the aster flower.
Source code at https://github.com/Aster-OS/aster. Unfortunately there isn't a README yet.




so I'll implement this and be done with it
so I'm running low on (free) time



