OSDev.org

The Place to Start for Operating System Developers
It is currently Fri May 17, 2024 10:15 pm

All times are UTC - 6 hours




Post new topic Reply to topic  [ 24 posts ]  Go to page Previous  1, 2

What os are you designing?
Microkernel 56%  56%  [ 34 ]
Monolithic kernel 23%  23%  [ 14 ]
Other design 16%  16%  [ 10 ]
I'm unsure at the moment... 5%  5%  [ 3 ]
Total votes : 61
Author Message
 Post subject:
PostPosted: Tue Dec 11, 2007 9:54 am 
Offline
Member
Member

Joined: Wed Oct 31, 2007 9:09 am
Posts: 1385
Craze Frog wrote:
Those of you who are writing a microkernel, are putting the scheduler inside or outside the kernel?


Outside, like almost any component.


JAL


Top
 Profile  
 
 Post subject:
PostPosted: Tue Dec 11, 2007 10:18 am 
Offline
User avatar

Joined: Fri Aug 10, 2007 8:43 am
Posts: 7
Location: Evansville, IN
I'm writing an OS using a kernel free design (i.e. no specific kernel). I was intending to use a nanokernel design, but ever since I switched to using SIPs (software isolated processes, like Singularity) I figured out how to split the responsibilities of the kernel into separate tasks. So now, I have a small collection of "core services" that provide task management, scheduling, memory management, optional paging, communication (through channels), interrupt management, and security.

_________________
FutureDomain: Everybody's favorite software maverick.
Xenon: Rethinking the operating system.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Dec 11, 2007 4:09 pm 
Offline
Member
Member
User avatar

Joined: Tue Sep 20, 2005 11:00 pm
Posts: 60
Location: Ireland
I agree, microkernels are modern and monolithic kernels are becoming old now, but in all fairness, if a microkernel does somthing wrong, it can really screw everything up. Monolithic FTW


Top
 Profile  
 
 Post subject:
PostPosted: Tue Dec 11, 2007 6:07 pm 
Offline
Member
Member

Joined: Sat Dec 30, 2006 2:31 pm
Posts: 729
Location: East Coast, USA
Craze Frog wrote:
Those of you who are writing a microkernel, are putting the scheduler inside or outside the kernel?

Inside

_________________
My OS: Fuzzy Logic


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 12, 2007 5:04 am 
Offline
Member
Member

Joined: Wed Oct 31, 2007 9:09 am
Posts: 1385
FutureDomain wrote:
I'm writing an OS using a kernel free design (i.e. no specific kernel). I was intending to use a nanokernel design, but ever since I switched to using SIPs (software isolated processes, like Singularity) I figured out how to split the responsibilities of the kernel into separate tasks. So now, I have a small collection of "core services" that provide task management, scheduling, memory management, optional paging, communication (through channels), interrupt management, and security.


Intersting idea, but to communicate, you must request some entity for the communication. And you must, by definition, communicate with that entity in a special way, to avoid a chicken and egg situation. I would call that entity the kernel. Also, you'd want only a limited number of processes in kernel space (as opposed to user space). Your 'core services' may run in kernel space, and thus I would consider them the kernel together.


JAL


Top
 Profile  
 
 Post subject:
PostPosted: Fri Dec 14, 2007 6:46 pm 
Offline
Member
Member
User avatar

Joined: Thu Nov 22, 2007 7:18 pm
Posts: 168
Location: USA,Hawaii,Honolulu(Seriously)
Quote:
I'm writing an OS using a kernel free design


Same here although I think mine will be similar to a hybrid kernel I'm not quite sure yet though.

_________________
Codname: Cipher
Working On: Design Doc(CFFS file system)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 20, 2007 9:50 am 
Offline
User avatar

