Anonymouqs wrote:Yeah, I understand that ReactOS is completely different from Linux. I just wanted to know if a tutorial like Linux from Scratch would allow me to understand the general concepts before diving into ReactOS programming.
I think the ReactOS equivalent of Linux from Scratch is mastering the ReactOS Build Environment (RosBE) well enough to download the ReactOS source code from the ReactOS repository on GitHub then build ReactOS from that.
For general operating system concepts, studying Andrew S. Tanenbaum's Minix would probably be of much greater benefit. Tanenbaum wrote Minix to demonstrate operating system programming techniques for his computer science classes. A Minix book, Operating Systems Design and Implementation
, is available and has been used in computer science courses at universities around the world
. Tanenbaum also wrote a more general book that describes the design choices made by some widely known commercial OS implementations, Modern Operating Systems
. For a college textbook, it starts at a (to me) surprisingly basic level and proceeds from there. It is also over 1,000 pages long so it proceeds quite a way into the topic.
But for now, I want to find a user-friendly beginner tutorial that would allow me to grasp general concepts easier. Such as how to solve File Management, Task Scheduling etc. And would enable me to interpret the Source Code of other OS programs.
This depends upon what you mean by "user-friendly" and "beginner". (There's no Kant for Dummies
book for Philosophy students either.) To interpret the source code of an operating system's internal programming, one must know well the computer language in which the code was written and the overall design principles and structure of the operating system. To understand the code that makes up ReactOS, one should be at least knowledgeable enough of the C programming language to read the code and recognize the actions the code accomplishes when run. (This is a skill much easier to learn than writing good code.)
Fortunately, because ReactOS uses a hardware abstraction layer (HAL) there are only a very few source files that use assembly language code so learning assembly language is not necessary. However, the student of ReactOS code should know how computers, particularly the x86 and x64 processors, represent data and how the C language's fundamental data types correspond to the fundamental data units of the processor.
My goal, in the end, is to be able to explain OS Programming to anyone in general, so they can contribute to React OS.
That is a laudable goal. However, recognize that prominent university computer science departments cover OS programming with course sequences
, not a single class.
Ah, but a man's reach should exceed his grasp,
(...A) lot of my programming friends say that it's a daunting task.
Or what's a heaven for?
--Robert Browning, "Andrea del Sarto", line 98.
A tutorial about the existing ReactOS scheduler that describes what it does, the algorithm it uses, walks through the code, and maybe even includes an experiment or two the student could try would be an impressive achievement.
It's pretty obvious that the deeper you (immerse) yourself into the Matrix of code itself, the longer it takes to develop stuff; henceforth, the reason for levels of abstraction. But despite the crazy-looking symbols, there's a way to explain it in English, Plain English. And if we have such an available resource, a lot more programmers would contribute to React OS, speeding up development.
Consider aiming your tutorials toward someone who already has significant computer knowledge and knows the C programming language fairly well. You can avoid starting from the most beginner level because there are many resources on the Web and books that teach how computers work in general and the C language in particular. You might also assume that your student has a copy of Petzold's Programming Windows (Developer Reference) 5th edition
, the Microsoft Windows Internals
book (4th edition or newer) and can follow the code examples on Raymond Chen's blog, The Old New Thing
. People motivated to participate as programmers in the ReactOS project will either already have this knowledge or make it their own mission to get it.
Good luck. I look forward to seeing what you come up with.