cfenollosa_os-tutorial/README.md

58 lines
2.0 KiB
Markdown
Raw Normal View History

2014-09-29 08:39:34 +00:00
os-tutorial
===========
How to create an OS from scratch
2014-09-29 09:00:02 +00:00
I have always wanted to learn how to make an OS from scratch. In college they taught us
how to implement advanced features (pagination, semaphores, memory management, etc)
but:
- I never got to start from my own boot sector
- College is hard so I don't remember most of it.
Inspired by [this document](http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf)
and the [OSDev wiki](http://wiki.osdev.org/), I'll try to make short step-by-step READMEs and
code samples for anybody to follow.
2014-09-29 09:51:49 +00:00
I will not explain the theory. Google is your friend.
Theory is already covered by thousands of PDFs from Universities
and the Wikipedia.
This course is a code tutorial, not a real CS lecture.
To make up for the lack of theory, the "lessons" are tiny
and may take 5-15 minutes to complete. Each new concept
is presented on a new lecture.
2014-09-29 09:00:02 +00:00
How to use this tutorial
------------------------
First, go through every folder in order. They build on previous code, so if
you jump right to folder 08, you may find a lot of stuff which is not related
to what folder 08 is about.
To see the increments between "lessons", do a diff between folders.
2014-09-29 09:51:49 +00:00
Each lesson README starts with the concepts you should be familiar with
before reading the code.
2014-09-29 09:29:17 +00:00
Second, for each folder, read the README. It is **very concise**. The only theory.
is the required to understand the code.
Then, look at the code examples. You can try to write them by
2014-09-29 09:00:02 +00:00
yourself on a different folder, modify them slightly and play a bit with the
2014-09-29 09:29:17 +00:00
code, you know, the usual.
2014-09-29 09:00:02 +00:00
Finally, the code files provided in each folder are the final result. If
you want to learn quickly (though not as thoroughly), just read the
provided code files.
TL;DR: First read the README on each folder, then decide if you will
implement it yourself or just read the provided code files.
Contributing
------------
I'm still learning this. For the moment, please restrict your contributions to fixing possible bugs
or improving existing documents. I'm not yet ready to accept enhancements.