day12|操作系统重难点之 虚拟内存、页面置换算法
- 32.讲一讲你理解的虚拟内存
- 33.有哪些页面置换算法
32.讲一讲你理解的虚拟内存
虚拟内存 是指在每一个进程创建加载的过程中,会分配一个连续的虚拟地址空间,它不是真实存在的,而是 映射到 对应的实际物理地址空间。这样可以使每个进程 看起来都有独立的连续地址空间,并允许程序访问 比物理内存RAM更大 的地址空间,也就是说,每个程序都认为 它拥有足够的内存 来运行
需要虚拟内存的原因:
- 第一个是 内存扩展:虚拟内存使得每个程序都可以使用 比实际可用内存更多 的内存,从而允许 运行更大的程序 或 处理更多的数据
- 第二个是 内存隔离:每个进程都有自己的 虚拟地址空间,因此一个进程无法直接访问另一个进程的内存
- 第三个是 物理内存管理:为了当前进程的需求,虚拟内存允许 操作系统 动态地将数据和程序加载到 物理内存中。当物理内存不足时,操作系统会将 不常用的数据或程序 暂时移到 硬盘上,从而释放内存,以供当前进程使用
- 第四个是 页面交换:页面交换就是 当物理内存不足时,操作系统会将一部分数据从 物理内存 写入 硬盘的虚拟内存中。当需要这些数据时,可以从 硬盘的虚拟内存 再次加载到 物理内存中。页面交换 可以保证即使物理内存有限,系统依然可以继续运行
- 第五个是 内存映射文件:虚拟内存 还可以将文件映射到内存中,使得文件的读写 像访问内存一样高效
33.有哪些页面置换算法
常见的页面置换算法有:先进先出(FIFO)、最近最久未使用算法(LRU)、最不经常使用算法(LFU)、时钟算法(Clock)、最佳置换算法(OPT)等
-
先进先出:就是最先进入内存的页面 最先被置换chuqu
-
最近最久未使用算法:LRU算法基于 页面使用的历史,通过选择 最长时间未被使用 的页面进行置换
-
最不经常使用算法:它会 考虑页面的访问频率,淘汰访问次数最少的页面
-
时钟算法:
-
Clock 算法的核心思想是 通过使用 时钟指针 遍历环形链表,来检查页面是否被访问过。
-
当需要进行 页面置换时,Clock算法 从时钟指针所指的位置 开始遍历环形链表。
- 如果当前页面的 访问位 是1,表示该页面 最近被访问过,仍处于活跃状态。然后将 访问位 置为0,继续遍历下一个页面。
- 如果当前页面的 访问位 是0,表示该页面 是最久未被访问的,可以选择进行置换。然后将 访问位 置为1,继续遍历
-
-
最佳置换算法:该算法根据未来的页面访问情况,选择最长时间内 不会被访问的页面 进行置换。但是 操作系统显然并不知道 未来要访问什么页面,所以这种算法只是 理想状态下 的置换算法,通常无法实现