操作系统原理之内存管理2-内存分页、内存分段及虚拟内存

文章目录

  • 分页内存管理
  • 分段内存管理
  • 信息共享
  • 段页式内存管理
  • 虚拟内存
  • 虚拟内存和交换内存的异同

连续分配方式会形成许多“碎片”,虽然可通过“紧凑”等方法将许多碎片拼接成大块空间,但须为之付出很大开销。如果允许将一个进程直接分散地装入到许多不相邻接的分区中,该问题便可解决。
基于这一思想而产生了离散分配方式。如果离散分配的基本单位是页,则称为分页存储管理方式;如果离散分配的基本单位是段,则称为分段存储管理方式

如果不具备页面对换功能,则称为基本的分页存储管理方式,或称为纯分页存储管理方式,它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。

分页内存管理

页面
分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从 0 开始,如第 0 页、第 1 页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如 0 # 块、1 # 块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”

页面若太小,可使内存碎片减小,有利于提高内存利用率,但也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存;还会降低页面换进换出的效率。
如果页面较大,可以减少页表的长度,提高页面换进换出的速度,但会使页内碎片增大。
因此,页面的大小应选择适中,且页面大小应是 2 的幂,通常为 512 B~8 KB。

地址结构
在这里插入图片描述
分页地址的地址结构,前一部分为页号 P,后一部分为位移量 W(或称为页内地址)。图中的地址长度为 32 位,其中 0~11 位为页内地址,即每页的大小为 4 KB;12~31 位为页号,地址空间最多允许有 1 M 页。 不同机器会有所不同

页表
分页系统中,将进程的各个页离散地存储在内存不同的物理块(页框)中,为了能在内存中找到每个页面所对应的物理块。为每个
进程建立了一张页面映像表,简称页表。
在进程地址空间内的所有页(0~n),在页表中都有一条记录,记录了页在内存中对应的物理块号。进程执行时,通过查找该表,即可找到每页在内存中的物理块号。可见,页表的作用是实现从页号到物理块号的地址映射。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第1张图片
分页系统中,常在页表的表项中设置一存取控制字段,用于对该存储块中的内容加以保护。当存取控制字段仅有一位时,可用来规定该存储块中的内容是允许读/写,还是只读;若存取控制字段为二位,则可规定为读/写、只读和只执行等存取方式。
如果有一进程试图去写一个只允许读的存储块时,将引起操作系统的一次中断。如果要利用分页系统去实现虚拟存储器,还需要增加该页是否在内存中的标识位。

基本地址变换
为了能将用户地址空间中的逻辑地址变换为内存空间中的物理地址,在系统中必须设置地址变换机构。该机构的基本任务是实现从逻辑地址到物理地址的转换。因为页面映射表的作用就是用于实现从页号到物理块号的变换,因此,地址变换任务是借助于页表来完成的。

页表的功能可以由一组专门的寄存器来实现。一个页表项用一个寄存器。由于寄存器具有较高的访问速度,因而有利于提高地址变换的速度;但由于寄存器成本较高,且大多数现代计算机的页表又可能很大,使页表项的总数可达几千甚至几十万个,显然这些页表项不可能都用寄存器来实现。
现实中页表大多驻留在内存中。在系统中只设置一个页表寄存器 PTR(Page-Table Register),存放页表在内存的始址和页表的长度。进程未执行时,页表的始址和页表长度存放在本进程的 PCB 中。当调度程序调度到某进程时,将这两个数据装入页表寄存器中。这样在单处理机环境下,虽然系统中可以运行多个进程,但只需一个页表寄存器

当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址(相对地址)分为页号和页内地址两部分,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。这一错误将被系统发现并产生一地址越界中断。若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址到物理地址的变换。

操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第2张图片

具有快表的地址变换
由于页表是存放在内存中的,这使 CPU 在每存取一个数据时,都要两次访问内存。
第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与页内偏移量 W 拼接,以形成物理地址。
第二次访问内存时,才是从第一次所得地址中获得所需数据。
因此,采用这种方式将使计算机的处理速度降低近 1/2。以此高昂代价来换取存储器空间利用率的提高,是得不偿失的

为了提高地址变换速度,可在地址变换机构中增设一个具有并行查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”(Associative Memory),或称为“快表”,用以存放当前访问的那些页表项。
此时的地址变换过程是:在 CPU 给出有效地址后,由地址变换机构自动地将页号 P 送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的页号,便表示所要访问的页表项在快表中。于是,可直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中。如在块表中未找到对应的页表项,则还须再访问内存中的页表,找到
后,把从页表项中读出的物理块号送地址寄存器;同时,再将此页表项存入快表的一个寄存器单元中,亦即,重新修改快表。但如果联想寄存器已满,则 OS 必须找到一个老的且已被认为不再需要的页表项,将它换出。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第3张图片
成本的关系,快表不可能做得很大,通常只存放 16~512 个页表项。由于对程序和数据的访问往往带有局限性,因此,据统计,从快表中能找到所需页表项的机率可达 90%以上。这样,由于增加了地址变换机构而造成的速度损失,可减少到 10%以下。

