Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
m12 wrote:I'm suggesting a list with the things common among all OSs
But those things are only a *small* part of the *early* boot sequence of an OS running on a *specific* machine (perhaps PC) with a *particular* type of firmware (BIOS). They actually have nothing at all to do with general OS development.
I'm not saying that there's anything wrong with making a list like you're suggesting...
If a trainstation is where trains stop, what is a workstation ?
Follow the tutorials, at some point you make departure from tutorials and you know what's next.
And no, MBR is not part of an OS, it's a supporting tool. Your OS should boot with any pre-installed MBR, if any.
The list will be either over-simplify like boot->init->load module->open a shell; or too complex to be listed. Seriously, you will know what's next if os developer is ready for it; otherwise, such a list would consist of difficult concepts that provide little help to starter.
That list rules out Linux for starters, which relies on an external boot loader such as Grub. Many hobby OSs also use Grub, so those items don't apply. Bluemoon is correct to say that you are confusing boot loader with OS. Each OS, each processor, is different so a generic checklist is going to be difficult to draw up. None of what you list applies to an embedded OS on an ARM processor, for example.
A list would be so general to be useless. Something like:
m12 wrote:The purpose of this topic was to create a checklist, for everyone, not to be told to "follow the tutorials"
The purpose of this thread is to tell you that there is no universal checklist that's actually meaningful. Even iansjack's "generic" list becomes wobbly when you throw good old DOS (don't manage, who cares anyway?) at it, and there are a few hobby OSes out there with a similar mindset.
Basically, the best list I can come up with is:
1: Design
2: Implement
3: Go to 1 (because nobody is perfect and you must have done something wrong somewhere. )
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
A OS checklist works upon the assumption that everyone will do things the same way. A single tasking OS may not want to do memory protection (I sure don't do paging or deal with virtual address spaces in my kernel).
What are you looking for? A checklist on what to do to enter protected/long mode? A checklist on how to make another POSIX clone?
HAL - detect hardware and setup more drivers from initrd
Some testing code like running some test app in userland
You may notice my 32-bit & 64-bit kernel shares very similar workflow, and in fact they share most of the code except bootstrap, mmu, syscall entrance, program loader and context switching code.
I mean initialize scheduler, that was a typo.
there is some data structure to be initialized like setting "current process", etc.
Once it is initialized the timer can trigger scheduling.