存储管理之离散存储

离散存储主要包括分页存储分段存储两种。

一。分页存储管理:

页面:系统把进程划分为与帧(存储块)大小相等的块,成为页面(这样就可以让一个页存入一个帧中)。

#1数据结构:

1.位示图:记录系统中帧的使用情况。

2.页表(PT)(放在系统区)

页表:

页号帧号 权限(读写)

       比如,系统规定页面的长度为1024个字节,则页内地址可用10个二进制位表示(1024=210)表示。若机器的地址码是16位二进制数时,其中高6位代表页号,低10位代表页内地址。

这样的地址结构,允许一个进程的页面总数达64页。(页号占6位,2的6次方为64)

          

#2.地址重定位过程:

逻辑地址构成  <页号,偏移>

从页表寄存器中找到页表的起始地址从而找到页表,根据页表中的页号找到对应的帧号,帧号,偏移分别作为物理地址的高位和低位共同形成物理地址。

页内偏移 与 帧内偏移应该是一样的。

     从此过程中可见读取内存中的一个操作数,需要访问两次内存(页表寄存器+操作数)

#3.页面分配与回收:

(1)计算请求者需要的总帧数N。(所需内存空间大小/帧的大小)

(2)查位图,若找不到足够的空闲帧,编制“分配失败”报告返回。

(3)索取一个空闲页表PT。

(4)从位图中找出N个为0位,计算出对应的帧号,填入PT。

(5)将这些位改为1。(修改位示图中的对应位,使用为1,不使用为0)

(6)将PT起始地址填入进程的PCB中。

(7)结束。

  #4.内存共享:

可重入技术   。。。。

分页管理总结:

离散存储,利于大进程装入
只有很少的页内碎片,提高内存利用率
DS:位示图、页表
动态地址重定位

    逻辑地址                                 物理地址

    一维、二维                         二维、一维

页面共享不易实现
二。分段管理技术:
1.所谓段可以理解为对一段程序的不同划分,如分为主程序,函数,数组等。
2.不会产生内碎片,但可能产生外碎片。
3.如在一个有32位地址空间的分段管理系统中,段表的段首地址也必是一有32位。
#1.数据结构:
MAT表
空闲分区链
段表:
段表ST,是用来记录各个段地址映射关系的表格,每个进程有一张。 各个分段在内存空间中的对应位置都登记在段表内。
段首地址段长度 访问控制
#2.地址重定位过程:
系统中设置段表控制寄存器,包括段表基址寄存器(STBR)和段表长度寄存器(STLR)
逻辑地址:<段号,段内地址>
根据段表寄存器的内容找到对应段,根据段号找段的起始地址,与段内地址共同形成逻辑地址。

(1)      提取逻辑地址中的“段号”。

(2)   比较段号与STLR的段长度。如果超出段表长度,则返回“内存定位错误”,终止进程的运行。

(3)   从STBR中给出的段表首址开始,以段号为索引查找该进程对应的段表,得到欲访问段的首地址。

(4)   取出欲访问段的首地址,加上逻辑地址中的偏移量得到物理地址。

#3.内存共享与保护:

              分段管理模式下的信息保护分两级。第一级是防止进程发生超出存储空间的访问,第二级是阻止进程超出访问权限的读写。

三。段页式管理:
(在段内分页)

系统为一个含有多分段的进程分配内存时,首先为这些分段建立段表,将各段长度填入表中。接下来为每个段分配地址空间。在这种系统中,各分段有一个页表,其首地址存放在段表中。


地址重定位过程:
逻辑地址 形式:<段号,页号,偏移>(段内偏移分为页号和偏移两个)

根据段表控制寄存器找到对应段号,根据段号找到页号,根据页号找到帧号,帧号加偏移形成物理地址。




四。关于快表的地址重定位过程:

逻辑地址<页号,偏移>

(1)硬件逻辑中,将逻辑地址中的页号P送入高速缓存,与其中的所有页号进行比较。找到相匹配的页号后,读出该页面对应的帧号,送物理地址寄存器,与偏移量W共同合成一个访问内存的物理地址。

(2)若高速缓存内找不到相匹配的页号,表示欲访问的页号不在快表中。系统需要再访问内存中的页表。找到该页的帧号,送物理地址寄存器与偏移量W共同合成访问内存的物理地址。同时,将该页及帧号复制到快表中。此时,如果高速缓存已没有空闲位置,应找到一个最不常用的页表项淘汰掉,换入新的页表项。




关于快表的有效访存时间:

t1为访问一次快表的时间,t2为一次内存访问时间:

如果一次查询快表能找到所用的页,我们称作命中。此时的有效访存时间 t 大约为:

                             t = t1+ t2

如果一次查询快表找不到所用的页,称作没有命中。此时的有效访存时间 t 将是:

                           t = t1+ 2t2

一般地,当查询快表的命中率为 p ,则平均内存有效访问时间 T 大约为:
T = P*(t1 + t2) + (1-p) *(t1 + 2 * t2)












  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值