段页式存储管理
段页式存储管理
分段式和分页式管理都有他们各自的优缺点:
优点 | 缺点 | |
---|---|---|
分段式 | 很方便按照逻辑模块实现信息的共享和保护 | 如果段长过大,分配空间不方便,其次,会产生外部碎片 |
分页式 | 内存利用率高,不会产生外部碎片,只有少量的页内碎片 | 不方便按照逻辑模块实现信息的共享和保护 |
分段式管理中,产生的外部碎片当然有其解决的方法---“紧凑”,但是这需要花费较大的时间代价
在段页式存储管理中,基本思想是:
- 内存划分:按照分页式存储管理方案
- 作业的管理:按照分段式存储管理进行分配
这种新的系统既具有分段系统的便于实现、分段可共享、易于保护、可动态链接等一系列优点,又能像分页系统那样,很好地解决内存的外部碎片问题
其大致的分格式图如下:
- 段页式管理中,
段间离散,段内离散
,和分段式的段间离散,段内连续
不一样
- 段号的位数决定了每个进程最多可以分几个段
- 页号位数决定了每个段最大有多少个页
- 页内偏移量决定了页面大小、内存块大小是多少
在段页式存储管理中,一个大的作业被分成许多小的段,然后每一段再进行分页,映射到内存中,如下面的格式:
作业按照逻辑模块分段,然后再进行分段
利用段表和页表实现地址映射:
如果想知道,其中的物理地址,该怎么办?
想想,我们在分段式管理中是怎么寻找的?通过段表,然后来寻得地址,然后页表中呢?通过页号和页内地址寻得,即如下:
在这个地址变换中,我们经历了三次的寻址
- 第一次访问是访问内存中的段表
- 第二次访问是访问内存中的页表
- 第三次访问是访问真正的地址
主要过程:
- 首先根据逻辑地址得到段号、页号、页内偏移量
- 然后判断段号是否越界
- 不越界,则查询段表,找到相对应的段表项
- 检查是否越界
- 不越界,则根据页表存放块号、页号查询页表,找到对应的页表项
- 计算出实际地址,访问实际地址
为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它,都须同时利用段号和页号去检索高速缓存,若找到匹配项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍需第三次访问内存。
在页式、段式存储管理中,为获得一条指令或数据,须两次访问内存;而段页式则须三次访问内存
back
这是小睿的博客,如果需要转载,请标注出处啦~ヾ(≧▽≦*)o谢谢。