Page 1 of 1

Where would I learn more OS development?

Posted: Sat Jan 28, 2017 2:36 pm
by stevej150
Hey guys. I am currently using FASM. I would like to learn more OS development. What is a very good PDF or website for learning more OS development? I hope to find things to do with 16 bit and 32 bit Assembly. I know quite a lot of Assembly already.

Cheers
Steve.

Re: Where would I learn more OS development?

Posted: Sat Jan 28, 2017 3:42 pm
by Love4Boobies
Well, presumably this Web site is a good place to start. However, if I were serious, I'd read a textbook on OS theory, such as this or this. Even though a bit of assembly will be required for handling architecture-specific aspects (e.g., virtual memory, context switching, etc.), I would also look into using a "higher-level" language because assembly has severe disadvantages, such as:
  • The code is inherently unportable and, even for the same architecture, microoptimizations do not necessarily translate across microarchitectures.
  • It is difficult to maintain. Maintenance is one of the most important parts of managing large-scale projects. A typical mistake that beginners make is to think that because most practical problems that have short solutions are easy to solve, their experience scales to larger projects. Nothing could be further from the truth. Not only that but good assembly code can actually be less efficient than compiled code because the compiler can afford to generate something that does not follow good practices. Humans, on the other hand, cannot.
  • It is unproductive.
PS: Please don't open several threads on the same topic or you will get everyone mad. You won't like it if that happens. :)

Re: Where would I learn more OS development?

Posted: Sat Jan 28, 2017 11:10 pm
by Schol-R-LEA
If you haven't already, I would strongly recommend reading the introductory material in the wiki:
After this, go through the material on the practical aspects of running an OS-dev project: Then you should read up on the core technologies for the platform, assuming (given what you have said already) that you are targeting the PC architecture, this would be: I strongly suggest that you read through the first two sets of pages in detail, and preferably at least go through the third part briefly, before doing any actual development.

While this is a lot of reading, it simply reflects the due diligence that any OS-devver needs to go through in order to get anywhere. OS development, even as a simple project, is not amenable to the Stack Overflow cut-and-paste model of software development; you really need to understand a fair amount of the concepts and principles before writing any code, and the examples given in tutorials and forum posts generally are exactly that. Copying an existing code snippet without at least a basic idea of what it is doing simply won't do. While learning itself is an iterative process - you learn one thing, try it out, see what worked and what didn't, read some more, etc. - in this case a basic foundation is needed at the start. Without a solid understanding of at least some of the core ideas before starting, you simply can't get very far in OS dev.

Hopefully, this won't scare you off; it isn't nearly as bad as it sounds. It just takes a lot of patience and a bit of effort, a little at a time.