From f67abb437da6d79345a026077b915c6c5bd03137 Mon Sep 17 00:00:00 2001 From: Carlos Fenollosa Date: Sun, 5 Oct 2014 18:22:18 +0200 Subject: [PATCH] updated readme --- README.md | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 4641667..50b3a62 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ os-tutorial =========== -How to create an OS from scratch +How to create an OS from scratch! -I have always wanted to learn how to make an OS from scratch. In college they taught us +I have always wanted to learn how to make an OS from scratch. In college I was taught how to implement advanced features (pagination, semaphores, memory management, etc) but: @@ -14,40 +14,34 @@ Inspired by [this document](http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/l 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. -**The tutorial will be updated about every week, at the same pace that I learn the concepts** -I will not explain the theory. Google is your friend. -Theory is already covered by thousands of PDFs from Universities -and the Wikipedia. The material assumes that you are comfortable -with low level computing. +Features +-------- -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. +- This course is a code tutorial aimed at people who are comfortable with low level computing. +- There is little theory. Yes, this is a feature. Google is your theory lecturer. +- The lessons are tiny and may take 5-15 minutes to complete. This is the only way to learn. Grabbing a whole +OS, even if small like Minix or TempleOS, is too overwhelming. +- New lessons will be added about every week, at the same pace that I learn the concept How to use this tutorial ------------------------ -First, go through every folder in order. They build on previous code, so if +1. Start with the first folder and go down 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. - -Each lesson README starts with the concepts you should be familiar with +2. Read each README first. Especially the first line, which details the concepts you should be familiar with before reading the code. -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 -yourself on a different folder, modify them slightly and play a bit with the -code, you know, the usual. +3. Read the README. It is **very concise**. The only theory is the required to understand the code and there +are tips on what to look at when you open the code file(s) + +4. Look at the code examples. Some times you may be able to write them yourself just from the hints on the README. + +5. Experiment with them and try to break things. Try to change pointers and registers and see what happens. You know, the usual. -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.