First things First
First things First
Q:
Imagine if a creature came from a 4 dimensional world, would he think you to be flat?
Just out of curiosity of peoples opinions.
A Wiki Book On OS Development(I didn't start it but I know the author addons to it are appreciated)
http://www.wikibooks.org/wiki/Operating ... evelopment
A Wiki Book On OS Development(I didn't start it but I know the author addons to it are appreciated)
http://www.wikibooks.org/wiki/Operating ... evelopment
Imagine if a creature came from a 4 dimensional world, would he think you to be flat?
1. partial device drivers - understand how devices work, what they need, do at least detection with some initialization
2. memory managing - allocating pages, converting physical to linear, make sure all variable are at dynamic locations an can be moved somewhere else
3. tasks, schedulers
4. drivers and user apps
5. other
simple bootloader can be fit anywhere, complex one goes at the very end or maybe skipped entirely if you dont have human power to do it.
2. memory managing - allocating pages, converting physical to linear, make sure all variable are at dynamic locations an can be moved somewhere else
3. tasks, schedulers
4. drivers and user apps
5. other
simple bootloader can be fit anywhere, complex one goes at the very end or maybe skipped entirely if you dont have human power to do it.
I think you'll get some very different responses here .
My philosophy is to get a basic video driver started first (so that I can at least use printf() to output hex numbers). My video driver also outputs to com 1. This video 'driver' must use no dynamic memory allocation.
Then I like decent memory management. Otherwise, if you are using C++ new and delete operators, you can't test anything properly as you don't know whether it's that class you just added that's broken, or the memory allocator.
Later, the debug-mode video driver can be removed and replaced with a proper system that can fit in to your driver tree along with all the other hardware.
Cheers,
Adam
My philosophy is to get a basic video driver started first (so that I can at least use printf() to output hex numbers). My video driver also outputs to com 1. This video 'driver' must use no dynamic memory allocation.
Then I like decent memory management. Otherwise, if you are using C++ new and delete operators, you can't test anything properly as you don't know whether it's that class you just added that's broken, or the memory allocator.
Later, the debug-mode video driver can be removed and replaced with a proper system that can fit in to your driver tree along with all the other hardware.
Cheers,
Adam
That wikibook is devoid of content except for the introduction - therefore I cannot give an opinioncrazygray wrote:Just out of curiosity of peoples opinions.
A Wiki Book On OS Development(I didn't start it but I know the author addons to it are appreciated)
http://www.wikibooks.org/wiki/Operating ... evelopment
Design your OS first. Think of the concept (UNIX/POSIX clone? microkernel or monolythic? messaging of something else? file based or not? etc. etc.), then work it out. What do you want the kernel to do? How is your memory management handled, and what does it look like (flat, segmentation, paging, virtual mem)? Do you want to go SMP? Intel or something else (or both)? What about device drivers, how do they interact? Do you have device driver stacking (USB stack, for example)? And so on and so forth. Just starting to hack code does not result in a good OS, although it might be tremendous fun.
JAL
JAL
Point taken thats why I said addons are appreciated.
Just out of curiosity of peoples opinions.
A Wiki Book On OS Development(I didn't start it but I know the author addons to it are appreciated)
http://www.wikibooks.org/wiki/Operating ... evelopment
Imagine if a creature came from a 4 dimensional world, would he think you to be flat?
point taken
JamesM wrote:That wikibook is devoid of content except for the introduction - therefore I cannot give an opinioncrazygray wrote:Just out of curiosity of peoples opinions.
A Wiki Book On OS Development(I didn't start it but I know the author addons to it are appreciated)
http://www.wikibooks.org/wiki/Operating ... evelopment
Imagine if a creature came from a 4 dimensional world, would he think you to be flat?
We do have a wiki, you know. If anything, work on that instead of starting anew. Besides, IMO, Wikibooks is a very bad idea, because there is no focus. In a wiki article, you can have 120 disjoint events, but in a book, your thought process must be seamless, and I can't see that happening with free a group of people.crazygray wrote:Point taken thats why I said addons are appreciated.
C8H10N4O2 | #446691 | Trust the nodes.
If you ask what to design first, my vote is on memory management, as that somewhat defines many other aspects - protection, inter-process communication, the like.
As to what to implement first - I'd say basic output functionality, as I am not a friend of homegrown bootloaders (reinventing the wheel), and you do need some way to print debug information to screen right from the start.
As to what to implement first - I'd say basic output functionality, as I am not a friend of homegrown bootloaders (reinventing the wheel), and you do need some way to print debug information to screen right from the start.
Every good solution is obvious once you've found it.