Improving memory cache management in microkernels

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
ineo

Improving memory cache management in microkernels

Post by ineo »

Hi !

I am working on a microkernel, and I wonder how I may improve the use of the memory cache.

All my servers (ie microkernel servers) are really small, and they live in separate address spaces (I use paging).

On a monolithic kernel, you may put the kernel somewhere in memory, and let it here for all processes (using global pages & protection). But on microkernel many servers are involved, therefore it seems difficult to do the same.

Have you ever done something like that ? How did you do ? What hints could you suggest for improving the memory cache efficiency ?

Thanks.
INeo

[attachment deleted by admin]
User avatar
Pype.Clicker
Member
Member
Posts: 5964
Joined: Wed Oct 18, 2006 2:31 am
Location: In a galaxy, far, far away
Contact:

Re:Improving memory cache management in microkernels

Post by Pype.Clicker »

that may sound completely stupid, but let's say you keep 1GB for microkernel and services (in the virtual addresses) and 3GB for 'regular applications', it is still possible to have each 'server' using a dedicated portion of the "shared" 1GB of 'system' space and have its pages tagged 'global' while they are present only in one address space, wouldn't it ?

It will be necessary, in addition, to provide segments protection to avoid server A to reference pages from server B (which are still 'available' in the TLBs)

Finally, it appears that the solution to your problem is to have 'services' mapped everywhere but using segment protection against each other ...
ineo

Re:Improving memory cache management in microkernels

Post by ineo »

Pype.Clicker wrote: that may sound completely stupid, but let's say you keep 1GB for microkernel and services (in the virtual addresses) and 3GB for 'regular applications', it is still possible to have each 'server' using a dedicated portion of the "shared" 1GB of 'system' space and have its pages tagged 'global' while they are present only in one address space, wouldn't it ?
I already thought about doing something like that (using run time rellocation for the servers)... but the problem is the lack of protection.
Pype.Clicker wrote: It will be necessary, in addition, to provide segments protection to avoid server A to reference pages from server B (which are still 'available' in the TLBs)

Finally, it appears that the solution to your problem is to have 'services' mapped everywhere but using segment protection against each other ...
Unfortunately it may only work on x86 architecture, I don't want to be stick to it :(

Thank you for your suggestion !
INeo
Post Reply