Pype.Clicker wrote:
that's okay enough for userspace. in kernel space, we usually have slabs and the like providing similar "constant-time" allocation out of pre-sliced chunks. I have network processing in mind: you need a new buffer for each packet you receive, and you usually release that buffer everytime the packet has been fully processed.
Letting the GC do its business here might require a too high priority when network gets more busy ... At least, if i was in charge, i'd be using my own pool of buffer here even in a language that supports garbage collection ...
These may be among the reasons that Singularity implements all its drivers in separate processes (I can't really say "user mode", because the entire system actually runs in ring 0, but the processes are isolated via type safety and separate GCs).
<edit>
Doh, didn't see Rob's reply. :-[
@Rob:
Yes, I'm really interested in Singularity. I read their technical report and watched the interviews on Channel 9. It's so different than other OSes I've studied -- that's what makes it fascinating.
I actually am working on my own OS, but not lately, as work has become extremely busy.