From: Zachary G. <dra...@gm...> - 2008-08-05 10:38:49
|
In response to Sander: A valid point, regarding the reserved space. However, I was thinking that the drivers were also restricted to the upper 2GB with the kernel. Actually, this is the point where you guys tell me how you want to approach this separation of drivers thing. After all, sticking all the drivers into their own address space is not the way to go in my opinion. Minix does this and they suffer a 20% performance penalty in the process. I don't fully understand how Singularity does it, so, yeah. After all, the point of Singularity's design was to avoid that penalty. I talked to a friend of mine who has a better idea of how GCs work. Apparently GCs do not care whether their heaps are paged out or whether there's a lack of physical pages. It's entirely possible for it to try to sweep heaps that are completely paged out, causing performance issues and etc. Now granted the OS can provide ways of telling whether a page is in memory or not, there are other complications. Anyways, I don't expect some kind of global GC or something. I expect each appdomain to have its own. But since the 2GB range (or whatever it ends up being) for the application's personal usage is separate for each appdomain anyways, then what's the problem with shifting all responsibility to the GC and the managed heap? Again, that's all stuff that needs to be thought about. Forcing GC across the board really would be an act of desperation, to be honest. But we'll see. In response to Grover: Well, originally I was thinking about an all or nothing approach. But to be perfectly honest, appdomains sharing address spaces have almost nothing to do with the work I need to do in the lower levels. I'm just providing the ability to create address spaces for each appdomain. The MM provides the services and people implementing the higher level stuff can worry about keeping things straight. Correct me if there is something I need to take into consideration though. The stuff you suggested for basic functionality the MM provides through its interface will most likely be present for use by whatever is managing the heap. In Windows, the bootloader actually handles all of the mapping of the kernel into virtual memory using page tables. It's one reason grub can't natively boot Windows (the other being the registry). Freeloader, the ReactOS bootloader, actually would be capable of doing this too, but we'd need to write the code for it to understand the SharpOS kernel. |