# hongfeiyang/aos architecture

> Architecture diagram of the GitHub repository hongfeiyang/aos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hongfeiyang/aos
- Repository: https://github.com/hongfeiyang/aos

## Overview

AOS is an event-driven seL4 root server that serves processes through syscalls, faults, and interrupts. Its principal workflow dispatches client requests to filesystem, process, timer, or virtual-memory handlers; operations that must wait retain reply capabilities and resume through continuations. The README documents paging, eviction, swap, VFS backends, and timers as major capabilities. The supplied tree and excerpts do not include most AOS implementation files, so those links reflect README-documented behavior rather than inspected call sites; uncertain wiring is omitted.

Main entry points: [`projects/aos/sos/src/utils/continuation.c`](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/utils/continuation.c) (Continuations), [`projects/aos/sos/src/main.c`](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/main.c) (Receive Loop), [`projects/aos/sos/src/dispatch.c`](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/dispatch.c) (Syscall Dispatch), [`projects/aos/sos/src/vm/pager.c`](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/pager.c) (Demand Pager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Event Runtime"]
  node_event_loop["Receive Loop<br/>[main.c]"]
  node_dispatch["Syscall Dispatch<br/>[dispatch.c]"]
  node_continuations["Continuations<br/>[continuation.c]"]
  node_reply_manager["Reply Manager<br/>[reply_manager.c]"]
end

subgraph group_process["Processes"]
  node_sys_proc["Process Calls<br/>[syscall_proc.c]"]
  node_proc["Process Manager<br/>[proc.c]"]
end

subgraph group_filesystem["File System"]
  node_sys_fs["Filesystem Calls<br/>[syscall_fs.c]"]
  node_vfs["Virtual FS<br/>[vfs.c]"]
  node_console["Console Backend<br/>[console_backend.c]"]
  node_nfs["NFS Backend<br/>[nfs_backend.c]"]
end

subgraph group_memory["Memory and Time"]
  node_vm_fault["VM Fault Handler<br/>[vmfault.c]"]
  node_pager["Demand Pager<br/>[pager.c]"]
  node_page_ops["Page Operations<br/>[page_ops.c]"]
  node_eviction["Frame Eviction<br/>[eviction.c]"]
  node_address_space["Address Spaces<br/>[addrspace.c]"]
  node_virtual_memory["Virtual Memory<br/>[vmem.c]"]
  node_swap[("Swap")]
  node_timer_calls["Timer Calls<br/>[syscall_timer.c]"]
  node_clock["Timeout Queue<br/>[clock.c]"]
end

node_client(("User Process"))
node_nfs_service["NFS Service"]
node_timer_hw["Hardware Timer"]

node_client -->|"sends IPC"| node_event_loop
node_event_loop -->|"dispatches syscalls"| node_dispatch
node_event_loop -->|"dispatches VM faults"| node_vm_fault
node_dispatch -->|"routes filesystem calls"| node_sys_fs
node_dispatch -->|"routes process calls"| node_sys_proc
node_dispatch -->|"routes timer calls"| node_timer_calls
node_sys_fs -->|"uses VFS"| node_vfs
node_vfs -->|"dispatches backend ops"| node_console
node_vfs -->|"dispatches backend ops"| node_nfs
node_nfs -->|"performs NFS I/O"| node_nfs_service
node_sys_proc -->|"manages processes"| node_proc
node_vm_fault -->|"loads faulted pages"| node_pager
node_pager -->|"performs page I/O"| node_page_ops
node_pager -->|"requests reclamation"| node_eviction
node_page_ops -->|"reads and writes pages"| node_swap
node_eviction -->|"writes reclaimed pages"| node_swap
node_pager -->|"consults regions"| node_address_space
node_address_space -->|"tracks mappings"| node_virtual_memory
node_timer_calls -->|"schedules timeouts"| node_clock
node_clock -->|"programs deadline"| node_timer_hw
node_event_loop -->|"resumes callbacks"| node_continuations
node_sys_fs -->|"defers I/O work"| node_continuations
node_sys_proc -->|"defers process work"| node_continuations
node_timer_calls -->|"defers sleeping calls"| node_continuations
node_continuations -->|"uses retained replies"| node_reply_manager
node_reply_manager -->|"resumes caller"| node_client

click node_event_loop "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/main.c"
click node_dispatch "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/dispatch.c"
click node_continuations "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/utils/continuation.c"
click node_reply_manager "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/reply_manager.c"
click node_sys_fs "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/syscalls/syscall_fs.c"
click node_vfs "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/fs/vfs.c"
click node_console "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/fs/backends/console/console_backend.c"
click node_nfs "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/fs/backends/nfs/nfs_backend.c"
click node_sys_proc "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/syscalls/syscall_proc.c"
click node_proc "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/proc/proc.c"
click node_vm_fault "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/vmfault.c"
click node_pager "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/pager.c"
click node_page_ops "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/page_ops.c"
click node_eviction "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/eviction.c"
click node_address_space "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/addrspace.c"
click node_virtual_memory "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/vmem.c"
click node_swap "https://github.com/hongfeiyang/aos/tree/main/projects/aos/sos/src/vm/swap"
click node_timer_calls "https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/syscalls/syscall_timer.c"
click node_clock "https://github.com/hongfeiyang/aos/blob/main/projects/aos/libclock/src/clock.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_event_loop,node_dispatch,node_continuations,node_reply_manager,node_client toneBlue
class node_sys_proc,node_proc toneAmber
class node_sys_fs,node_vfs,node_console,node_nfs toneMint
class node_vm_fault,node_pager,node_page_ops,node_eviction,node_address_space,node_virtual_memory,node_swap,node_timer_calls,node_clock toneRose
class node_nfs_service,node_timer_hw toneIndigo
```

## Components

### Event Runtime

- [Receive Loop](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/main.c): `projects/aos/sos/src/main.c`
- [Syscall Dispatch](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/dispatch.c): `projects/aos/sos/src/dispatch.c`
- [Continuations](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/utils/continuation.c): `projects/aos/sos/src/utils/continuation.c`
- [Reply Manager](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/reply_manager.c): `projects/aos/sos/src/reply_manager.c`

### Processes

- [Process Calls](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/syscalls/syscall_proc.c): `projects/aos/sos/src/syscalls/syscall_proc.c`
- [Process Manager](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/proc/proc.c): `projects/aos/sos/src/proc/proc.c`

### File System

- [Filesystem Calls](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/syscalls/syscall_fs.c): `projects/aos/sos/src/syscalls/syscall_fs.c`
- [Virtual FS](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/fs/vfs.c): `projects/aos/sos/src/fs/vfs.c`
- [Console Backend](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/fs/backends/console/console_backend.c): `projects/aos/sos/src/fs/backends/console/console_backend.c`
- [NFS Backend](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/fs/backends/nfs/nfs_backend.c): `projects/aos/sos/src/fs/backends/nfs/nfs_backend.c`

### Memory and Time

- [VM Fault Handler](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/vmfault.c): `projects/aos/sos/src/vm/vmfault.c`
- [Demand Pager](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/pager.c): `projects/aos/sos/src/vm/pager.c`
- [Page Operations](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/page_ops.c): `projects/aos/sos/src/vm/page_ops.c`
- [Frame Eviction](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/eviction.c): `projects/aos/sos/src/vm/eviction.c`
- [Address Spaces](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/addrspace.c): `projects/aos/sos/src/vm/addrspace.c`
- [Virtual Memory](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/vm/vmem.c): `projects/aos/sos/src/vm/vmem.c`
- [Swap](https://github.com/hongfeiyang/aos/tree/main/projects/aos/sos/src/vm/swap): `projects/aos/sos/src/vm/swap`
- [Timer Calls](https://github.com/hongfeiyang/aos/blob/main/projects/aos/sos/src/syscalls/syscall_timer.c): `projects/aos/sos/src/syscalls/syscall_timer.c`
- [Timeout Queue](https://github.com/hongfeiyang/aos/blob/main/projects/aos/libclock/src/clock.c): `projects/aos/libclock/src/clock.c`

### Other components

- **User Process**
- **NFS Service**
- **Hardware Timer**

## Connections

- User Process → Receive Loop: sends IPC
- Receive Loop → Syscall Dispatch: dispatches syscalls
- Receive Loop → VM Fault Handler: dispatches VM faults
- Syscall Dispatch → Filesystem Calls: routes filesystem calls
- Syscall Dispatch → Process Calls: routes process calls
- Syscall Dispatch → Timer Calls: routes timer calls
- Filesystem Calls → Virtual FS: uses VFS
- Virtual FS → Console Backend: dispatches backend ops
- Virtual FS → NFS Backend: dispatches backend ops
- NFS Backend → NFS Service: performs NFS I/O
- Process Calls → Process Manager: manages processes
- VM Fault Handler → Demand Pager: loads faulted pages
- Demand Pager → Page Operations: performs page I/O
- Demand Pager → Frame Eviction: requests reclamation
- Page Operations → Swap: reads and writes pages
- Frame Eviction → Swap: writes reclaimed pages
- Demand Pager → Address Spaces: consults regions
- Address Spaces → Virtual Memory: tracks mappings
- Timer Calls → Timeout Queue: schedules timeouts
- Timeout Queue → Hardware Timer: programs deadline
- Receive Loop → Continuations: resumes callbacks
- Filesystem Calls → Continuations: defers I/O work
- Process Calls → Continuations: defers process work
- Timer Calls → Continuations: defers sleeping calls
- Continuations → Reply Manager: uses retained replies
- Reply Manager → User Process: resumes caller