两级页表

现代的大多数计算机系统,都支持非常大的逻辑地址空间(2 32次方 ~2 64次方 )。在这样的环境下,页表就变得非常大,要占用相当大的内存空间。例如,对于一个具有 32 位逻辑地址空间的分页系统,规定页面大小为 4 KB 即 2 12次方 B,则在每个进程页表中的页表项可达 1 兆个之多。
又因为每个页表项占用一个字节,故每个进程仅仅其页表就要占用 1 MB 的内存空间,而且还要求是连续的。
显然这是不现实的,我们可以采用下述两个方法来解决这一问题:
(1) 采用离散分配方式来解决难以找到一块连续的大内存空间的问题;
(2) 只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入

对于要求连续的内存空间的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),在每个页表项中记录了页表页面的物理块号。
我们以前面的 32 位逻辑地址空间为例来说明。当页面大小为 4 KB 时(12 位),若采用一级页表结构,应具有 20 位的页号,即页表项应有 1 兆个;在采用两级页表结构时,再对页表进行分页成子页表,每个子页表中最多包含 2 10次方 (即 1024)个页表项;外层页表也只有1024 个页表项。逻辑地址结构由原来两段(页号+页内地址)变为了三段 外层页号+内存页号+页内地址。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第4张图片

外层表 每条记录 代表一个子页表,并记录了该子页表在内存中的物理地址。而每个子页表最多只有1024个页表项,每条记录中包含该页对应的物理内存地址页。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第5张图片
为了地址变换方便,在地址变换机构中同样需要增设一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指定页表分页的始址,再利用内存页表向地址,在子页表中找到指定的页表项,其中即含有该页在内存的物理块号,用该块号和页内地址 即可构成访问的内存物理地址。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第6张图片

多级页表

对于 32 位的机器,采用两级页表结构是合适的;但对于 64 位的机器,采用两级页表是否仍可适用的问题,须做以下简单分析。如果页面大小仍采用 4 KB 即 2 12次方 B,那么还剩下 52 位,假定仍按物理块的大小(2 12 次方位)来划分页表,则将余下的 40 位用于外层页号。此时在外层页表中可能有 4096 G 个页表项,要占用 16 384 GB 的连续内存空间。显然没有这么大的连续内存空间
因此必须采用多级页表,将外层页表再进行分页,也就是将各分页离散地装入到不相邻接的物理块中,再利用第 2 级的外层页表来映射它们之间的关系。
对于 64 位的计算机,如果要求它能支持 2 64次方 B(= 1 844 744 TB)规模的物理存储空间,则即使是采用三级页表结构也是难以办到的;而在当前的实际应用中也无此必要。故在近两年推出的 64 位 OS 中,把可直接寻址的存储器空间减少为 45 位长度(即 2 45次方 )左右,这样便可利用三级页表结构来实现分页存储管理.
10(最外层页表)+11(中间层页表)+12(内存页表) + 12(业内地址)

分段内存管理

存储管理方式从固定分区到动态分区,进而又发展到分页存储管理方式的主要动力,是提高内存利用率
分段存储管理方式的目的,则主要是为了满足用户(程序员)在编程和使用上多方面的要求。
分段分配优势
方便编程:用户把自己的作业按照逻辑关系划分为若干个段,每个段都是从 0 开始编址,并有自己的名字和长度。要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的。下述的两条指令便是使用段名和段内地址:
LOAD 1,[A] |〈D〉;
STORE 1,[B] |〈C〉;
前一条指令的含义是将分段 A 中 D 单元内的值读入寄存器 1;后一条指令的含义是将寄存器 1 的内容存入 B 分段的 C 单元中

信息共享:在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。比如,共享某个例程和函数。分页系统中的“页”只是存放信息的物理单位(块),并无完整的意义,不便于实现共享;然而段却是信息的逻辑单位。

动态增长:在实际应用中,往往有些段,特别是数据段,在使用过程中会不断地增长,而事先又无法确切地知道数据段会增长到多大。前述的其它几种存储管理方式,都难以应付这种动态增长的情况,而分段存储管理方式却能较好地解决这一问题

动态链接:动态链接是指在作业运行之前,并不把几个目标程序段链接起来。要运行时,先将主程序所对应的目标程序装入内存并启动运行,当运行过程中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。动态链接也要求以段作为管理的单位

分段

分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从 0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,其逻辑地址由段号(段名)和段内地址所组成。

