OS Programming Tutorial[Specifically for ReactOS type]

All development related issues welcome

Moderator: Moderator Team

Post Reply
Anonymouqs
Posts: 2
Joined: Thu Feb 01, 2018 4:56 am

OS Programming Tutorial[Specifically for ReactOS type]

Post by Anonymouqs »

What tutorial would help me understand the fundamentals of OS programming, specifically for ReactOS?

Should I take a series of tutorials that "scaffolds" me to ReactOS such as starting with a how to make Linux?
Or is there a direct tutorial for ReactOS specific programming?

I always wanted to contribute to this project, but OS programming isn't too common these days in comparison to all the high-level programming activity.
(All hail Python)

Also, can a list of tutorials be added to the FAQ?

Thanks,
Anonymouqs
User avatar
dizt3mp3r
Posts: 1874
Joined: Mon Jun 14, 2010 5:54 pm

Re: OS Programming Tutorial[Specifically for ReactOS type]

Post by dizt3mp3r »

A list of tutorials and links to locations where the essential skills can be amassed might be a useful feature. However, programming at levels like these are not skills one simply acquires. Decent programming at this level is a skill that most may never attain. It would take a lot of dedication - but I for one appreciate your offer.

It would be good if the devs parcelled out tasks that could be achievable to the man-in-the-street with some reasonable programming skills as examples of community driven tasks and as real bugs/features for the community to actually code.

Note: Never mention ReactOS or Linux in the same sentence assuming that the two are in some way alike. Someone will drop a brick from a very great height. It is one of the forum taboos here.
Skillset: VMS,DOS,Windows Sysadmin from 1985, fault-tolerance, VaxCluster, Alpha,Sparc. DCL,QB,VBDOS- VB6,.NET, PHP,NODE.JS, Graphic Design, Project Manager, CMS, Quad Electronics. classic cars & m'bikes. Artist in water & oils. Historian.
Anonymouqs
Posts: 2
Joined: Thu Feb 01, 2018 4:56 am

Re: OS Programming Tutorial[Specifically for ReactOS type]

Post by Anonymouqs »

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. Also, thanks for the heads up, I think you just saved my life :)

I understand there's a plethora of difference for each operating system; which is also the reason why Mac Programs can't directly run on Windows and Windows can't directly run on Linux ect. 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 ect. And would enable me to interpret the Source Code of other OS programs.

My goal, in the end, is to be able to explain OS Programming to anyone in general, so they can contribute to React OS. Many high-level projects take off because high-level programming is simpler and easier to understand. I see a lot of my programming friends say that it's a daunting task. It's pretty obvious that the deeper you get Incept 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.
User avatar
Fraizeraust
Posts: 234
Joined: Thu Jan 05, 2017 11:46 am
Location: Italy
Contact:

Re: OS Programming Tutorial[Specifically for ReactOS type]

Post by Fraizeraust »

For the start, a great knowledge of C/C++ programming is highly needed as ReactOS is mostly made up of C (being the NT kernel itself of ROS for example) and a few C++ and great knowledge about Windows internals like Win32k, GDI, you name it. Windows Internals books offer a plethora of information regarding Windows, the kernel and so on.

For someone to program an OS is tedious as you need to know how an Operating System works, how the kernel components work under the hood, etc. This is a very exhaustive task but once you get used to these concepts you should be ready to go.

Reference - Programming and Stuff
Programming Guidelines

Besides this, you must also get familiar to the Microsoft Windows Debugger (WinDBG) so you'll get used to Windows debugging as well. The first link above contains lots of other links of some sources like tutorials, books and such. You can check them.
a.k.a. GeoB99 -- ReactOS Kernel developer -- My Wiki page
verserk
Posts: 38
Joined: Fri May 26, 2017 8:11 pm

Re: OS Programming Tutorial[Specifically for ReactOS type]

Post by verserk »

dizt3mp3r wrote:Note: Never mention ReactOS or Linux in the same sentence assuming that the two are in some way alike. Someone will drop a brick from a very great height. It is one of the forum taboos here.
There is actually a way in which they're alike. Both LInux and ReactOS are opensource counterparts to closed source operating systems, such that Linux:Unix::ReactOS:Windows (pretty sure that's how you format that). Which makes it really interesting seeing attitudes toward LInux on the forum beyond not liking people confusing ReactOS for any sort of Linux distribution.
ReactOS: HP pavilion dv6500.
middings
Posts: 1073
Joined: Tue May 07, 2013 9:18 pm
Location: California, USA

Re: OS Programming Tutorial[Specifically for ReactOS type]

Post by middings »

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.
(...A) lot of my programming friends say that it's a daunting task.
Ah, but a man's reach should exceed his grasp,
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.
Post Reply

Who is online

Users browsing this forum: No registered users and 22 guests