Page 1 of 1
Kernel Development
Posted: Wed Jul 04, 2012 4:27 pm
by InfinityCounter
I am new to The OS development seen but am very serious about it. I am trying to develop a Hybrid kernel from scratch, would you mind telling me what I should do and how exactly a hybrid kernel is created, and the tools I should use.
Re: Kernel Development
Posted: Wed Jul 04, 2012 4:37 pm
by Griwes
There is magical thing on this site. It even says it's magical by itself: "The OSDev.org Wiki - Got a question? Search this first!".
Re: Kernel Development
Posted: Thu Jul 05, 2012 3:35 am
by JamesM
Wrong forum. You posted this on the Design and Theory forum - (hint: did you ask a question about design and theory? No? Don't post here).
Moved. And read the wiki.
Re: Kernel Development
Posted: Thu Jul 05, 2012 8:36 am
by Schol-R-LEA
Aside from the existing comments, I would ask you: what are your goals for your operating system? The things you asked about - how to implement the kernel, what tools to use - are decisions to be made, not answers to be given.
Just what do you mean when you say that it is a 'hybrid' kernel - that term could refer to a number of different things, though usually, it means one which combines aspects of micro-kernel and monolithic kernel (e.g., most of the major drivers are part of the kernel, but there are loadable modules form various kinds of support, a la Linux).
What design and implementation decisions have you made? What will your development platform be, and do you intend to eventually make the OS self-hosting? What language and toolchain will you use for the development? Will it be real-mode, 32-bit, or 64-bit? Will you use an existing boot loader, or roll one of your own? What file format will you use for the kernel image? For loadable drivers and modules? For applications? (OK, those last two questions aren't strictly related to the kernel, but still are relevant to overall goals.) Will drivers run in kernel mode or user mode, or will it be a mix of both?
How will you schedule processes? What sort of priority model will you use, and will it be adaptive (e.g., will long-waiting processes get brevetted up to a higher priority over time)? Will you provide threading, and if so, will they be scheduled by the kernel or by the process they are part of?
Will the kernel support multiple CPUs, and if so, will it let threads which are part of a single process run simultaneously on different cores?
What sort of synchronization and inter-process communication will it provide (e.g., semaphores, message passing, pipes, remote procedure calls), and will one particular model be fundamental (that is to say, will all the others are built up from some underlying primitives) or will you provide two or more models of primitive IPC?
These are just a few of the questions you'll want an answer for before you start implementing your kernel.