Back to the emulator

OS-dev teaching guide

Learn operating-system internals by tracing a small working kernel.

SimpleOS is intentionally small enough to read but complete enough to show the core ideas: boot, memory, processes, syscalls, pipes, signals, a filesystem, and a shell. The browser demo makes the first run zero-setup; the repository keeps the real ISO and QEMU path available for deeper work.

CPU

Architecture

C and x86 assembly, GRUB boot, ring 0 to ring 3, and 23 syscalls.

RUN

Try it

Boot the live ISO in the browser and run shell commands without a toolchain.

SRC

Read it

Follow each subsystem from the README into the exact source files.

Suggested reading path

01

Boot flow

src/arch/i386/boot.s, linker.ld, boot/grub/grub.cfg

Trace how GRUB transfers control, the stack is prepared, and kernel_main starts.

02

Memory

src/mm/pmm.c, src/mm/vmm.c, src/mm/kmalloc.c

Study physical allocation, paging, copy-on-write fork, and the kernel heap.

03

Processes

src/kernel/process.c, src/kernel/scheduler.c

Follow PCB lifecycle, preemptive round-robin scheduling, context switching, and user processes.

04

Syscalls

src/kernel/syscall.c, userspace/ulib.h

Map int 0x80 dispatch to user-space wrappers and shell-visible behavior.

05

Shell and filesystem

userspace/shell.c, src/fs/fs.c

Inspect built-ins, pipes, redirection, job control, and the RAM filesystem.

Browser demo commands

helppslsls /binecho hello | wccat /bin/hello