Kernel Development
-
- Posts: 2
- Joined: Wed Jul 04, 2012 4:14 pm
Kernel Development
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.
- Griwes
- Member
- Posts: 374
- Joined: Sat Jul 30, 2011 10:07 am
- Libera.chat IRC: Griwes
- Location: Wrocław/Racibórz, Poland
- Contact:
Re: Kernel Development
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!".
Reaver Project :: Repository :: Ohloh project page
<klange> This is a horror story about what happens when you need a hammer and all you have is the skulls of the damned.
<drake1> as long as the lock is read and modified by atomic operations
<klange> This is a horror story about what happens when you need a hammer and all you have is the skulls of the damned.
<drake1> as long as the lock is read and modified by atomic operations
Re: Kernel Development
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.
Moved. And read the wiki.
- Schol-R-LEA
- Member
- Posts: 1925
- Joined: Fri Oct 27, 2006 9:42 am
- Location: Athens, GA, USA
Re: Kernel Development
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.
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.
Rev. First Speaker Schol-R-LEA;2 LCF ELF JAM POEE KoR KCO PPWMTF
Ordo OS Project
Lisp programmers tend to seem very odd to outsiders, just like anyone else who has had a religious experience they can't quite explain to others.
Ordo OS Project
Lisp programmers tend to seem very odd to outsiders, just like anyone else who has had a religious experience they can't quite explain to others.