From: Kasper V. L. <ve...@da...> - 2000-02-28 11:23:57
|
Adam Langley wrote: > I know it's aginst the principles of exokernels... but why put the disk server > in a seperate process? It's going to have to be a secure server (which > applications can't overright) so why not put it in the kernel? Putting it in > a process only gives us more context switches. Are there any reasons for > a server. I guess it's easier to replace, but we could have kernel modules. It's not necessarily true that we'll have more context switches by using a separate process for the disk block server. Jochen Liedtke has proposed mapping any commonly used servers into all address spaces (just as the kernel is) and protecting them by means of segmentation. Imagine having the following layout: 0 - 256 Mb : Kernel and kernel accessible physical memory 256 Mb - 3Gb : Application Virtual Memory 3Gb - 4Gb : Shared mapping of servers The datasegment of the applications should have a base of 0 and a limit of 3Gb. It would be impossible to access memory in the shared servers. The benefits of this approach are that we can dynamically - and quite easily - modify the set of processes that are mapped into the shared section based on communication patterns, and that the processes are still 100% separated by the hardware MMU. This means that any unfortunate mishaps in the processes will never (at least not directly) affect other processes. It's probably easier to allow access to the disk block server from other machines (thereby allowing some kind of distribution) if it's implemented as a separate process. Debugging kernel code is also much harder that traditional application code. Let's not put the disk block server in the kernel! :-) /Kasper -- ------------------------------------------------------------------- Kasper Verdich Lund, Computer Science Department, Aarhus University Office: 34P.218 | Phone: (+45) 8942 5680 Email: ve...@da... | WWW: http://www.daimi.au.dk/~verdich |