How to start Design ?

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!
Post Reply
jainendra
Posts: 2
Joined: Mon Sep 08, 2008 5:56 am

How to start Design ?

Post by jainendra »

Hello to Everyone,
& thanks to those who gave me the reply.
I want to create an OS which will like MINIX3.But I will be adding additional features also.I completed the analysis part of OS.Now I have to start the designing.But I don't know from where to start.So please help me to start design.start means I want to know whether to start from Lower layer(i.e. Kernel & system tasks) or from the upper layer(i.e. init & the user processes).
and also then how to proceed?An early response will hwlp me a lot.
Again Thanking in advance.
User avatar
AJ
Member
Member
Posts: 2646
Joined: Sun Oct 22, 2006 7:01 am
Location: Devon, UK
Contact:

Re: How to start Design ?

Post by AJ »

Hi,
jainendra wrote:I want to create an OS which will like MINIX3. But I will be adding additional features also.
I'm not here to put people off OS Dev, but how about taking the Minix3 kernel as a starting point? Can the additional features be added simply by creating a distro rather than a complete OS?
I completed the analysis part of OS.Now I have to start the designing.But I don't know from where to start.So please help me to start design.
For design, start with your interfaces. You have a few of these and they can be internal (what part of each module does the core kernel need to see) and external (what interface are the drivers and user apps going to see). Have a look from the outset at a few ways of doing this - syscalls, IPC and so on. Think about extensibility from the outset.

This is no different from application programming - for example a C++ coder designing a class firstly thinks about what part of that class needs to be visible to external code. A failure to do this results on some of the class internals to be taken in to account by external code which is not the point of OOP at all. In the same way with the OS, you need to provide a consistent, clean interface that your apps and drivers developers will be able to use.

Once you have a good idea about all that, you can think about where to start coding and this will depend on whether you are writing your own boot loader or not. The order of implementation here varies greatly, but its not a bad idea to put some basic debugging helpers in first (like a temporary video and/or COM driver) which can be used to debug your kernel in the early stages. This can be superceded later once you have written your driver interface. The rest is up to you :)

HTH,
Adam
User avatar
Troy Martin
Member
Member
Posts: 1686
Joined: Fri Apr 18, 2008 4:40 pm
Location: Langley, Vancouver, BC, Canada
Contact:

Re: How to start Design ?

Post by Troy Martin »

jainendra wrote:I want to create an OS which will like MINIX3.
Linux was originally meant to be a free, monolithic Minix-like hobby OS. It's grown by some pretty big factors since then.
jainendra wrote:and also then how to proceed?
Start by learning assembly (I saw your other post, so I assume you don't really need to) and C. You can find lots of OS Development tutorials on the internet, even on the wiki.
Image
Image
Solar wrote:It keeps stunning me how friendly we - as a community - are towards people who start programming "their first OS" who don't even have a solid understanding of pointers, their compiler, or how a OS is structured.
I wish I could add more tex
Post Reply