Page 1 of 1

First things First

Posted: Tue Nov 13, 2007 5:44 pm
by crazygray
Q:

Posted: Tue Nov 13, 2007 5:54 pm
by crazygray
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

Posted: Tue Nov 13, 2007 7:25 pm
by exkor
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.

Posted: Tue Nov 13, 2007 7:39 pm
by bewing
I say filesystem. Everything else is easy to change later, but once you've got your allocation tables, directories, and some files loaded on a test system disk -- trying to change some detail of that filesystem structure later makes you want to cry.

Posted: Wed Nov 14, 2007 2:54 am
by AJ
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

Posted: Wed Nov 14, 2007 3:43 am
by JamesM
I agree wholeheartedly with AJ.

Posted: Wed Nov 14, 2007 3:51 am
by JamesM
crazygray 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
That wikibook is devoid of content except for the introduction - therefore I cannot give an opinion ;)

Posted: Wed Nov 14, 2007 4:59 am
by jal
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

Posted: Wed Nov 14, 2007 6:23 am
by crazygray
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

Posted: Wed Nov 14, 2007 6:36 pm
by crazygray

Posted: Wed Nov 14, 2007 6:48 pm
by crazygray
point taken
JamesM wrote:
crazygray 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
That wikibook is devoid of content except for the introduction - therefore I cannot give an opinion ;)

Posted: Wed Nov 14, 2007 6:53 pm
by Alboin
crazygray wrote:Point taken thats why I said addons are appreciated.
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.

Posted: Wed Nov 14, 2007 7:04 pm
by crazygray
I agree the wiki is better.

Posted: Thu Nov 15, 2007 3:24 am
by Solar
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.