Programming An Operating System

Jonathan Hunter

Reputable
Dec 31, 2014
2
0
4,510
I have been looking in programming my own software and computer engineering and I decided to try to make my own OS (Hooray). But the problem is that I have very little experience with advanced things like this. I do not know where to start or where to go. I am currently unable to get the proper education because of the lack of places where I can go. I know it will be very hard because of my lack of knowledge and skill but within time and work, I know I can get far with this. So please help me get a start on what will soon become my future. Thank you.
 


OS development is incredibly complicated, but it's an incredibly worthwhile endeavour.

Start small and work your way up from there.

Step 1: Master the C programming language. Familiarize yourself with the components that are native to the language itself, as well the C standard library. In kernel land the standard library doesn't exist, you'll need to implement everything that you wish to use on your own, so you'll need to figure out how to solve certain problems without leaning on the library.

Step 2: Pick a micro-architecture to work with, preferably one that is simple. I recommend some basic microcontrollers such as those from Texas Instruments and Microchip Technology. Do not attempt to write an OS for an x86 or ARM based microprocessor, you will drive yourself insane.

Step 3: Set objectives. If you picked a simple micro-architecture that's suitably simple you should be able to set discrete design objectives that are realizable through a single-person development team. Features such as UART I/O, real-time pre-emptive multi-tasking, interrupts, object synchronization, shared memory, etc... can all be accomplished with enough time and effort. Pick one, work it through, then move on the next one.

I would recommend checking out uC/OS-II as a good example of what can be accomplished in a few thousand lines of code. Not every OS is as large or as complicated as Windows.
 
I would look into using a Virtual Machine. Look into how bootloaders work, because those are the simplest "Operation Systems" you'll find. They typically get loaded, present a list of options, then let you executes your actual OS from the list.
 

TRENDING THREADS