diff --git a/book.toml b/book.toml index db1b170..365976b 100644 --- a/book.toml +++ b/book.toml @@ -45,3 +45,7 @@ mathjax-support = true [output.html.playground] runnable = true editable = true + +[output.html.redirect] +"/ch02-03-implementing-the-bitfields-proc-macro.html" = "/ch02-05-implementing-the-bitfields-proc-macro.html" +"/ch03-00-printing-to-screen.html" = "/ch04-00-printing-to-screen.html" diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 4ef040c..39b8151 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -14,27 +14,30 @@ - [A Minimal Bootloader](./ch02-00-a-minimal-bootloader.md) - [Legacy Legacy Legacy [OS]](./ch02-01-legacy-legacy-legacy.md) - [Entering Protected Mode [OS]](./ch02-02-entering-protected-mode.md) - - [Implementing the Bitfields Proc-Macro [RUST]](./ch02-03-implementing-the-bitfields-proc-macro.md) - [What is Memory Paging? [OS]](./ch02-03-what-is-memory-paging.md) - [Booting the Kernel [OS]](./ch02-04-booting-the-kernel.md) - -- [Printing To Screen [OS]](./ch03-00-printing-to-screen.md) -- [Memory Management [OS]](./ch04-00-memory-management.md) - - [Memory Allocator Types [OS]](./ch04-01-memory-allocator-types.md) - - [Implementing a Bitmap [OS]](./ch04-02-implementing-a-bitmap.md) - - [Writing a Physical Page Allocator [OS]](./ch04-03-writing-a-physical-page-allocator.md) - -- [Interrupts and Exceptions [OS]](./ch05-00-interrupts-and-exceptions.md) - - [Utilizing the Interrupt Descriptor Table [OS]](./ch05-01-utilizing-the-idt.md) - - [The Programmable Interrupt Controller [OS]](./ch05-02-programmable-interrupt-controller.md) - - [Writing a Keyboard driver [OS]](./ch05-03-writing-a-keyboard-driver.md) - -- [File Systems and Disk Drivers [OS]](./ch06-00-file-systems-and-disk-drivers.md) - - [Disk Drivers [OS]](./ch06-01-disk-drivers.md) - - [Implementing a File System [OS]](./ch06-02-implementing-a-file-system.md) - -- [Processes and Scheduling [OS]](./ch07-00-processes-and-scheduling.md) - - [Thinking in Terms of Processes [OS]](./ch07-01-thinking-in-terms-of-processes.md) - - [Implementing a Process Scheduler [OS]](./ch07-02-implementing-a-process-scheduler.md) - -- [Writing a Shell [OS]](./ch08-00-writing-a-shell.md) + - [Implementing the Bitfields Proc-Macro [RUST]](./ch02-05-implementing-the-bitfields-proc-macro.md) + +- [Synchronization](./ch03-00-synchronization-primitives.md) + - [How Synchronization is Achieved on a Multiprocessor System [RUST]](./ch03-01-how-synchronization-is-achieved-on-a-multiprocessor-system.md) + - [Implementing Basic Synchronization Primitives [OS]](./ch03-02-implementing-basic-synchronization-primitives.md) +- [Printing To Screen [OS]](./ch04-00-printing-to-screen.md) +- [Memory Management [OS]](./ch05-00-memory-management.md) + - [Memory Allocator Types [OS]](./ch05-01-memory-allocator-types.md) + - [Implementing a Bitmap [OS]](./ch05-02-implementing-a-bitmap.md) + - [Writing a Physical Page Allocator [OS]](./ch05-03-writing-a-physical-page-allocator.md) + +- [Interrupts and Exceptions [OS]](./ch06-00-interrupts-and-exceptions.md) + - [Utilizing the Interrupt Descriptor Table [OS]](./ch06-01-utilizing-the-idt.md) + - [The Programmable Interrupt Controller [OS]](./ch06-02-programmable-interrupt-controller.md) + - [Writing a Keyboard driver [OS]](./ch06-03-writing-a-keyboard-driver.md) + +- [File Systems and Disk Drivers [OS]](./ch07-00-file-systems-and-disk-drivers.md) + - [Disk Drivers [OS]](./ch07-01-disk-drivers.md) + - [Implementing a File System [OS]](./ch07-02-implementing-a-file-system.md) + +- [Processes and Scheduling [OS]](./ch08-00-processes-and-scheduling.md) + - [Thinking in Terms of Processes [OS]](./ch08-01-thinking-in-terms-of-processes.md) + - [Implementing a Process Scheduler [OS]](./ch08-02-implementing-a-process-scheduler.md) + +- [Writing a Shell [OS]](./ch09-00-writing-a-shell.md) diff --git a/src/ch02-03-implementing-the-bitfields-proc-macro.md b/src/ch02-05-implementing-the-bitfields-proc-macro.md similarity index 100% rename from src/ch02-03-implementing-the-bitfields-proc-macro.md rename to src/ch02-05-implementing-the-bitfields-proc-macro.md diff --git a/src/ch03-00-synchronization-primitives.md b/src/ch03-00-synchronization-primitives.md new file mode 100644 index 0000000..0409c57 --- /dev/null +++ b/src/ch03-00-synchronization-primitives.md @@ -0,0 +1,9 @@ +# Synchronization + +_"Shared mutable state is the root of all evil."_ + + --- + + #![repository_card] + +Coming soon! diff --git a/src/ch03-01-how-synchronization-is-achieved-on-a-multiprocessor-system.md b/src/ch03-01-how-synchronization-is-achieved-on-a-multiprocessor-system.md new file mode 100644 index 0000000..60618e7 --- /dev/null +++ b/src/ch03-01-how-synchronization-is-achieved-on-a-multiprocessor-system.md @@ -0,0 +1,9 @@ +# How Synchronization is Achieved on a Multiprocessor System + +_"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies." - C.A.R. Hoare_ + +--- + +#![repository_card] + +Coming soon! diff --git a/src/ch03-02-implementing-basic-synchronization-primitives.md b/src/ch03-02-implementing-basic-synchronization-primitives.md new file mode 100644 index 0000000..02af2ad --- /dev/null +++ b/src/ch03-02-implementing-basic-synchronization-primitives.md @@ -0,0 +1,9 @@ +# Implementing Basic Synchronization Primitives + +_"I was motivated by fear of the nondeterminism of concurrency and wanted to prove that it was tamed in my programs." — Edsger W. Dijkstra_ + +--- + +#![repository_card] + +Coming soon! diff --git a/src/ch03-00-printing-to-screen.md b/src/ch04-00-printing-to-screen.md similarity index 100% rename from src/ch03-00-printing-to-screen.md rename to src/ch04-00-printing-to-screen.md diff --git a/src/ch04-00-memory-management.md b/src/ch05-00-memory-management.md similarity index 100% rename from src/ch04-00-memory-management.md rename to src/ch05-00-memory-management.md diff --git a/src/ch04-01-memory-allocator-types.md b/src/ch05-01-memory-allocator-types.md similarity index 100% rename from src/ch04-01-memory-allocator-types.md rename to src/ch05-01-memory-allocator-types.md diff --git a/src/ch04-02-implementing-a-bitmap.md b/src/ch05-02-implementing-a-bitmap.md similarity index 100% rename from src/ch04-02-implementing-a-bitmap.md rename to src/ch05-02-implementing-a-bitmap.md diff --git a/src/ch04-03-writing-a-physical-page-allocator.md b/src/ch05-03-writing-a-physical-page-allocator.md similarity index 100% rename from src/ch04-03-writing-a-physical-page-allocator.md rename to src/ch05-03-writing-a-physical-page-allocator.md diff --git a/src/ch05-00-interrupts-and-exceptions.md b/src/ch06-00-interrupts-and-exceptions.md similarity index 100% rename from src/ch05-00-interrupts-and-exceptions.md rename to src/ch06-00-interrupts-and-exceptions.md diff --git a/src/ch05-01-utilizing-the-idt.md b/src/ch06-01-utilizing-the-idt.md similarity index 100% rename from src/ch05-01-utilizing-the-idt.md rename to src/ch06-01-utilizing-the-idt.md diff --git a/src/ch05-02-programmable-interrupt-controller.md b/src/ch06-02-programmable-interrupt-controller.md similarity index 100% rename from src/ch05-02-programmable-interrupt-controller.md rename to src/ch06-02-programmable-interrupt-controller.md diff --git a/src/ch05-03-writing-a-keyboard-driver.md b/src/ch06-03-writing-a-keyboard-driver.md similarity index 100% rename from src/ch05-03-writing-a-keyboard-driver.md rename to src/ch06-03-writing-a-keyboard-driver.md diff --git a/src/ch06-00-file-systems-and-disk-drivers.md b/src/ch07-00-file-systems-and-disk-drivers.md similarity index 100% rename from src/ch06-00-file-systems-and-disk-drivers.md rename to src/ch07-00-file-systems-and-disk-drivers.md diff --git a/src/ch06-01-disk-drivers.md b/src/ch07-01-disk-drivers.md similarity index 100% rename from src/ch06-01-disk-drivers.md rename to src/ch07-01-disk-drivers.md diff --git a/src/ch06-02-implementing-a-file-system.md b/src/ch07-02-implementing-a-file-system.md similarity index 100% rename from src/ch06-02-implementing-a-file-system.md rename to src/ch07-02-implementing-a-file-system.md diff --git a/src/ch07-00-processes-and-scheduling.md b/src/ch08-00-processes-and-scheduling.md similarity index 100% rename from src/ch07-00-processes-and-scheduling.md rename to src/ch08-00-processes-and-scheduling.md diff --git a/src/ch07-01-thinking-in-terms-of-processes.md b/src/ch08-01-thinking-in-terms-of-processes.md similarity index 100% rename from src/ch07-01-thinking-in-terms-of-processes.md rename to src/ch08-01-thinking-in-terms-of-processes.md diff --git a/src/ch07-02-implementing-a-process-scheduler.md b/src/ch08-02-implementing-a-process-scheduler.md similarity index 100% rename from src/ch07-02-implementing-a-process-scheduler.md rename to src/ch08-02-implementing-a-process-scheduler.md diff --git a/src/ch08-00-writing-a-shell.md b/src/ch09-00-writing-a-shell.md similarity index 100% rename from src/ch08-00-writing-a-shell.md rename to src/ch09-00-writing-a-shell.md