分页式虚拟内存管理及Linux实现
p gO a e 调用d _ n n mo sp g 0 o a o y u _ a e 函数 ,获得一个新 的
页面。
3 、物理内存分配与回收 。在L n x i u 中,虚存区 间的分配在 前 ,物理页面 的分 配在后 。随着用户程序 的执行和结束 ,系统
个页可以映射到一个页帧 nr
换机构 。但是现在计算机使用的虚拟地址一般是3 位的 ,而且 大小相等且物理地址连续的两个块合并为一个块。 2
每次访 问内存都要进行地址转换 ,这将 严重影响 系统效率。现
表 等解决上述问题 。
4 、交换机 制 。物 理页面 的换入换 出主要过程 如下 ,其 中 释放 页面 。如 果一 个页 面变 为空 闲可 用 ,就把 该 页面 的
实中使用T B ( a s t n o k s e ufr L Trn l i L o ai B f )以及三级页 涉 及 Ln x中的 p g 结 构 ¥fe_ ra 构 。 ao d e iu ae [reae 结 1
2 、请求页面调度。 虚拟 内存管理 中,进程驻 留在次级存 p g 结构链入某个空 闲队 ̄ f e_ r a ae lr ea e ,同时页面的使用计数
P TE)包含有与主存中的页相对应的帧号 ,对应 的页是否在主 不断地分配和释放物理页面 ,这导致 在已分配的 内存块中分散
存中的存在位 ( P),页的 内容从上次装入至今是 否改变的修 着许多小的空 闲页面 ,即外碎片。外碎片 无法满足大块连续页
改 () 图 如 : 位 M 。 示 下
T r— — _ 磊_ ] i —
绍 其实 现 。
一
映射 了一个磁盘文件 ,n p g 域指向执行从磁盘读 入操 作的 o ae
函数 ;若 n p g 域 为 空 ,虚 存 区 没 有 映 射 磁 盘 文 件 。 因 此 , o ae
d_ o on
_
.
实现 过 程
1 、地 址转换 。在分页式 虚拟内存管 理系统 中 ,虚拟地 址 空间划分成许多页,页是一段连续的虚拟地址空 间。相应的 , 物理 内存空间也划分成多个页帧。页和 页帧的大小是相同的 ,
被取入 内存时 ,根据局部性原理 ,在一 段时 间后错误会逐渐平 内存页面 ,将页面的使用计数c u t o n 置为 1 。
活跃状态 。已分 配的页面 处于活跃状态 ,该页面 的数 据结 3 、页面置换算 法。在进程 运行过程 中 ,若其 所要访 问的 构p g  ̄过其队列头结构l ae m链入活跃页面队 ̄at elt ici _ s,并在 l v i 页面不在内存而需把 它们调入内存 ,但 内存无空闲空间时 ,系 进程地址空间中至少有一个页 与该页面之间建立 了映射关系。 统必须从内存中调 出一页程序或数据 ,送磁盘的对换区中。页 总结 :操作系统 中的虚拟 存储 技术是当今计算机领域 的热 面置换算法 (a e R pae n g r h )确定将哪个 页 点之一 。它的优劣直接影 响到计算机的性能的好坏。Li u 是 P g — e lcme t Aloi ms t n x 面调 出。 个功能 强大 的实际的操作系统 ,每个技术环节都有其 自身的
储器。当访问到某页中的一个单元时才将该 页取入 内存。当一 cu t 1 o n减 。 个进程第一次启动时 ,会 出现大量的页错误 ,当越来越多的页 息下来 ,页错误 的数 目会降的很低。
分 配 页 面 。调 用 在  ̄ g tfe _ a e 从 某 个 空 闲队 列 分 配 e_ r ep g 0
分 配 与 回收 和 交 换 机 制 等 。
关键词 :内存 1分 页;虚拟 ;L n x iu
中图分类号 :T 3 P
文献标识码 :A
文章编号 :10 - 1 7( 0 0 1 0 6- 1 0 6 4 1 2 1 )0 - 0 4 0
现 代大多数计算机 操作系统 由于 内存空 间的限制 ,都采用 其地址转换与前述类似。
学术探讨
20年 l月 09 2
分页式虚拟 内存管理及L u 实现 ix n
文/ 呙 李
摘 要 :本文 分析 了操作 系统 的页式虚拟存储 管理机制 ,并结合 当前支持 多平 台的Ln x 作 系统 ,根据 其中虚拟存储 的特 iu 操
点,详细分析 了在L n x iu 系统下的页式 内存虚拟 实现 ,重点指 出了L n x iu 所独特 的具体 实现过程 ,其中包括请 页机 制 ,物理 内存
面的分配要求 。为此 ,L n x i u 采用伙伴 ( u d )算法来解决 b dy
外碎片问题 。它把所有的空闲页面分 为1个块组 ,每组中块 的 0
为 了将 逻 辑 地 址 转 换 成 物 理 地 址 , 系统 中 必须 设 置 地 址 变 大小是2 个页面 ,且把 同样大小的块 形成一个 链表 。然后把 n
了虚拟 内存空间管理的方法。虚拟存储管理器通过在辅存中建 2 、Li UX 页机制 。在Li H n 请 n X中 ,当一个进程执行时 , 立一个虚拟地址空 间,提供了一个物理存储器的抽象 ,并且在 如果CPU访问到一个有 效的虚地址 ,但是 这个地址对应 的页 任意时刻 “ 自动地”确定哪部分地址空 间被加载在内存中 ,系 不在内存 ,则CPU产生一个缺页异 常 ,并将这个虚地址存入 统处理在内存和辅存之 间地址空间块 的来回传送 ,而无须人工 C 存储器 ,然后调用缺页异常处理程序d _ a e ut R2 op gJa l O 干预 。现在大部分的虚拟 内存系统都采 用了分页式虚拟内存管 有两 种方 法装 入所 缺的 页 ,取 决于 此页 是否 与磁盘 文件 理。提高其管理性能可增强计算机 的运行速率和工作效率。本 建立 了映射关系 。可以调用do n 一 g (函数检查虚存 区描 _ 0 pa e) 文即介绍分页式虚拟 内存管理的过程并结合L n x i u 操作系统 介 述符的no a e p g 域来确定这一 点。若n p g 域不为空 ,说 明 o a e
操作系统中虚拟内存的管理
操作系统中虚拟内存的管理在使用操作系统时,我们经常会涉及到虚拟内存的概念。
虚拟内存是一种通过硬盘来扩展计算机的物理内存,让计算机看起来拥有更多的内存空间,从而提升计算机的运行效率。
虚拟内存的管理是操作系统中非常重要的一部分,下面就来介绍一下操作系统中虚拟内存的管理。
一、内存分页内存分页是指将整个物理内存分成多个大小相同的分页,每个分页的大小通常为4KB或8KB。
然后将每个进程的虚拟内存也分成多个相同大小的虚拟页面,每个虚拟页面映射到一个物理页面。
这样一来,进程就可以按照页面单位来管理内存。
当进程访问一个虚拟页面时,操作系统会根据虚拟页面的映射关系,将其转换为物理页面并读取其内容。
如果虚拟页面没有被映射到物理页面,那么操作系统就需要将一个空闲的物理页面映射到该虚拟页面上,并将其内容从硬盘中读取进来。
二、页面置换随着进程的运行,部分物理页面会被频繁使用,而另一部分页面则很少使用甚至没有使用过。
为了更好地利用内存空间,操作系统需要对页面进行置换。
页面置换算法的目标是在物理页面不足时,寻找最适合置换出去的物理页面,并将其替换成要使用的新页面。
常见的页面置换算法有FIFO、LRU、Clock和Random等。
其中,FIFO算法是按照物理页面被加载的时间顺序来置换的,即最先加载进来的页面最先被置换出去。
LRU算法则是按照物理页面最近被使用的时间顺序来置换的。
这样,被最少使用的页面就会被优先置换出去,从而留出更多的页面空间给新页面使用。
三、页面缓存为了提高读取速度,操作系统会将最近使用的物理页面缓存到内存缓存区中,以便下一次访问时能够更快地读取。
而当物理页面不足时,操作系统也会优先将内存缓存区中的页面置换出去,以腾出空间给其他页面使用。
四、页面共享有些进程可能会需要共享同一个物理页面,以节省内存空间并提高系统性能。
比如多个进程在同时运行相同的程序时,它们所使用的代码部分可以共享同一个物理页面,减少了内存开销。
linux下虚拟内存如何设置
linux下虚拟内存如何设置Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。
Linux存在着许多不同的Linux版本,但它们都使用了Linux 内核。
下面是店铺带来的关于linux下虚拟内存如何设置的内容,欢迎阅读!linux下虚拟内存如何设置:swap空间就是虚拟内存,在物理内存不足时,有较大的用处。
查看内存空间大小:free -m // m表示显示的字节单位是m(megabytes)下面我们就来增加系统的 Swap 大小。
1.首先用命令free查看系统内 Swap 分区大小。
free -mtotal used free shared buffers cachedMem: 1002 964 38 0 21 410-/+ buffers/cache: 532 470Swap: 951 32 929可以看到 Swap 只有951M,不符合 Oracle-xe-client 的安装要求。
2.创建一个 Swap 文件。
mkdir swapcd swapsudo dd if=/dev/zero of=swapfile bs=1024 count=100000 出现下列提示,上面命令中的 count 即代表swap文件大小。
记录了 100000+0 的读入记录了 100000+0 的写出102400000 字节 (102 MB) 已复制,0.74704 秒,137 MB/秒把生成的文件转换成 Swap 文件sudo mkswap swapfileSetting up swapspace version 1, size = 102395 kBno label, UUID=09fde987-5567-498a-a60b-477e302a988b3.激活 Swap 文件。
sudo swapon swapfile再次查看 free -m 的结果。
total used free shared buffers cachedMem: 1002 967 34 0 22 410-/+ buffers/cache: 534 467Swap: 1053 32 1021添加成功。
虚拟存储器的实现方法
虚拟存储器的实现方法
虚拟存储器是操作系统中的一个重要概念,用于扩展计算机的物理内存。
虚拟存储器的实现方法可以基于以下几种技术:
1. 分页机制:将物理内存和虚拟内存划分为固定大小的页,并将虚拟内存中的页面映射到物理内存中的页。
通过页面替换算法(如最近最久未使用算法)将虚拟内存中的页面从磁盘中加载到物理内存中的空闲页面,从而实现虚拟内存的扩展。
2. 分段机制:将程序按照逻辑结构划分为不同的段,每个段有不同的长度,可以动态地加载到物理内存中。
通过段表将虚拟内存中的段映射到物理内存中的段,并根据需要进行加载和替换。
3. 页面置换算法:虚拟存储器在物理内存空间不足时,需要选择一些页面置换出物理内存,从而将新的页面加载进来。
常见的页面置换算法包括FIFO(先进先出)、LRU(最近最久未
使用)、LFU(最不经常使用)等。
4. 页面回写机制:当页面被替换出物理内存时,如果其中的数据已被修改,需要将数据回写到磁盘中,以保持数据的一致性。
5. 页面预调度机制:根据程序运行的局部性原理,预测将来可能访问的页面,并提前将这些页面加载到物理内存中,减少缺页异常的发生。
需要注意的是,虚拟存储器的实现方法是操作系统的核心功能
之一,具体的实现方式会受到硬件架构、操作系统设计等多个因素的影响。
不同的操作系统可能会采用不同的实现方法来满足自身的需求。
虚拟内存的设置
虚拟内存的设置引言:在计算机系统中,虚拟内存是一种用于管理计算机内存的技术。
它将硬盘上的一部分空间用作内存的扩展,允许计算机运行更大的程序或处理更多的数据。
而虚拟内存的设置在计算机性能和系统稳定性方面起着至关重要的作用。
本文将探讨虚拟内存的设置原理、影响以及优化方法。
一、虚拟内存的设置原理虚拟内存是基于分页机制实现的。
操作系统将物理内存划分为固定大小的单元,称为页面。
当系统执行一个程序时,它将程序的一部分加载到物理内存中的页面上。
当程序需要更多的内存空间时,如果物理内存不足,系统会将不常用的页面置换到硬盘上的虚拟内存中,从而释放物理内存供其他程序使用。
这样,系统就可以运行比实际物理内存大小更大的程序了。
二、虚拟内存的设置影响正确设置虚拟内存的大小可以显著提升计算机性能和系统的稳定性。
以下是虚拟内存设置的几个关键因素:1. 初始大小:系统在启动时分配给虚拟内存的初始存储空间大小。
如果初始大小设置过小,系统可能不足以支持运行大型程序或处理大规模数据时的内存需求。
因此,合理设置初始大小非常重要。
2. 最大大小:虚拟内存的最大存储空间大小。
如果设置过小,在系统运行过程中可能会导致内存不足的情况,从而影响系统的正常运行。
而如果设置过大,会占用过多的硬盘空间。
因此,需要根据计算机具体配置和应用需求合理设置最大大小。
3. 页面大小:操作系统将物理内存划分为页面的大小。
页面大小的选择可能会影响程序的性能。
大页面大小有助于提高程序的访问速度,但也会消耗更多的物理内存。
小页面大小则可以提高页面的利用率。
选择页面大小需要权衡计算机硬件能力和应用场景。
三、优化虚拟内存的设置对于大多数用户来说,操作系统在安装时会自动设置虚拟内存的默认值,但用户仍然可以根据自己的需求进行优化。
1. 调整虚拟内存大小:根据计算机的实际应用需求,可以适当调整虚拟内存的初始大小和最大大小。
建议将初始大小设置为物理内存的1.5倍,并将最大大小设置为物理内存的3倍。
操作系统中的虚拟内存管理
操作系统中的虚拟内存管理随着计算机硬件技术的不断发展,现代计算机的内存容量也越来越大,一些具有相对较小内存容量的计算机系统或者应用程序仍然可以运行,主要归功于操作系统中的虚拟内存管理。
虚拟内存管理是指操作系统把主存空间和辅助存储器空间组成一个虚拟的内存空间,并在其中运行用户进程。
为了实现这种虚拟的内存空间,同时满足用户进程运行所需的空间和页表管理等需求,操作系统提供了一些必要的技术,其中包括分页和分段等技术。
分页技术分页技术是将虚拟内存和物理内存分为固定大小的块(称为页)来管理的一种技术。
每个进程都有一个页表,页表记录的是虚拟内存地址和物理地址的映射关系,而操作系统会将虚拟地址映射到物理地址来实现虚拟内存管理。
当进程需要访问一个虚拟地址时,操作系统会将这个虚拟地址转化为一个物理地址,然后将数据读取到内存中。
虚拟内存空间的页可以随时载入、释放。
当进程运行时,由于内存的容量有限,有些页可能会被置于辅助存储器(通常是硬盘)中。
当进程需要访问这些页面时,它们将被从辅助存储器中载入进程的虚拟内存中。
这样做的好处在于操作系统可以将虚拟内存空间映射到不同的物理内存位置,从而实现更好的内存管理。
此外,它还可以提高进程的安全性,因为进程无法访问不属于自己的物理内存。
分段技术分段技术是将虚拟内存和物理内存分为若干不同的段来管理的一种技术。
与分页不同的是,分段技术是以段为单位而不是页为单位来管理的。
例如,代码段、数据段、栈段等,在每个段之间都有一个段间隔。
每个进程都有一个描述符表,这个表记录了各个段的位置信息和权限,当进程访问一个段时,操作系统会根据描述符表中的信息来寻找物理地址并设置段间隔。
和分页技术相比,分段技术保护机制更好。
由于每个段都有各自的权限信息,因此进程不能越界访问其他段。
此外,分段技术还可以实现连续段内存的分配和释放,而不需要像分页一样需要进行页表的调整。
反向映射表在虚拟内存管理中,还有一个非常重要的概念是反向映射表。
实验8Linux的内存管理
内存管理的概念
内存管理的定义
内存管理是指操作系统对计算机内存 资源的分配、回收、保护和扩充等一 系列操作,以确保系统高效、稳定地 运行。
内存管理的目标
提高内存利用率,减少内存碎片,实 现多任务环境下的内存共享和保护, 以及提供虚拟内存等。
Linux内存管理的特点
分段和分页机制
Linux采用分段和分页机制来管理内存,将物理内 存划分为大小相等的页框,同时将进程地址空间 划分为多个段,每个段对应一个页表项,实现地 址空间的隔离和权限控制。
。
03 通过实验操作和观察,加深对Linux内存管理的 理解和认识。
实验环境
操作系统
Linux(建议使用Ubuntu或CentOS等常见发行版 )
开发工具
GCC编译器、GDB调试器、Valgrind内存检测工 具等。
实验材料
一台配置有Linux操作系统的计算机,具备基本的 编程和调试能力。
02
Linux内存管理概述
VS
共享内存的实现方式
在Linux中,共享内存可以通过shmget() 、shmat()和shmdt()等系统调用来实现 。首先,使用shmget()函数创建一个共 享内存段;然后,使用shmat()函数将共 享内存段连接到当前进程的地址空间;最 后,使用shmdt()函数将共享内存段从当 前进程的地址空间中分离。
06
内存优化与性能提升
内存泄漏问题及其解决方案
内存泄漏定义
内存泄漏是指程序在申请内存后,未能正确释放,导致系统内存逐 渐耗尽的现象。
检测工具
使用Valgrind等内存检测工具,可以检测程序中的内存泄漏问题。
解决方案
及时释放不再使用的内存,避免不必要的内存申请,采用智能指针等 RAII技术来管理内存。
操作系统课程设计-虚拟页式存储管理系统的实现
课程设计课程设计名称:计算机操作系统专业班级:计算机科学与技术学生姓名:学号:指导教师:课程设计时间:操作系统专业课程设计任务书说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页目录一、设计目的为了掌握Linux环境下常用编译工具如gcc/g++/nasm及开源虚拟机bochs 的下载、安装、使用,掌握x86架构下分页式存储管理系统的基本原理,设计一个请求分页式虚拟存储系统。
掌握Linux系统下程序的编写及运行等方面展开实验。
二、设计要求2.1要求熟练掌握sudo apt-get install的用法。
2.2要求能够掌握分页存储管理系统的基本原理。
2.3要求学会在Linux系统下编写程序、执行程序。
三、设计内容3.1运行环境3.1.1虚拟机系统下3.1.2使用Ubuntu下提供的apt-get软件包安装工具安装vim、 g++ 、nasm 、bochs等3.2 2.详细设计1)回顾虚拟页式存储系统:作业分页,内存分块,只有当进程要使请认真阅读readme.txt文件,弄清楚各个文件的作用2)用其虚拟内存时,其对应的数据才装入物理内存。
3)完成frame_pool.H 、frame_pool.C 、page_table.C三个文件,其中page_table.H已经提供,我们需要添加page_table.C,自己设计并实现这些函数。
4)在frame_pool.H定义所需要的数据结构,在frame_pool.C完成这些函数。
添加代码如下所示:class FramePool {private: unsigned long base_frame_no; unsigned long nframes;unsigned long info_frame_no; unsigned char* free_frames;public:static const unsigned char USED -1;static const unsigned char UNUSED -0;static const unsigned int FRAME_SIZE -4096;public:FramePool(unsigned long _base_frame_no,unsigned long_nframes,unsigned long _info_frame_no);5)建立Frame_pool.C文件系统中使用位示图bitmap标识页面是否使用,start_frame表示第一个页面的起始地址(如系统内存池从2M开始),pool_size表示在用户池中页框的总数(如系统内存池的页框从2M~4M,因此共有(4M-2M)/4KB=512个页框)。
分页存储管理的概念和原理
分页存储管理的概念和原理
分页存储管理是一种内存管理技术,用于将主存(RAM)划分成等大小的固定块,每个块称为页,然后将进程的虚拟地址空间划分成相同大小的页框,每个页框称为帧。
通过这种方式,将进程的虚拟地址空间划分成许多固定大小的逻辑块,实现了对内存的分页管理。
分页存储管理的原理如下:
1. 将进程的虚拟地址空间划分成大小相等的页。
2. 主存也被划分成与页大小相等的物理块(页框)。
3. 当进程请求访问一个虚拟地址时,操作系统将虚拟地址划分成页号和页内偏移量。
4. 通过查找进程的页表,得到虚拟页号对应的物理页框号。
5. 最后,通过将页框号与页内偏移量相加,得到物理地址,进而访问主存中的数据。
分页存储管理的优点包括:
1. 提高了主存的利用率:通过将进程的虚拟地址空间划分成固定大小的页,可以更好地利用主存空间。
2. 简化了内存分配管理:页的大小固定,可以更方便地分配和回收内存。
3. 实现了虚拟内存:利用页面置换算法,可以将不常用的页置换到辅存(例如硬盘)中,从而实现了虚拟内存。
然而,分页存储管理也存在一些缺点:
1. 内部碎片:当进程的实际内存需求小于一个页面大小时,会导致内存浪费。
2. 外部碎片:随着进程的加载和卸载,分配给进程的虚拟地址空间可能会出现不连续的内存块,导致外部碎片的产生。
总的来说,分页存储管理通过将进程的虚拟地址空间和主存划分成等大小的页和页框,提高了主存的利用率,并实现了虚拟内存的概念,但也会带来一定的内部碎片和外部碎片问题。
操作系统实验-存储管理
操作系统实验-存储管理操作系统实验-存储管理1、引言1.1 概述在操作系统中,存储管理是一个关键的任务。
它负责将程序和数据加载到内存中,管理内存的分配和回收,并确保不同进程之间的内存互不干扰。
本实验旨在深入了解并实践存储管理的相关概念和算法。
1.2 目的本实验的目的是让学生通过实际操作,了解存储管理的基本原理和常用算法,包括分页、分段和虚拟内存等。
通过实验,学生将学会如何实现内存分配和回收,以及处理内存碎片等问题。
1.3 实验环境- 操作系统:Windows、Linux、MacOS等- 编程语言:C、C++等2、实验步骤2.1 实验准备- 安装相应的开发环境和工具- 创建一个空白的项目文件夹,用于存放实验代码和相关文件2.2 实验一、分页存储管理- 理解分页存储管理的概念和原理- 实现一个简单的分页存储管理系统- 设计测试用例,验证分页存储管理的正确性和有效性2.3 实验二、分段存储管理- 理解分段存储管理的概念和原理- 实现一个简单的分段存储管理系统- 设计测试用例,验证分段存储管理的正确性和有效性2.4 实验三、虚拟存储管理- 理解虚拟存储管理的概念和原理- 实现一个简单的虚拟存储管理系统- 设计测试用例,验证虚拟存储管理的正确性和有效性3、实验结果分析3.1 分页存储管理结果分析- 分析分页存储管理系统的性能优缺点- 比较不同页面大小对系统性能的影响3.2 分段存储管理结果分析- 分析分段存储管理系统的性能优缺点- 比较不同段大小对系统性能的影响3.3 虚拟存储管理结果分析- 分析虚拟存储管理系统的性能优缺点- 比较不同页面置换算法对系统性能的影响4、总结与展望4.1 实验总结- 总结本次实验的收获和体会- 分析实验中遇到的问题和解决方法4.2 实验展望- 探讨存储管理领域的未来发展方向- 提出对本实验的改进意见和建议附件:无法律名词及注释:- 存储管理:操作系统中负责管理内存的任务,包括内存分配、回收和管理等功能。
段页式虚拟存储管理的实现原理
段页式虚拟存储管理的实现原理咱们先来说说为啥要有这个段页式虚拟存储管理呀。
你想啊,计算机的内存就那么大,但是程序和数据那可是越来越多,就像你有个小房间,东西却不断地增加,怎么办呢?这就需要一种聪明的管理办法啦。
那这个段页式是咋回事呢?它呀,是把程序的地址空间分成段,然后每一段呢又分成好多页。
这就像是把你的大堆东西先分成几大类,然后每一类再分成一个个小包裹一样。
比如说,你可以把游戏程序当成一个段,办公软件当成一个段。
然后游戏程序这个段里面呢,又可以分成好多页,像游戏的画面渲染部分是一页,游戏的声音处理部分是一页。
在这个段页式虚拟存储管理里,有个很重要的东西叫段表和页表。
段表就像是一个大管家,它记录着每个段在内存里的起始位置呀,段的长度这些重要信息。
页表呢,就像是段里面的小管家,它负责记录每一页在内存里的位置等情况。
当程序要访问某个地址的时候,就像是你要找某个小物件一样。
首先呢,系统会根据段号去查段表,找到这个段在内存里的大概位置,这就好比你先找到这个东西所在的那一大类在房间里的哪个角落。
然后呢,再根据段里面的页号去查页表,这样就能准确地找到你要的那个数据或者指令啦,就像在那一大类里面找到那个具体的小包裹一样。
要是内存里没有这个页怎么办呢?这时候就会发生缺页中断。
这就像你要找的小包裹不在房间里,那怎么办呢?系统就会从外存(比如硬盘)把这个页调入内存。
这个过程就有点像你去仓库(外存)把东西拿进房间(内存)。
而且呀,为了提高效率,系统还会有一些替换算法。
比如说,要是内存满了,要调入新的页,就得把内存里现有的某个页替换出去。
这就像房间满了,要放新东西就得把旧东西挪个地方一样。
有像先进先出(FIFO)这种算法,就像先放进房间的东西先被挪走;还有最近最少使用(LRU)算法,就像很久都没用到的东西就先被替换出去。
在段页式虚拟存储管理里,还有个好处就是它的灵活性。
它既可以按照段来进行共享和保护,又可以按照页来进行内存的分配和管理。
