|
第一个问题:
=====================================
书上说:WinCE创造一个独立的被所有程序共享的4GB虚拟地址空间。
还有一些零碎的文字:
(1)WinCE为所有的应用程序实现了单独的2GB的虚拟地址空间。
(2)稍微有超过一半的虚拟地址空间被分成33个32MB大小的“槽”。
(3)虽然所有程序共享单一地址空间,应用程序仍然可避免相互误用。
(4)WinCE通过改变每页的保护来保护程序内存。
之前曾经看过一些LINUX内存管理的书籍,原理差不多是相似的。
LINUX为每个进程提供4GB的虚拟地址空间,其中,0-3GB是用户空间而高1GB是内核空间。
OS为每个进程分配一个PCB,而这个PCB中有个重要的结构块就是VMA = Virtual Memory Area。VMA中有一个地址映射表提供给硬件MMU使用。应用程序中所使用的地址,并不是真正的物理地址,而是要经过MMU映射得到的虚拟地址。OS为每个进程分配了一个地址映射表,因此每个进程都可以享有3GB+1GB的地址空间。Wince同理。 |
|