第18章 分页:介绍
我们的挑战是:如何通过页来实现虚拟内存?从而避免分段的问题?基本技术是什么?如何让这些技术运行良好,并尽可能减少空间和时间开销?
18.1 一个简单例子
为了记录地址空间的每个虚拟页放在物理内存中的位置,操作系统通常为每个进程保存一个数据结构,称为页表。页表的主要作用是为地址空间的每个虚拟页面保存地址转换,从而让我们知道每个页在物理内存中的位置。
18.2 页表存在哪里
18.3 页表中究竟有什么
页表就是一种数据结构,用于将虚拟地址映射到物理地址,因此,任何数据结构都可以采用。
有效位,保护位,存在位,参考位。
18.4 分页:也很慢
如果不仔细设计硬件和软件,页表会导致系统运行速度过慢,并占用太多内存。
18.5 内存追踪
补充:数据结构——页表
现代操作系统的内存管理子系统中最重要的数据结构之一就是页表(page table)。通常,页表存储虚拟—物理地址转换(virtual-to-physical address translation),从而让系统知道地址空间的每个页实际驻留在物理内存中的哪个位置。由于每个地址空间都需要这种转换,因此一般来说,系统中每个进程都有一个页表。页表的确切结构要么由硬件(旧系统)确定,要么由 OS(现代系统)更灵活地管理。
18.6 小结
我们已经引入了分页的概念,作为虚拟内存挑战的解决方案。与以前的方法(如分段)相比,分页有许多优点:
- 首先,它不会导致外部碎片,因为分页将内存划分为固定大小的单元。
- 其次,它非常灵活,支持稀疏虚拟地址空间。
然而,实现分页支持而不小心考虑,会导致较慢的机器(有许多额外的内存访问来访问页表)和内存浪费(内存被页表塞满而不是有用的应用程序数据)。因此,我们不得不努力想出一个分页系统,它不仅可以工作,而且工作得很好。幸运的是,接下来的两章将告诉我们如何去做。
“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情”