操纵系统之内存管理--非连续分配方式

时间:2019-11-01 14:46:17   收藏:0   阅读:95

一.基本分页存储管理

引言:固定分区会产生内部碎片,动态分区会产生外部碎片,这两种分配方式对内存的利用率较低,

         因而引入分页存储的思想:将内存空间分为相等大小的块,每一块即是一页,每一页比较小,系统将进程划分为若干块(若干页),每一页分别去申请内存块。

         内部碎片:固定分区中,若一个进程比较小,而为其分配的内存比较大,剩余的内存空间无法利用,这就是内部碎片。

         外部碎片:动态分区中,若一个进程因内存空间中,有含有较小的内存区间而无法为其分配出去 ,这就产生了外部碎片。

1.分页存储的几个基本概念

       (1)页面,页面大小:页面是指进程中的块,内存中的块称为页框,页面大小为2的整数次幂倍,页面大小根据地址结构中的偏移量决定。

       (2)地址结构:逻辑地址中分为:页号P与页类偏移量。比如32位的逻辑地址,0-11位为页类偏移量,12-31位为页号,这就说明,一个页面大小为2的11次方=4KB,而页的数量最多可以为2的20次方页

       (3)页表:一个进程对应一个页表,页表的作用是用于存储页号所对应的物理块号,页表由两部分组成,页号+物理块号,每一个页号对应一个物理块号,页号不占存储空间。

               比如:当进程需要访问内存中的某个数据时,就根据逻辑地址计算出页号,找到页表中所对应的物理块号,然后将物理块号与逻辑地址中的页类偏移量相加就得到了实际物理地址。

              (这里物理块号+页内偏移量,若是二进制则直接拼接,十进制就是数学上的相加)

       (4)页表项大小:32位的逻辑空间地址,每页大小为4KB,最多有2的20次方个页面,要使用页表表示这么多的页面,则需要20位才能容纳所有页面,大约需要3B的存储空间,若使用4B大小的的存储空间

                                4B=4*8=32位,系统按照字节编址,假如一个块的大小为一个字节(1B=8位,2的8次方个地址,32位为2的32次方个地址),一个页面的大小为4KB,则一页可以装下1K个页表项。(这里第一次看我是比较难以理解,想了半天,涉及到计算机组成原理中的地址空间与存储空间)

                       举个列子:前提条件,系统按照字节编址,一个块大小为一个字节即1B,32位逻辑地址,页面大小为4KB。

  页目录表

2.基本地址变换机构

        地址变换机构是将逻辑地址转换为物理地址,系统中会有一个页表寄存器。

        二进制逻辑地址到物理地址的转换:物理地址=物理块号+偏移量。

       十进制计算:1.计算页号P=A/L(A逻辑地址,L是页面大小)和页类偏移量W=A%L

                         2.比较页号与页表长度M,若P>=M,则地址不合法,中断处理。

                         3.若地址合法,页表项地址=页表起始地址+页号P*页表项长度,去除物理块号b

                         4.物理地址=b*L+W

3.具有块表的地址变换机构

        地址转换应该足够块,否则访问速度会降低,页表不能太大,否则内存利用率会降低。

        高速缓冲存储器--块表,也称相联存储器(TLB)。因此主内存中的页表也称慢表。

        1.CPU给出逻辑地址后,由硬件进行地址转换,将页号送如高速缓冲器中,并将页号与块表中的所有页号进行匹配。

        2.若找到匹配的页号,则取出块表中页号所对应的物理块号,然后与偏移量直接拼接形成物理地址。

        3.若未找到匹配的页号,则需要访问主存中的慢表,然后与偏移量拼接形成物理地址,接着将页表项存入块表中。

4.两级页表

二.基本分段存储管理

1.分段

2.段表

3.地址变换机构

4.段的共享与保护

三.段页式管理方式

原文:https://www.cnblogs.com/hero-xu/p/11776844.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!