implementing servers for a microkernel
- acccidiccc
- Member
- Posts: 38
- Joined: Sun Mar 21, 2021 1:09 pm
- Location: current location
implementing servers for a microkernel
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!
iustitiae iniustos iudicat
Re: implementing servers for a microkernel
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.
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.
Skylight: https://github.com/austanss/skylight
I make stupid mistakes and my vision is terrible. Not a good combination.
NOTE: Never respond to my posts with "it's too hard".
I make stupid mistakes and my vision is terrible. Not a good combination.
NOTE: Never respond to my posts with "it's too hard".
Re: implementing servers for a microkernel
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 ).
- acccidiccc
- Member
- Posts: 38
- Joined: Sun Mar 21, 2021 1:09 pm
- Location: current location
Re: implementing servers for a microkernel
thanks for clearing my misconception about ring 0 and for your reply!
iustitiae iniustos iudicat
Re: implementing servers for a microkernel
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.
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.