在这里插入图片描述
上图地址结构中,允许一个作业最长有 64 K 个段,每个段的最大长度为 64 KB。
分段方式已得到许多编译程序的支持,编译程序能自动地根据源程序的情况而产生若干个段。例如,Pascal 编译程序可以为全局变量、用于存储相应参数及返回地址的过程调用栈、每个过程或函数的代码部分、每个过程或函数的局部变量等等,分别建立各自的段。装入程序将装入所有这些段,并为每个段赋予一个段号。

段表
在简单分段式存储管理系统中,需要为每个分段分配一个连续的分区,而进程中的各个段可以离散地移入内存中不同的分区中。为了能从物理内存中找出每个逻辑段所对应的位置,像分页系统那样,在系统中为每个进程建立一张段映射表,简称“段表”
每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度,段表可以存放在一组寄存器中,这样有利于提高地址转换速度,但更常见的是将段表放在内存中。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第7张图片

地址转换
为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度 TL。在进行地址变换时,系统将逻辑地址中的段号与段表长度TL 进行比较。若 S>TL,表示段号太大,是访问越界,于是产生越界中断信号;若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址,然后,再检查段内地址 d 是否超过该段的段长 SL。若超过,即 d>SL,同样发出越界中断信号;若未越界,则将该段的基址 d 与段内地址相加,即可得到要访问的内存物理地址。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第8张图片
像分页系统一样,当段表放在内存中时,每要访问一个数据,都须访问两次内存,从而极大地降低了计算机的速率。解决的方法也和分页系统类似,再增设一个联想存储器,用于保存最近常用的段表项。由于一般情况是段比页大,因而段表项的数目比页表项的数目少,其所需的联想存储器也相对较小,便可以显著地减少存取数据的时间,比起没有地址变换的常规存储器的存取速度来仅慢约 10%~15%。

分页和分段的主要区别
分页和分段系统有许多相似之处。比如,两者都采用离散分配方式,且都要通过地址映射机构来实现地址变换。但在概念上二者完全不同,主要表现在以下三个方面

页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。

页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分

分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间则是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址.

信息共享

分段系统的一个突出优点,是易于实现共享,即允许若干个进程共享一个或多个分段,且对段的保护也十分简单易行。在分页系统中,虽然也能实现程序和数据的共享,但远不如分段系统来得方便。
例如,有一个多用户系统,可同时接纳 40 个用户,他们都执行一个文本编辑程序(Text Editor)。如果文本编辑程序有 160 KB 的代码和另外 40 KB 的数据区,则总共需有 8 MB 的内存空间来支持 40 个用户。
分页共享
如果 160 KB 的代码是可重入的(Reentrant),则无论是在分页系统还是在分段系统中,该代码都能被共享,在内存中只需保留一份文本编辑程序的副本,此时所需的内存空间仅为1760 KB(40×40+160),而不是 8000 KB。假定每个页面的大小为 4 KB,那么,160 KB 的代码将占用 40 个页面,数据区占 10 个页面。
为实现代码的共享,应在每个进程的页表中都建立 40 个页表项,它们的物理块号都是 21 # ~60 # 。在每个进程的页表中,还须为自己的数据区建立页表项,它们的物理块号分别是 61 # ~70 # 、71 # ~80 # 、81 # ~90 # ,…,等等。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第9张图片
分段共享
在分段系统中,实现共享则容易得多,只需在每个进程的段表中为文本编辑程序设置一个段表项

操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第10张图片

重入代码(Reentrant Code)又称为“纯代码”(Pure Code),是一种允许多个进程同时访问的代码。为使各个进程所执行的代码完全相同,绝对不允许可重入代码在执行中有任何改变。因此,可重入代码是一种不允许任何进程对它进行修改的代码。但事实上,大多数代码在执行时都可能有些改变,例如,用于控制程序执行次数的变量以及指针、信号量及数组等。为此,在每个进程中,都必须配以局部数据区,把在执行中可能改变的部分拷贝到该数据区,这样,程序在执行时,只需对该数据区(属于该进程私有)中的内容进行修改,并不去改变共享的代码,这时的可共享代码即成为可重入码。

段页式内存管理

前面所介绍的分页和分段存储管理方式都各有其优缺点。
分页系统能有效地提高内存利用率,而分段系统则能很好地满足用户需要。如果能对两种存储管理方式“各取所长”,则可以将两者结合成一种新的存储管理方式系统。这种新系统既具有分段系统的便于实现、分段可共享、易于保护、可动态链接等一系列优点,又能像分页系统那样很好地解决内存的外部碎片问题,以及可为各个分段离散地分配内存等问题。把这种结合起来形成的新系统称为“段页式系统”
基本原理
段页式系统的基本原理,是分段和分页原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。
操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第11张图片

上图作业有三个段,页面大小为 4 KB。在段页式系统中,其地址结构由段号、段内页号及页内地址三部分所组成,

