diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index e23543fc..02b222bf 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -637,15 +637,19 @@ void philosopher(int i) { ## 虚拟内存 -每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。 - -当程序引用到一部分不在物理内存中的地址空间时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。 +每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到一部分不在物理内存中的地址空间时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。 ## 分页与分段 ### 1. 分页 -用户程序的地址空间被划分为若干固定大小的区域,称为页。相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配,由一个页表来维护它们之间的映射关系。 +大部分虚拟内存系统都使用分页技术。把由程序产生的地址称为虚拟地址,它们构成了一个虚拟地址空间。例如有一台计算机可以产生 16 位地址,它的虚拟地址空间为 0\~64K,然而状态计算机只有 32KB 的物理内存。因此虽然可以编写 64KB 的程序,但它们不能被完全调入内存运行。 + +