存储器管理2
4.1.3 基本分页存储管理方式
1.分页存储管理的基本方法
系统将逻辑地址空间分成若干大小相等的片,叫页面,内存空间分成若干与页面同样大小的块,内存的分配以块为单位,允许将一个进程的若干页分别装入不相邻的块中。
页面大小通常设成2的幂页面大小为2^k字节,逻辑地址长度为n位,右边的k位为页内地址W,左边的n-k位为页号P
分配实例
2. 地址变换机构
1) 基本的地址变换机构
1) 具有快表的地址变换机构
快表:具有并行查找能力的高速缓冲寄存器,又称为”联想存储器”,用以存放当前被频繁访问的页面的页号和对应的页表项。
2. 多级页表
将页表进行分页,将各个页表页离散的存放到内存块,为离散分配的页表再建立一张页表,称为外部页表,用来记录存放各页页表的内存块号,形成了两级页表。如果外层页表仍然很大,则可以再次进行分页,形成多级页表。
逻辑地址为32位,页面大小4KB,每块4个字节例子
4.1.4 分段式存储管理方式
1.分段系统的基本原理
作业地址空间被划分成若干个段,每个段定义了一组逻辑信息,有自己的段名和段长,并且都采用首地址为0的一段连续空间;而内存空间的管理与动态分区相似,只不过将分配对象由整个程序变成段,为每个段分配一个连续的内存区。
用户通过段名或者段号、段内地址访问指令和数据,因此,分段系统的作业地址空间是二维的。为了实现二维地址空间的逻辑地址到内存空间物理地址的转换,系统为每个进程建立了一张段映射表,简称“段表”。进程的每个段在段表中占一个表项,其中记录了内存的基址和段的长度以及对分段进行保护的存取控制信息。每访问一次数据需要访问两次内存。
2. 分页与分段的比较
分页系统和分段系统有许多相似之处,比如:都采用离散分配方式来提高内存利用率, 都要通过地址变换机构来实现地址变换。ffl在概念h两者是完全不同的,它们的区别主要 表现在以下三个方面:
(1) 页是信息的物理单位,分页是为了提高内稃的利用率。段则是信息的逻辑单位, 它含有一组其意义相对完整的信息。分段是为了能更好地满足用户的耑要。
(2) 页的大小固定且由系统决定。段的长度不固定,社由用户所编写的程序决矩。
(3) 分页的地址空间是一维的,程序员只需利用一个记忆符,便可表示一个地址。分 段的地址空间是二维的,程序员在标i只一个地址时,既需给出段名,又需给出段内地址。
3. 段页式存储管理
段页式存储管理是分页与分段管理的结合,它先将地址空间中的用户程序分成若干个段,再将每个段分成若干个页,而内存空间则被分成与页同样大小的块,并以块为单位进行内存的分配。
段页式系统的地址空间是二维的,每个逻辑地址包括段号和段内地址两部分,段内地址又被地址变换机构根据页面大小自动分成段内页号和页内地址。
系统为每个进程建立一张段表,并为每个分段建立一张页表,段表项给出了每个分段所对应的页表的内存始址和长度,页表给出了对应的内存块号。在进行地址变换时,首先根据段表寄存器中的段表开始地址和逻辑地址的段号找到对应的段表项,从中获得该段的页表始址:然后再利用页表始址和逻辑地址中的段内页号来获得对应的页表项,从中获得该页的内存块号;由内存块号与页内地址拼接形成物理地址。
由于段表和页表都存放在内存中,每存取一条指令或一个数据都需三次访问内存,故可在地址变换机构中增设快表,用来存放当前被频繁访问的页面所对应的段号、段内页号和物理块号等信息,以减少访问内存的次数,提商指令执行的速度。