What's Next?

Congratulations

You have implemented the core data structures of a real operating system:

  • Processes: PCB, state machine, fork, round-robin scheduler
  • Memory: virtual address parsing, page tables, slab allocator
  • File System: inodes, file descriptor tables, FAT chains
  • IPC: ring buffers, semaphores, signal dispatch tables
  • Syscalls: syscall table, sys_write

These are not abstractions — they are the actual patterns used in linux/sched.h, mm/slab.c, fs/inode.h, and kernel/signal.c.

Go Deeper

  • Read the kernel sourceelixir.bootlin.com lets you browse the Linux source online with cross-references. Start with include/linux/sched.h (task_struct) and mm/slab.c.
  • Write a kernel module — A kernel module is a C file you compile and load into a running kernel. The classic first module: a character device that returns "hello" when read.
  • Explore xv6 — MIT's teaching operating system, written in C for RISC-V. It implements everything you learned here in ~8,000 lines: github.com/mit-pdos/xv6-riscv.
  • Read Operating Systems: Three Easy Pieces — Free online OS textbook covering virtualization, concurrency, and persistence in depth: ostep.org.
  • Try the Linux kernel labslinux-kernel-labs.github.io has hands-on exercises for kernel development.

References

  • Linux Kernel Development by Robert Love — The best single-volume guide to the kernel internals.
  • Understanding the Linux Kernel by Bovet & Cesati — Deep dive into kernel mechanisms.
  • The Linux Kernel documentation — Official docs, including subsystem-specific guides.
← Previous