Joined: Fri Aug 10, 2007 8:43 am
Posts: 7
Location: Evansville, IN
jal wrote:
Interesting idea, but to communicate, you must request some entity for the communication. And you must, by definition, communicate with that entity in a special way, to avoid a chicken and egg situation. I would call that entity the kernel. Also, you'd want only a limited number of processes in kernel space (as opposed to user space). Your 'core services' may run in kernel space, and thus I would consider them the kernel together.


I think you're not quite getting the SIP concept. In a SIP based architecture, all tasks run in kernel mode, but they're isolated from each other using software verification and type-safe code. They're all running in kernel mode according to the processor, but their code can't interfere with each other or they won't be loaded. In my kernel design, the core services are isolated from each other just like user tasks, but they are more privileged and can execute certain special instructions. As an example, device driver tasks would be running in their own tasks that are isolated from everyone else, but they would be given permission to read and write only to certain I/O ports that they needed to perform their job.

You're right in that there needs to be a system of communication between tasks, and that has traditionally been performed by the kernel. The chicken and egg syndrome comes in because of the hardware isolation that most operating systems use, but by using SIPs I can move IPC to a separate "Communication Manager" task that can be called by a normal task, but is still isolated from the rest of the operating system. I'm hoping that this system of least privilege in the kernel will help improve security (you can't just do anything if you take over one of the core services), stability (crashes and bugs are isolated) and make it a lot easier to write (a few separate services instead of one giant kernel).

I'm writing a paper on the design, and I'm wondering if anyone would be interested in me posting a link to it.

~~ FutureDomain ~~

_________________
FutureDomain: Everybody's favorite software maverick.
Xenon: Rethinking the operating system.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 20, 2007 10:15 am 
Offline
Member
Member
User avatar

Joined: Tue Oct 17, 2006 6:06 pm
Posts: 1437
Location: Vancouver, BC, Canada
FutureDomain wrote:
The chicken and egg syndrome comes in because of the hardware isolation that most operating systems use, but by using SIPs I can move IPC to a separate "Communication Manager" task that can be called by a normal task, but is still isolated from the rest of the operating system.


I still see a chicken & egg problem here. Normally SIPs can only communicate via IPC. If the "Communication Manager" implements IPC, and other tasks use IPC by "calling" the "Communication Manager", then how do they in fact "call" it? Is that not also IPC? Do you have a special form of IPC just for getting to the IPC server? Seems a bit strange IMO... Even Singularity implements IPC directly in the kernel.

_________________
Top three reasons why my OS project died:
  1. Too much overtime at work
  2. Got married
  3. My brain got stuck in an infinite loop while trying to design the memory manager
Don't let this happen to you!


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 20, 2007 10:27 am 
Offline
User avatar

Joined: Fri Aug 10, 2007 8:43 am
Posts: 7
Location: Evansville, IN
Colonel Kernel wrote:
I still see a chicken & egg problem here. Normally SIPs can only communicate via IPC. If the "Communication Manager" implements IPC, and other tasks use IPC by "calling" the "Communication Manager", then how do they in fact "call" it? Is that not also IPC? Do you have a special form of IPC just for getting to the IPC server? Seems a bit strange IMO... Even Singularity implements IPC directly in the kernel.


I've thought about that for a while. My techniques usually use a special bytecode instruction that is JITed to a simple procedure call to the communication manager. I've toyed with the idea of a traditional "syscall" instruction, but I'm currently leaning towards separate "send" and "receive" bytecodes. Either way, it just jumps to the communication manager. IPC is one of the few things that must be shared between all tasks, yet cannot use other primitives. In fact, my original nanokernel idea was to just have a RPC system and interrupt handler in the kernel (plus a few calls for directly manipulating the hardware). But I think that a special bytecode instruction would be required to implement it on a kernel-free design.

~~ FutureDomain ~~

_________________
FutureDomain: Everybody's favorite software maverick.
Xenon: Rethinking the operating system.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 24 posts ]  Go to page Previous  1, 2

All times are UTC - 6 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group