不过,对于那些在大量进程在运行的系统来说,将页表存储到高端内存中可以在低端内存区域挤出更多的内存。
However, for systems in which a large number of processes are running, storing page tables in high memory can be enabled to squeeze more memory out of the low memory area.
对于每个正在运行的进程,虚拟地址与物理地址之间的映射是在一个称作页表的数据结构中维护的。
For each running process, the mapping between virtual and physical address is maintained in a data structure called the page table.
作为代价,使用这些页表条目的进程会稍微慢一些。
In exchange, the process of using these page-table entries is somewhat slower.
它具有一个集成的内存管理单元,通常使用与PPE类似的页表查询机制来提供对某个进程地址空间的访问。
It has an integrated memory management unit that is normally used to provide access to the address space of one process by using the same page table lookup as the PPE.
在这种情况下,每个映射到同一块1GB内存的进程将为页表条目付出自己2MB的代价。
In such a situation, every process mapping that same 1 GB of memory would consume its own 2 MB worth of page-table entries.
由于每个页都要由每个进程映射,必须创建页表条目来将虚拟地址映射到物理地址。
For every page mapped by each process, page-table entries must also be created to map the virtual address to the physical address.
然而数据页之间还是有一定的关联:每个表空间将被指定给一个单独负责处理该表空间中所有数据的进程。
There is however one level of association: each table space will be assigned to one process that is solely responsible for processing all the data in that table space.
不过,在它们可以被交换出去之前,必须找到映射那个页的每一个进程,这样那些进程中相应页的页表条目才可以被更新。
However, before they can be swapped out, every single process mapping that page must be found so that the page-table entry for the page in that process can be updated.
每个进程有着属于自己的页表,不过进程也不能随心所欲。
Each process has its own set of page tables, but there is a catch.
注意这里的显示,进程可能有一个大的地址空间,但是很少见,就是说小的地址空间的区域(页面)通过页表指向物理内存。
Note that as shown here, a process may have a large address space, but it is sparse, meaning that small regions (pages) of the address space refer to physical memory through the page tables.
在Linux 2.4内核中,这是一项令人生畏的任务,因为为了确定某个页是否被某个进程映射,必须遍历每个进程的页表。
In the Linux 2.4 kernel, this can be a daunting task as the page tables for every process must be traversed in order to determine whether or not the page is mapped by that process.
在Linux内存管理器中,页表保持对进程使用的内存物理页的追踪,它们将虚拟页映射到物理页。
In the Linux memory manager, page tables keep track of the physical pages of memory that are used by a process, and they map the virtual pages to the physical pages.
如果您的一个进程要使用4KB的页来映射1GB内存,这将用到262,144个页表条目来保持对那些页的追踪。
If you have a process that maps 1 GB of memory with 4 KB pages, it would take 262,144 page-table entries to keep track of those pages.
在这个新的startup_ 32函数(也称为清除程序或进程0)中,会对页表进行初始化,并启用内存分页功能。
In the new startup_32 function (also called the swapper or process 0), the page tables are initialized and memory paging is enabled.
由于大部分进程的虚拟地址空间大而散,页表入口只能定位在实际使用的那部分地址空间上。
Because the virtual address Spaces of most processes are both large and sparse, page table entries are only allocated for the portions of the address space that are actually used.
每个进程都有它自己的一组页表,但这里有一个问题。
Each process has its own set of page tables, but there is a catch.
每个进程都有自己的一套页表,但有一个陷阱。
Each process has its own set of page tables, but there is a catch.
每个进程都有自己的一套页表,但有一个陷阱。
Each process has its own set of page tables, but there is a catch.
应用推荐