在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长 TL。进行地址变换时,首先利用段号 S,将它与段表长 TL 进行比较。若 S 操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第12张图片

操作系统原理之内存管理2-内存分页、内存分段及虚拟内存_第13张图片
在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。显然,这使访问内存的次数增加了近两倍。为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。由于它的基本原理与分页及分段的情况相似,故在此不再赘述

虚拟内存

前面所介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行,于是,出现了下面这样两种情况:
(1) 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行。
(2) 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待。
出现上述两种情况的原因,都是由于内存容量不够大。一个显而易见的解决方法,是从物理上增加内存容量,但这往往会受到机器自身的限制,而且无疑要增加系统成本,因此这种方法是受到一定限制的。另一种方法是从逻辑上扩充内存容量,这正是虚拟存储技术所要解决的主要问题。

常规存储器管理方式的特征
一次性:在前面所介绍的几种存储管理方式中,都要求将作业全部装入内存后方能运行,即作业在运行前需一次性地全部装入内存,而正是这一特征导致了上述两种情况的发生。此外,还有许多作业在每次运行时,并非其全部程序和数据都要用到。如果一次性地装入其全部程序,也是一种对内存空间的浪费。
驻留性:作业装入内存后,便一直驻留在内存中,直至作业运行结束。尽管运行中的进程会因 I/O 而长期等待,或有的程序模块在运行过一次后就不再需要(运行)了,但它们都仍将继续占用宝贵的内存资源。
局部性原理
1968 年,Denning.P 就曾指出:程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分;相应地,它所访问的存储空间也局限于某个区域。他提出了下述几个论点:
(1) 程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。该论点也在后来的许多学者对高级程序设计语言(如 FORTRAN 语言、PASCAL 语言)及 C 语言规律的研究中被证实。
(2) 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但经研究看出,过程调用的深度在大多数情况下都不超过 5。这就是说,程序将会在一段时间内都局限在这些过程的范围内运行。
(3) 程序中存在许多循环结构,这些虽然只由少数指令构成,但是它们将多次执行。
(4) 程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内。

虚拟存储器的定义
基于局部性原理,应用程序在运行之前,没有必要全部装入内存,仅须将那些当前要运行的少数页面或段先装入内存便可运行,其余部分暂留在盘上。程序在运行时,如果它所要访问的页(段)已调入内存,便可继续执行下去;
但如果程序所要访问的页(段)尚未调入内存(称为缺页或缺段),此时程序应利用 OS 所提供的请求调页(段)功能,将它们调入内存,以使进程能继续执行下去。
如果此时内存已满,无法再装入新的页(段),则还须再利用页(段)的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。
这样,便可使一个大的用户程序能在较小的内存空间中运行;也可在内存中同时装入更多的进程使它们并发执行。从用户角度看,该系统所具有的内存容量,将比实际内存容量大得多。用户所看到的大容量只是一种感觉,是虚的,故人们把这样的存储器称为虚拟存储器。
所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而成本却又接近于外存。可见,虚拟存储技术是一种性能非常优越的存储器管理技术,故被广泛地应用于大、中、小型机器和微型机中

实现方法
连续内存分配方式很显然无法实现虚拟内存,因此,虚拟存储器的实现,都毫无例外地建立在离散分配的存储管理方式的基础上。目前,所有的虚拟存储器都是采用分页请求系统 或请求分段系统 来实现的。

分页请求系统:
在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它允许只装入少数页面的程序(及数据),便启动运行。以后,再通过调页功能及页面置换功能,陆续地把即将要运行的页面调入内存,同时把暂不运行的页面换出到外存上。置换时以页面为单位。为了能实现请求调页和置换功能,系统必须提供必要支持,如:请求分页的页表机制、缺页中断机制、地址变换机构 等

请求分段系统:
在分段系统的基础上,增加了请求调段及分段置换功能后所形成的段式虚拟存储系统。它允许只装入少数段(而非所有的段)的用户程序和数据,即可启动运行。以后再通过调段功能和段的置换功能将暂不运行的段调出,同时调入即将运行的段。置换是以段为单位进行的。为了实现请求分段,系统同样需要必要支持,如:请求分段的段表机制、缺段中断机制、地址变换机构 等

虚拟内存和交换内存的异同

这里引用某位大神的描述:
虚拟存储技术和交换技术很像,乍一看都是换入换出,把暂时不需要用的数据换出内存,将需要用到的数据换入内存,从而实现逻辑上内存的扩充。
二者之间的区别是:
虚拟存储技术是在一个作业运行的过程中,将作业的数据进行换入换出。
而交换技术是内存紧张时,换出某些进程,腾出内存空间,换入其他进程。
换而言之,交换技术是在不同的进程(作业)间的,虚拟存储技术是在一个作业间的。

你可能感兴趣的:(操作系统和linux,linux,内存管理,操作系统,段页管理,内存分页)