分页存储管理方式
分页存储管理的基本方法
1. 页面和物理块
(1) 页面。
(2) 页面大小。
2. 地址结构
分页地址中的逻辑地址结构如下:
3. 页表
在分页系统中,为能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表
地址变换机构
1. 基本的地址变换机构
进程在运行期间,需要对程序和数据的地址进行变换,即将用户地址空间中的逻辑地址变换为内存空间中的物理地址:
实际上,地址转换时只需求出块号即可:
2. 具有快表的地址变换机构
由于页表是存放在内存中的,这使CPU在每存取一个数据时,都要两次访问内存。第一次是访问内存中的页表,得到数据的物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据,使计算机的处理速度降低近1/2。
另一方面,我们知道,计算机在执行程序段时,大部分时间访问的数据和程序都是集中在存储器中的同一片区域。
访问内存的有效时间
假设访问一次内存的时间为t,在基本分页存储管理方式中,有效访问时间(Effective Access Time,EAT)为:
EAT = t + t = 2t
在引入快表的分页存储管理方式中,有效访问时间为:
EAT=а×λ+(t+λ)(1-а)+t=2t+λ-t×а
上式中,λ表示查找快表所需要的时间,а表示命中率,t表示访问一次内存所需要的时间。
两级和多级页表
1. 两级页表
针对难于找到大的连续的内存空间来存放页表的问题,可利用将页表进行分页的方法,为离散分配的页表再建立一张页表,称为外层页表,形成了两级页表。
为了进行地址映射,系统中同样需设置一个外部页表寄存器,用来存放外层页表的内存始址和长度;而逻辑地址将由地址变换机构自动根据页的大小和每页可存放的页表项个数分成页内地址、外部页内地址和外部页号三部分。
2. 多级页表
如果外层页表仍十分大,则可以将它再进行分页,并离散地存放到内存中,然后再通过一张第二级的外层页表来记录存放各外层页表页的内存块号,这样,便形成了三级页表, 并可进一步形成更多级的页表。
分段存储管理方式
存储管理方式随着OS的发展也在不断地发展。当OS由单道向多道发展时,存储管理方式便由单一连续分配发展为固定分区分配。
分段存储管理方式的引入
1. 方便编程
通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都从0开始编址,并有自己的名字和长度。因此,用户希望需要访问的逻辑地址格式是:
段名(段号)+段内偏移量(段内地址),
这不仅可以方便程序员编程,也可使程序非常直观,更具可读性。例如,下述的两条指令便使用段名和段内地址:
LOAD 1,[A] |〈D〉; STORE 1,[B] |〈C〉;
2. 信息共享
而分段系统则在用户编程时,自然地进行分段的划分,每个分段中的信息具有相对完整的意义,因此它比分页更容易实现信息的共享。
3. 信息保护
OS 应保证用户进程只按允许的方式访问共享信息,而对他人的非共享信息则不允许进行任何形式的访问。
4. 动态增长
在实际应用中,往往存在着一些段,使用过程中,数据段动态增长,所需要的存储空间也会动态增加。而在段式管理中,段长可根据需要动态增长,可以用以解决数据段的动态增长问题。
5. 动态链接
段式管理是按信息的逻辑意义来划分段,每段对应一个相应的程序模块。因此,可用段名加上段入口地址等方法在执行过程中调入相应的段进行动态链接。
分段系统的基本原理
1. 分段
在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。如图所示,有主程序段MAIN、子程序段X、数据段D及栈段S等。
2. 地址结构:
分段地址中的地址具有如下结构:
2. 段表
系统为每个进程建立了一张段映射表,简称“段表”,进程的每个段在段表中占一个表项,其中记录了该段在内存中的起始地址(又称为“基址")和段的长度,以及对分段进行保护的存取控制信息。
3. 地址变换机构
4. 分页和分段的主要区别
(1) 页是信息的物理单位。
(2) 页的大小固定且由系统决定。
(3) 分页的用户程序地址空间是一维的。
信息共享
1. 分页系统中对程序和数据的共享
2. 分段系统中程序和数据的共享
段页式存储管理方式
1. 基本原理
段页式系统的基本原理是分段和分页原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。
内存空间则仍采用页式管理方式,即将内存分成与页同样大小的块,并以块为单位来进行内存的分配。
如图所示给出了一个有三个段:主程序段、子程序段和数据段,页面大小为 4 KB的作业。在段页式系统中,其地址结构由段号、段内页号及页内地址三部分所组成
在段页式系统中,系统中需要同时配置段表和页表。段表的内容与分段系统略有不同,它不再是内存始址和段长,而是页表始址和页表长度。
2. 地址变换过程