Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
memory management, allocation and collection in kernel mode.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Sussillo, David <sussillo@f...>
Subject: memory management, allocation and collection in kernel mode.


Est ce qu'il ya quelqun qui sait ce que j'ai besoin de changer dans le "   
 OCaml memory management system " pour que le "program" funcion bien dans   
le "kernel" mode?


Does anybody have an idea what would need to change in the OCaml memory   
management system in order for an OCaml program to function properly in   
kernel mode?  (Linux on a PII).  Linux has a physically mapped kernel   
space because it doesn' make much sense for a kernel to manage it's own   
virtual memory, so it just ignores the whole problem by ignoring virtual   
addressing.  What that means is one has to deal with a physical   
addressing scheme if one wants to run in kernel/system mode.

I've not looke at the OCaml sources at all, but I would assume that the   
memory management routines are assuming that whatever process they are   
running in is running in user mode.  At this point I don't understand the   
ramifications of this fact.

As far as I can tell, there are a couple of alternatives:
   a .   The allocation and GC routines might not even think about the   
difference between user mode and system mode at all since memory is   
segmented and each process is running in it's own address space. However,   
if one was to run these routines in the kernel, then it would be   
important to 'gel' with the way memory is allocated in a kernel, at the   
very least, an offset of something like 0xffff0000.
   b.    The allocation and GC rountines take full advantage of running   
in their own address space (and segment) and put memory all over the   
place.  In which case, one would be hard pressed to figure out how to   
make it work the memory management machinery work in kernel mode.

So then there are a few questions:
1.  Will someone point out to me where I might look in the compiler   
source for all of the memory management routines, allocataion and GC? I   
guess it's important to see how the compiler reasons about the memory   
requirements of OCaml structures, as well as the emitted code (or   
libraries?) that it using during runtime.

2. If anyone has any insight into the memory management ramifications of   
running an OCaml program in kernel mode, might they elucidate? As I'm   
just starting out, I'm interested in both general and specific remarks.