关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

存储器管理-基本分页存储管理

发布时间:2023-06-27 16:00:34

基本分页存储管理的基本概念


连续分配的缺点:

1.固定分区分配:缺乏灵活性,产生大量内部碎片,内存利用率很低

2.动态分区分配:产生很多外部碎片,可以用‘紧凑’技术处理,但代价很高

连续分配:为用户进程分配的必须是一个连续的内存空间。

非连续分配:为用户分配的是一些分散的内存空间。

基本分页存储管理思想:

把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。

具体方法:

将内存空间分为一个个大小相等的分区,每个分区就是一个‘页框’,或称‘页帧’,‘内存块’,‘物理块‘。每个页框有页框号,从0开始。

将用户进程的地址空间也分为与页框大小相等的一个个区域,称为“页”或“页面”。每个页面也有一个编号,即“页号”,从0开始。(进程的最后一个页面可能没那么大,页框不能太大,防止产生过大的内部碎片)

操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。页面不必连续存放,也不必按先后顺序来,可以放到不相邻的页框中。

如何实现地址转换:

1.算出逻辑地址对应的页号

2.知道页号在内存中的起始地址

3.算出逻辑地址在页面内的“偏移量”

4.物理地址=页面始址+页面偏移量

页号=逻辑地址/页面长度(取整数部分)

页内偏移量=逻辑地址%页面长度

1号页在内存中存放的起始位置450

逻辑地址结构:

如果让每个页面大小为2的整数幂,计算机可以很方便的得出一个逻辑地址对应的页号和页内偏移量。

地址结构包含两个部分:前一部分为页号,后一部分为页内偏移量。

如果有k位表示“页内偏移量”,则说明该系统一个页面的大小为2^k个存储单元

如果有k位表示“页号“,说明在该系统中,一个进程最多允许2^m个页面

页表:

为了能知道进程的每个页面在内存中存放的位置

1.一个进程对应一张页表

2.进程的每一页对应一个页表项

3.每个页表项由页号和块号组成

4.页表记录进程页面和实际内存块有对应关系

5.每个页表项的长度是相同的,但是长度是"隐含的"


基本地址变换机制:


页表寄存器:

基本地址变换机构可以借助进程的页表将逻辑地址转化为物理地址。

通常会在系统中设置一个页表寄存器,存放页表在内存中的起始地址F和页表长度M

进程未执行时,页表的始址和页表长度放在进程控制块(PCR)中,当进程被调度时,操作系统内核会把他们放到页表寄存器中。

注意:页面大小是2的整数幂

地址变换过程:

设页面大小为L,逻辑地址A到物理地址E的变换过程如下:

1.计算页号p和页内偏移量w

2.比较页号P和页表长度M,如果P>=M,则发生月结中断,否则继续执行

3.页表中页号P对应的页表项地址=页表起始地址F+页号*页表项长度,取出该页表项内容b,即为内存块号

4.计算E=b*L+w,就可以用得到的物理地址E去访存了。

两次访问内存:

第一次,查页表;第二次,访问内存

其他细节

在分页存储管理的系统中,只要确定了每个页面的大小,逻辑结构就确定了。因此,页式管理中地址是一维的

为了方便页表的查询,通常会让一个页表占更多的字节,使得每个页面恰好可以装下整个页表项。


具有快表的地址变换机构


局部性原理:

时间局部性:

如果执行了程序中某条指令,那么不久后这条指令有可能再次被执行;如果某个数据被访问过,不久之后有可能再次被访问

空间局部性:

一旦程序访问了某个存储单元,不久之后,其附近的存储单元页有可能被访问。因为很多数据在内存中是连续村存放的

快表:

又称联想寄存器(TLB),是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换过程。内存中的页表常称为慢表。

引入快表后,地址变换过程:

1.cpu给出逻辑地址,由某个硬件算得页号,页内偏移量,将页号与快表中的所有页号进行比较

2.如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出该页的内存块号,再将内存块号与页内偏移量拼接成物理地址,最后访问该物理地址对应的内存单元。因此,若快表命中,则访问某个逻辑地址仅需一次访存即可。

3.如果没有找到匹配的页号,则需要访问内存的页表,找到对应页表项,得到页面存放的内存块号,再将内存块号和与页偏移量拼接成物理地址,最后,访问该物理地址对应的内存单元。因此,若快表未命中,需要访存两次。(注,找到页表项后,应同时将其放入快表,若快表已满,则根据一定的算法进行替换)

因为局部性原理,一般快表的命中率可以达到90%以上


两级页表


将长的页表分组,每个内存块刚好可以放入一个分组,为离散分配的页表再建立一张页表,称为页目录表。

如何实现地址变换:

1.按照地质结构将逻辑地址拆分成三部分

2.从PCB中读出页目录表始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放的位置

3.根据二级页号查表,找到最终想访问的内存块号

4.结合页偏移量得到物理地址

若访问的页面不在内存中,则产生缺页中断(内中断),然后将目标页面从外存调入内存。

细节:

若采用多级页表机制,则各级页表的大小不能超过一个页面。

n级页表的访存次数为n+1。


/template/Home/leiyu/PC/Static