# cfenollosa/os-tutorial

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/cfenollosa-os-tutorial).**

30,551 stars · 3,545 forks · C · BSD-3-Clause

## Links

- GitHub: https://github.com/cfenollosa/os-tutorial
- awesome-repositories: https://awesome-repositories.com/repository/cfenollosa-os-tutorial.md

## Description

This project is an educational curriculum designed to teach the fundamentals of operating system development and low-level systems programming. It provides a structured sequence of lessons and code samples that guide users through building a functional kernel and bootloader from scratch, enabling a practical understanding of how software interacts directly with computer hardware.

The repository distinguishes itself by focusing on the core mechanics of bare-metal execution. It covers the implementation of essential system components, including assembly-based bootloaders that transition processors from real to protected mode, and the manual configuration of global descriptor tables for memory segmentation. Users learn to manage hardware events and software exceptions through interrupt descriptor table handling, as well as how to communicate with peripherals and render text via direct memory-mapped input and output.

The materials emphasize the internal design of processors and memory management, offering a technical reference for those studying computer architecture. The content is organized as a step-by-step learning resource, utilizing a combination of C and assembly language to demonstrate how to maintain system control without the abstraction layer of a host operating system.

## Tags

### Education & Learning Resources

- [Computer Architecture Curricula](https://awesome-repositories.com/f/education-learning-resources/computer-architecture-curricula.md) — Provides structured educational materials and implementation exercises for learning the internal design of processors and memory systems.
- [Instructional Materials](https://awesome-repositories.com/f/education-learning-resources/instructional-materials.md) — Provides a structured collection of instructional materials and guided examples designed to teach complex technical concepts through hands-on practice.
- [Operating System Curricula](https://awesome-repositories.com/f/education-learning-resources/operating-system-curricula.md) — Provides a comprehensive sequence of lessons and exercises focused on the fundamental principles and implementation details of low-level computer architecture.
- [Educational Curricula](https://awesome-repositories.com/f/education-learning-resources/educational-curricula.md) — Provides structured, step-by-step educational paths to help users master complex technical concepts. ([source](https://cdn.jsdelivr.net/gh/cfenollosa/os-tutorial@master/README.md))
- [Technical Documentation](https://awesome-repositories.com/f/education-learning-resources/technical-documentation.md) — Provides a comprehensive technical reference manual and code samples for building software from the ground up.
- [Tutorials](https://awesome-repositories.com/f/education-learning-resources/tutorials.md) — Provides a structured guide and instructional walkthrough for learning and applying the software concepts covered in the resource. ([source](https://github.com/cfenollosa/os-tutorial))
- [Educational Examples](https://awesome-repositories.com/f/education-learning-resources/educational-examples.md) — Provides illustrative examples and guided walkthroughs to help developers learn and understand specific technical implementations. ([source](https://github.com/cfenollosa/os-tutorial))
- [Learning Examples](https://awesome-repositories.com/f/education-learning-resources/learning-examples.md) — Provides documented examples and feature demonstrations to illustrate technical concepts and library usage. ([source](https://github.com/cfenollosa/os-tutorial))
- [Learning Strategies](https://awesome-repositories.com/f/education-learning-resources/learning-strategies.md) — Provides structured pedagogical approaches and learning methodologies for mastering complex technical domains. ([source](https://github.com/cfenollosa/os-tutorial))

### Operating Systems & Systems Programming

- [Hardware Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-drivers.md) — Enables direct hardware interaction and peripheral control by writing data to specific physical memory addresses.
- [Boot & Startup Management](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management.md) — Initializes the processor by transitioning from real mode to protected mode through low-level machine instructions.
- [Interrupt Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/interrupt-handling.md) — Provides low-level mechanisms for mapping hardware events and software exceptions to specific interrupt service routines.
- [Kernel Development](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/kernel-development.md) — Provides educational resources and implementation details for building functional kernels and bootloaders from the ground up.
- [Process and Memory Management](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management.md) — Defines memory layout and access permissions by manually configuring structures that govern physical memory segmentation.
- [Systems Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming.md) — Provides low-level primitives and utilities for direct hardware interaction and memory management.
- [Bare Metal Development](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming/bare-metal-development.md) — Provides specialized code and documentation for building applications that run directly on hardware without an underlying operating system.
- [Languages](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming/languages.md) — Implements core system functionality using low-level languages like C and Assembly. ([source](https://github.com/cfenollosa/os-tutorial))
- [Hardware Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-abstraction-layers.md) — Provides a consistent interface for interacting with core hardware components through modular assembly routines.
- [I/O Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/i-o-interfaces.md) — Enables direct hardware communication by mapping peripheral registers to processor memory addresses.

### Part of an Awesome List

- [Containers and Virtualization](https://awesome-repositories.com/f/awesome-lists/devops/containers-and-virtualization.md) — Comprehensive tutorial for OS development.
- [Infrastructure and Systems](https://awesome-repositories.com/f/awesome-lists/devops/infrastructure-and-systems.md) — A comprehensive tutorial for building an OS.
- [Operating Systems](https://awesome-repositories.com/f/awesome-lists/devtools/operating-systems.md) — Listed in the “Operating Systems” section of the Build Your Own X awesome list.
- [Operating Systems and Emulators](https://awesome-repositories.com/f/awesome-lists/devtools/operating-systems-and-emulators.md) — A comprehensive guide to OS development.
- [Cheat Sheets](https://awesome-repositories.com/f/awesome-lists/learning/cheat-sheets.md) — Listed in the “Cheat Sheets” section of the The Book Of Secret Knowledge awesome list.
