Page 1 of 1

implementing servers for a microkernel

Posted: Tue May 11, 2021 12:03 pm
by acccidiccc
Hello, I have question: How does the Kernel call the servers in a micro-kernel? If i understand the Concept, they are not inside the kernel binary. Now how do they run in kernel-mode if they are not a kernel and how are they invoked? Thanks a lot in advance and sorry for my lack in knowledge!

Re: implementing servers for a microkernel

Posted: Tue May 11, 2021 12:08 pm
by austanss
Running in "kernel mode" means running in ring 0. Any program can run in ring 0 if the kernel allows it to. A program does not need to be inside the kernel to run in "kernel mode".

Also, how the kernel interfaces with the servers is completely up to you. A design I would think of is one where servers must register with the kernel, and the kernel recognizes servers for their functions and redirects related operations to the servers.

Re: implementing servers for a microkernel

Posted: Tue May 11, 2021 12:40 pm
by nexos
In a microkernel, servers run in user mode to provide better security. As far as communication goes, the kernel could simply send a message to the servers. That is my plan (whenever I start coding it :) ).

Re: implementing servers for a microkernel

Posted: Wed May 12, 2021 6:34 am
by acccidiccc
thanks for clearing my misconception about ring 0 and for your reply! :)

Re: implementing servers for a microkernel

Posted: Wed May 12, 2021 7:04 am
by rdos
I think a general message function is too slow and limited for a microkernel implementation, so I will build a custom interface for my user space file system servers.

It will build on a set of useful primitives, like a block object that can safely be shared in different address spaces without an advanced VMM implementation. I also communicate data through physical addresses rather than extensive use of memory mapping.