diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index 131b1c13..e04b66f6 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -18,6 +18,7 @@ * [四、内存管理](#四内存管理) * [虚拟内存](#虚拟内存) * [分页与分段](#分页与分段) + * [分页系统地址映射](#分页系统地址映射) * [页面置换算法](#页面置换算法) * [五、设备管理](#五设备管理) * [磁盘调度算法](#磁盘调度算法) @@ -714,6 +715,17 @@ Linux 中管道通过空文件实现。 - 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。 +## 分页系统地址映射 + +- 内存管理单元(MMU):管理着虚拟地址空间和物理内存的转换。 +- 页表(Page table):页(虚拟地址空间)和页框(物理内存空间)的映射表。例如下图中,页表的第 0 个表项为 010,表示第 0 个页映射到第 2 个页框。页表项的最后一位用来标记页是否在内存中。 + +下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。因此对于虚拟地址(0010 000000000100),前 4 位是用来存储页面号,而后 12 位存储在页中的偏移量。 + +(0010 000000000100)根据前 4 位得到页号为 2,读取表项内容为(110 1),它的前 3 为为页框号,最后 2 位表示该页在内存中。最后映射得到物理内存地址为(110 000000000100)。 + +

+ ## 页面置换算法 在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。 @@ -736,7 +748,7 @@ Linux 中管道通过空文件实现。 ### 2. 先进先出 -> FIFO +> FIFO, First In First Out 所选择换出的页面是最先进入的页面。 diff --git a/pics/cf4386a1-58c9-4eca-a17f-e12b1e9770eb.png b/pics/cf4386a1-58c9-4eca-a17f-e12b1e9770eb.png new file mode 100644 index 00000000..9b9f3838 Binary files /dev/null and b/pics/cf4386a1-58c9-4eca-a17f-e12b1e9770eb.png differ