This repository contains several links to resources related to operating systems.
Operating Systems: Three Easy Pieces. The book is centred around three conceptual pieces that are fundamental to operating systems: virtualization, concurrency, and persistence.
Operating System Concepts. Provides a clear description of the concepts that underlie operating systems.
Computer Systems: A Programmer's Perspective. The aim of the text is to explain the enduring concepts underlying all computer systems, and to show the concrete ways that these ideas affect the correctness, performance, and utility of application programs.
AMD64 Architecture Programmer’s Manual
OS Dev Wiki. Not a book but close enough :)
Computer Science from the Bottom Up. This book explains operating systems fundamentals through to how applications are complied and executed.
Writing a Simple Operating System from Scratch. Document that will give you a hands-on experience of low-level programming, how operating systems are written, and the kind of problems they must solve.
OS tutorial. An implementation of the above document without the theory.
Writing an OS in Rust. This blog series creates a small operating system in the Rust programming language. Exploratory work based on this tutorial can be found in the min-rust-os directory.
Mind the Gap: Reconnecting Architecture and OS research.
What every programmer should know about memory. This paper explains the structure of memory subsystems in use on commodity hardware, illustrating why CPU caches were developed, how they work, and what programs should do to achieve optimal performance by utilizing them.
seL4 Microkernel. High-assurance, high-performance operating system microkernel. It is unique because of its comprehensive formal verification, without compromising performance. It is meant to be used as a trustworthy foundation for building safety- and security-critical systems..
HermitCore. Novel unikernel operating system targeting a scalable and predictable runtime behavior for HPC and cloud environments.
Tock. An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers.