基本分页存储管理方式的两级和多级页表
发布网友
发布时间:2022-05-01 21:10
我来回答
共2个回答
热心网友
时间:2022-04-13 03:38
现代的大多数计算机系统,都支持非常大的逻辑地址空间(2^32~2^64)。在这样的环境下,页表就变得非常大,要占用相当大的内存空间。例如,对于一个具有32位逻辑地址空间的分页系统,规定页面大小为4 KB即2^12 B,则在每个进程页表中的页表项可达1兆个之多。又因为每个页表项占用四个字节,故每个进程仅仅其页表就要占用4 MB的内存空间,而且还要求是连续的。显然这是不现实的,我们可以采用下述两个方法来解决这一问题:
(1) 采用离散分配方式来解决难以找到一块连续的大内存空间的问题;
(2) 只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入。
两级页表(Two-Level Page Table)
对于要求连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),在每个页表项中记录了页表页面的物理块号。下面我们仍以前面的32位逻辑地址空间为例来说明。当页面大小为 4 KB时(12位),若采用一级页表结构,应具有20位的页号,即页表项应有1兆个;在采用两级页表结构时,再对页表进行分页,使每页中包含2^10 (即1024)个页表项,最多允许有2^10个页表分页;或者说,外层页表中的外层页内地址P2为10位,外层页号P1也为10位。此时的逻辑地址结构可描述如下:
由右图可以看出,在页表的每个表项中存放的是进程的某页在内存中的物理块号,如第0#页存放在1#物理块中;1#页存放在4#物理块中。而在外层页表的每个页表项中,所存放的是某页表分页的首址,如第0#页表是存放在第1011#物理块中。我们可以利用外层页表和页表这两级页表,来实现从进程的逻辑地址到内存中物理地址间的变换。
为了地址变换实现上的方便起见,在地址变换机构中同样需要增设一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号,作为外层页表的索引,从中找到指定页表分页的始址,再利用P2作为指定页表分页的索引,找到指定的页表项,其中即含有该页在内存的物理块号,用该块号和页内地址d即可构成访问的内存物理地址。右图示出了两级页表时的地址变换机构。 对于32位的机器,采用两级页表结构是合适的;但对于64位的机器,采用两级页表是否仍可适用的问题,须做以下简单分析。如果页面大小仍采用4 KB即2^12 B,那么还剩下52位,假定仍按物理块的大小(2^12位)来划分页表,则将余下的42位用于外层页号。此时在外层页表中可能有4096 G个页表项,要占用16 384 GB的连续内存空间。这样的结果显然是不能令人接受的,因此必须采用多级页表,将外层页表再进行分页,也就是将各分页离散地装入到不相邻接的物理块中,再利用第2级的外层页表来映射它们之间的关系。
对于64位的计算机,如果要求它能支持2^64 B(= 1 844 744 TB)规模的物理存储空间,则即使是采用*页表结构也是难以办到的;而在当前的实际应用中也无此必要。故在近两年推出的64位OS中,把可直接寻址的存储器空间减少为45位长度(即2^45)左右,这样便可利用*页表结构来实现分页存储管理。
热心网友
时间:2022-04-13 04:56
页和分段系统有许多相似之处,但在概念上两者完全不同,主要表现在:
1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。
段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。
分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
基本分页存储管理方式两级和多级页表
首先,采用离散分配策略,即不求连续内存空间,而是将页表分散存储在物理块中。此外,可以使用多级页表结构,如两级页表,来管理页表的分布。以32位逻辑地址空间为例,如果采用一级页表,每个页表项需20位,但若改为两级,每级页表分为1024个项,每个外层页表项仅需10位。这样,逻辑地址结构可以描述为两...
基本分页存储管理方式的两级和多级页表
两级页表(Two-Level Page Table)对于要求连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),在每个页表项中记录了页表页面的物理块号。下面我们仍以前面的...
两级页表
因此各级页表最多包含1024个页表项,需要10个二进制位才能映射到1024个页表项,因此每级页表对应的页号应为10位二进制。共28位的页号至少要分为 3 级。 (2) 两级页表的 访问次数 分析(假设没有页表): 从上面可以看出,两级页表虽然解决了页表需要连续存储的问题,但...
基本分页存储管理
基本分页存储管理中地址是一维的,即只要给出一个逻辑地址,系统就可以自动计算出页号、偏移量,不需要显式告诉系统偏移量是多少 理论上,页表项长度为3即可表示内存块号的范围,但是为了方便页表查询,会让页面恰好能装得下整数个页表项,令每个页表项占4字节 4KB页面,可以放4096/3 =1365个页表项,...
基本分页存储管理方式页面与页表
分页存储管理是一种常见的内存管理方式,它将进程的逻辑地址空间划分为固定大小的片,即页面,每个页面都有唯一的编号。内存空间则被划分为同样大小的物理块,称为页框,它们也有各自的编号。在分配内存时,进程的页面被分散存储到多个物理块,可能导致页内碎片。选择合适的页面大小至关重要。如果页面过小...
基本分页存储管理方式的页面与页表
1) 页面和物理块分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存...
如何理解页表?
一、理解这样一个概念,操作系统为了方便管理内存,将内存划分成很若干个页,每个页表项就代表一个页的地址(页的地址,不是内存地址)。二、4B大小的页表项,意味着支持最大的页表数是2的32次方=4294967296 (4B=32bit),一个页的大小4K,那么4B大小的页表项,表示操作系统支持4294967296*4K = 16GB大...
...满足64位地址空间的作业运行,采用多级分页存储管理方式
4KB的块可以存2^12/2^3=2^9即512个页表项,64位,4kb的页内编址需要12位。其余给多级页表,剩余52位,每级页表9位。52/9取上得6.所以是6级页表。实际上不管win还是linux,都只开放一部分寻址空间,所以实际上不会用到6级页表这种变态又耗时间的方法。
在基本分页存储管理中,页表所起的作用主要是实现()
在基本分页存储管理中,页表所起的主要作用是实现从逻辑地址到物理地址的映射。现在我们来详细解释一下这个概念。在计算机存储系统中,为了提高内存的使用效率和管理的灵活性,通常会将物理内存划分为固定大小的块,称为页(Page)。相应地,程序的逻辑地址空间也会被划分为与物理页大小相同的块,这些块被...
分页机制图文详解
1、采用离散分配方式代替原来页表需要的连续物理内存 2、将当前需要的部分页表项调入内存,其余页表项仍驻留在磁盘上,需要时再调入 指向原页表项 逻辑地址 结构 PS:位移量W也称为页内地址 页大小4k 所以页内地址需要12位(2 12 =4k)VS 指向两级页表项 逻辑地址 结构 PS:外层页号也称页目录表( ...