Book Description
This book helps you gain the foundational knowledge required to write an operating system from scratch. Hence the title, 0 to 1.
After completing this book, at the very least you will learn:
- How to write an operating system from scratch by reading hardware datasheets. In the real world, it works like that. You won't be able to consult Google for a quick answer.
- A big picture of how each layer of a computer is related to the other, from hardware to software.
- Write code independently. It's pointless to copy and paste code. Real learning happens when you solve problems on your own. Some examples are given to kick start, but most problems are yours to conquer. However, the solutions are available online for you to examine after giving it a good try.
- Linux as a development environment and how to use common tools for low-level programming.
- x86 assembly in-depth.
- How a program is structured so that an operating system can run.
- How to debug a program running directly on hardware with gdb and QEMU.
- Linking and loading on bare metal x86_64, with pure C. No standard library. No runtime overhead.
This open book is licensed under a Creative Commons License (CC BY). You can download Operating Systems: From 0 to 1 ebook for free in PDF format (6.1 MB).
Table of Contents
Chapter 1
Domain documents
Chapter 2
From hardware to software: Layers of abstraction
Chapter 3
Computer Architecture
Chapter 4
x86 Assembly and C
Chapter 5
The Anatomy of a Program
Chapter 6
Runtime inspection and debug
Chapter 7
Bootloader
Chapter 8
Linking and loading on bare metal
Chapter 9
x86 Descriptors
Chapter 10
Process
Chapter 11
Interrupt
Chapter 12
Memory management
Chapter 13
File System