Page 1 of 1

Improving memory cache management in microkernels

Posted: Fri Apr 09, 2004 1:31 pm
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]

Re:Improving memory cache management in microkernels

Posted: Sat Apr 10, 2004 3:02 am
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 ...

Re:Improving memory cache management in microkernels

Posted: Sat Apr 10, 2004 8:09 am
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