# dheerajdamala/my_os architecture

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

- Interactive diagram: https://gitdiagram.com/dheerajdamala/my_os
- Repository: https://github.com/dheerajdamala/my_os

## Overview

SentinelOS is a small 32-bit x86 kernel MVP. Its runtime starts at the Multiboot entry point, enters kernel initialization, configures foundational services, then creates threads that exchange mailbox messages while timer-driven preemption and scheduler yields switch execution. The graph also preserves the documented memory-management and telemetry capabilities. Edges are limited to relationships shown in the README or sampled source; unsampled implementation details are not inferred.

Main entry points: [`src/kernel/kernel.c`](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/kernel.c) (Kernel init and demo threads), [`src/kernel/scheduler.c`](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/scheduler.c) (Thread scheduler), [`src/kernel/idt.c`](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/idt.c) (IDT and interrupt dispatch), [`src/kernel/ktf.c`](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/ktf.c) (Kernel telemetry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Startup and kernel"]
  node_boot["Boot entry<br/>[boot.asm]"]
  node_kernel["Kernel init and demo threads<br/>[kernel.c]"]
end

subgraph group_hardware["CPU and interrupts"]
  node_gdt["GDT setup<br/>[gdt.c]"]
  node_idt["IDT and interrupt dispatch<br/>[idt.c]"]
  node_interrupt_stubs["Interrupt stubs<br/>[interrupt.asm]"]
  node_timer["PIT timer<br/>[timer.c]"]
end

subgraph group_services["Kernel services"]
  node_memory["Physical and heap memory<br/>[memory.c]"]
  node_scheduler["Thread scheduler<br/>[scheduler.c]"]
  node_context_switch["Context switching<br/>[switch.asm]"]
  node_ipc["Mailbox IPC<br/>[ipc.c]"]
end

subgraph group_observability["Output and telemetry"]
  node_ktf["Kernel telemetry<br/>[ktf.c]"]
  node_serial["Serial driver<br/>[serial.c]"]
end

node_multiboot(("Multiboot loader"))

node_multiboot -->|"loads entry"| node_boot
node_boot -->|"enters kernel"| node_kernel
node_kernel -->|"initializes"| node_serial
node_kernel -->|"initializes"| node_gdt
node_kernel -->|"initializes"| node_idt
node_kernel -->|"configures"| node_timer
node_kernel -->|"initializes"| node_ktf
node_kernel -->|"initializes"| node_memory
node_kernel -->|"initializes"| node_scheduler
node_kernel -->|"initializes"| node_ipc
node_kernel -->|"creates threads"| node_scheduler
node_kernel -->|"starts scheduling"| node_scheduler
node_kernel -->|"thread code sends and receives"| node_ipc
node_idt -->|"registers handlers"| node_interrupt_stubs
node_scheduler -->|"allocates stacks"| node_memory
node_scheduler -->|"logs events"| node_ktf
node_scheduler -->|"switches context"| node_context_switch
node_timer -->|"drives preemption"| node_scheduler
node_ktf -->|"logs telemetry"| node_serial
node_idt -->|"reports exceptions"| node_serial

click node_boot "https://github.com/dheerajdamala/my_os/blob/main/src/boot/boot.asm"
click node_kernel "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/kernel.c"
click node_gdt "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/gdt.c"
click node_idt "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/idt.c"
click node_interrupt_stubs "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/interrupt.asm"
click node_timer "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/timer.c"
click node_memory "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/memory.c"
click node_scheduler "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/scheduler.c"
click node_context_switch "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/switch.asm"
click node_ipc "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/ipc.c"
click node_ktf "https://github.com/dheerajdamala/my_os/blob/main/src/kernel/ktf.c"
click node_serial "https://github.com/dheerajdamala/my_os/blob/main/src/drivers/serial.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_boot,node_kernel toneBlue
class node_gdt,node_idt,node_interrupt_stubs,node_timer toneAmber
class node_memory,node_scheduler,node_context_switch,node_ipc toneMint
class node_ktf,node_serial toneRose
class node_multiboot toneIndigo
```

## Components

### Startup and kernel

- [Boot entry](https://github.com/dheerajdamala/my_os/blob/main/src/boot/boot.asm): `src/boot/boot.asm`
- [Kernel init and demo threads](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/kernel.c): `src/kernel/kernel.c`

### CPU and interrupts

- [GDT setup](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/gdt.c): `src/kernel/gdt.c`
- [IDT and interrupt dispatch](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/idt.c): `src/kernel/idt.c`
- [Interrupt stubs](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/interrupt.asm): `src/kernel/interrupt.asm`
- [PIT timer](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/timer.c): `src/kernel/timer.c`

### Kernel services

- [Physical and heap memory](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/memory.c): `src/kernel/memory.c`
- [Thread scheduler](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/scheduler.c): `src/kernel/scheduler.c`
- [Context switching](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/switch.asm): `src/kernel/switch.asm`
- [Mailbox IPC](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/ipc.c): `src/kernel/ipc.c`

### Output and telemetry

- [Kernel telemetry](https://github.com/dheerajdamala/my_os/blob/main/src/kernel/ktf.c): `src/kernel/ktf.c`
- [Serial driver](https://github.com/dheerajdamala/my_os/blob/main/src/drivers/serial.c): `src/drivers/serial.c`

### Other components

- **Multiboot loader**

## Connections

- Multiboot loader → Boot entry: loads entry (evidence: `README.md`)
- Boot entry → Kernel init and demo threads: enters kernel (evidence: `README.md`)
- Kernel init and demo threads → Serial driver: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → GDT setup: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → IDT and interrupt dispatch: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → PIT timer: configures (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Kernel telemetry: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Physical and heap memory: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Thread scheduler: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Mailbox IPC: initializes (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Thread scheduler: creates threads (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Thread scheduler: starts scheduling (evidence: `src/kernel/kernel.c`)
- Kernel init and demo threads → Mailbox IPC: thread code sends and receives (evidence: `src/kernel/kernel.c`)
- IDT and interrupt dispatch → Interrupt stubs: registers handlers (evidence: `src/kernel/idt.c`)
- Thread scheduler → Physical and heap memory: allocates stacks (evidence: `src/kernel/scheduler.c`)
- Thread scheduler → Kernel telemetry: logs events (evidence: `src/kernel/scheduler.c`)
- Thread scheduler → Context switching: switches context (evidence: `src/kernel/scheduler.c`)
- PIT timer → Thread scheduler: drives preemption (evidence: `README.md`)
- Kernel telemetry → Serial driver: logs telemetry (evidence: `README.md`)
- IDT and interrupt dispatch → Serial driver: reports exceptions (evidence: `src/kernel/idt.c`)
