povOS is an operating system for the x86_64 architecture.
- Author: Giovanni Santini
- Mail: giovanni.santini@proton.me
- License: MIT
- custom bootloader
- custom standard library
- drivers:
- PS/2
- UART
- VGA
- PIC (Programmable Interrupt Controller)
- PIT (Programmable Interrupt Timer)
- HPET (High Precision Event Timer)
- Keyboard
- ACPI
- PCI
- kernel:
- IDT (Interrupt Descriptor Tabe) and ISR (Interrupt Service Routines)
- input (supports multiple keyboard layouts)
- textbuffer
- framebuffer
- console
- tty
- time tracking
- memory management
- physical memory management
- paging
- virtual memory manager
- free-list based memory allocator
- heap
- multitasking: work in progress
The implementation is clean and readable, headers are documentation.
Compile and run with qemu:
make -B && make qemu
Compile and run with bochs:
make -B && make bochs
Run inside GDB (with debug info):
./scripts/debug x86_64
The BIOS boot sequence for x86_64 looks like this:
- CPU starts executing in 16-bit real mode, with BIOS access
- Use the bios to load the rest of the bootloader and kernel
- Setup and load the GDT with a flat memory layout
- Go to protected mode
- Enable the A20 line
- Setup GDT again
- Setup the page table
- Enable long mode
- Call the main routine
