/How-to-Make-a-Computer-Operating-System

How to Make a Computer Operating System in C++

Primary LanguageCApache License 2.0Apache-2.0

How to Make a Computer Operating System

Caution: This repository is a remake of my old course. It was written several years ago as one of my first projects when I was in High School, I'm still refactoring some parts. The original course was in French and I'm not an English native. I'm going to continue and improve this course in my free-time.

Source Code: All the system source code will be stored in the src directory. Each step will contain links to the different related files.

Contributions: This course is open to contributions, feel free to signal errors with issues or directly correct the errors with pull-requests.

Questions: Feel free to ask any questions by adding issues. Please don't email me.

Translations: A Chinese translation is available at How to Make a Computer Operating System in Chinese.

You can follow me on Twitter @SamyPesse or support me on Flattr or Gittip.

What kind of OS are we building?

The goal is to build a very simple UNIX-based operating system in C++, not just a "proof-of-concept". The OS should be able to boot, start a userland shell, and be extensible.

Screen

Summary

Chapter 9: Process management and multitasking

Chapter 10: External program execution: ELF files

Chapter 11: Userland and syscalls

Chapter 12: Modular drivers

Chapter 13: Some basics modules: console, keyboard

Chapter 14: IDE Hard disks

Chapter 15: DOS Partitions

Chapter 16: EXT2 read-only filesystems

Chapter 17: Standard C library (libC)

Chapter 18: UNIX basic tools: sh, cat

Chapter 19: Lua interpreter