You may still want a logical mapping of some memory to some other addresses. Personally, while I have a linear mapping at 0xfff8'0000'0000'0000, it only extends up to 0xfffb'ffff'fffff'ffff, and the rest of virtual space still needs management. My kernel runs at the -2GB line, so that part is taken care of. Also, I want to have a contiguous kernel heap independent of memory fragmentation in physical RAM. I mean, I don't anticipate needing any large objects, but you never know. And maybe in future some other need will arise.
Managing memory directly on top of physical RAM runs into the issue that you are tied directly to its fragmentation. At work, I once had a problem with that. On a system with very little RAM and no virtual memory, the only memory blocks left free were 2MB in one place and 3MB in another. So naturally, a request for 4MB failed. Although enough RAM would have been free to fulfill the request, it was not contiguous, and the system had no way to make it appear contiguous.
_________________ Carpe diem!
|