---
This page is the architectural overview of FlashOS: how the boot path,
memory layout, scheduler, syscalls, IRQ handling, tracing, and the
test harness fit together. Module names below refer to actual files
in the repository.
## Contents
1. [Source layout](#1-source-layout)
2. [Boot path](#2-boot-path)
3. [Memory management](#3-memory-management)
4. [Process management & scheduling](#4-process-management--scheduling)
5. [Syscalls & exceptions](#5-syscalls--exceptions)
6. [Kernel symbol table](#6-kernel-symbol-table-ksyms)
7. [Tracing](#7-tracing)
8. [Testing](#8-testing)
9. [Build artefacts](#9-build-artefacts)
## 1. Source layout
```text
src/ Kernel core (Zig + AArch64 assembly)
start.zig Build root: comptime-imports every kernel module
kernel.flash kernel_main + bring-up
boot.S _start, EL3→EL1, MMU bring-up, jump to high VAs
entry.S Exception vector table + syscall dispatch
utils.S, mm.S Assembly helpers
sched.S, irq.S Context switch + IRQ enable/disable
generic_timer.S CNTP system register helpers
symbol_area.S Generated kernel symbol table (see §6)
asm_defs.inc Bridge header — pulls in board_asm_defs.inc
asm_defs_common.inc Shared assembler-only macros (board-independent)
board.flash Comptime alias: build_options.board → board/