高速缓存的副作用(不管是硬件或其他方式的)在于 Linux 必须花大量时间和空间来维护这些高速缓存区,如果这些高速缓存区崩溃,系统也会崩溃。
3.3 Linux Page Tables ( Linux 页表)
Linux 假定了三级页表。访问的每一个页表包括了下一级页表的页编号。图 3.3 显示了一个虚拟地址如何分为一系列字段:每一个字段提供了在一个页表中的偏移量。为了将虚拟地址转换为物理地址,处理器必须取得每一级字段的内容,转换为包括该页表的物理页内的偏移,然后读取下一级页表的页编号。重复三次直到包括虚拟地址的物理地址的页编号找到为止。然后用虚拟地址中的最后一个字段:字节偏移量,在页内查找数据。
Linux 运行的每一个平台都必须提供转换宏,让核心处理特定进程的页表。这样,核心不需要知道页表条目的具体结构或者如何组织。通过这种方式, < Linux 成功地使用了相同的页表处理程序用于 < Alpha 和 Intel x86 处理器,其中 < Alpha 使用三级页表,而 < Intel 使用二级页表。