精华内容
下载资源
问答
  • 4.5.1 分页存储管理基本方法
    2019-11-28 22:30:33

    (1)空间划分

     将一个用户进程的地址空间(逻辑)划分成若干个大小相等的区域,称为页或页面,并为各页从0开始编号。

     内存空间也分成若干个与页大小相等的区域,称为(存储、物理)块或页框(frame),同样从0开始编号。

    (2)内存分配      

    在为进程分配内存时,以块为单位,将进程中若干页装入到多个不相邻的块中,最后一页常装不满一块而出现页内碎片。

     

    2. 地址结构

    逻辑地址结构:

    地址长为32位,其中0-11位为页内地址,即每页的大小为212=4KB

                     12-31位为页号,地址空间最多允许有220 =1M页。

    物理地址结构:

    地址长为22位,其中0-11位为块内地址,即每块的大小为212=4KB,与页相等

                     12-21位为块号,内存地址空间最多允许有210 =1K块。

    对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:

     例题:设有一页式存储管理系统,向用户提供的逻辑地址空间共为16页,每页2048B,内存总共有8个存储块,试问逻辑地址至少应为多少位?内存空间有多大?

    解:(1)页式存储管理系统的逻辑地址为:

    页号p

    位移量w

     其中页内地址每页的大小即 2048B=2*1024B=211B,所以页内地址为11位。

     其中页号表最多允许的页数即 16页=24页,所以页号为4位。

     故逻辑地址至少应为15位。

        (2)物理地址为:   

    块号b

    块内位移d

                 

     其中块内地址表每块的大小与页大小相等,所以块内地址也为11位。

     其中块号表内存空间最多允许的块数即 8块=23块,所以块号为3位。

     故内存空间至少应为14位,即214 =16KB

    3. 页表
      
    在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表.

    为了便于在内存找到进程的每个页面所对应块,系统为每个进程建立一张页面映象,简称页表,如图。

     

     

    记录了页面在内存中对应的块号
    页表一般存放在内存中
    页表的基址及长度由页表寄存器给出

    页表始址

    页表长度

    访问一个字节的数据 / 指令需访问内存 2 ( 页表一次 , 内存一次 ), 所以出现内存访问速度降低的问题。

     

                      页表的作用

     

     

     

     

    更多相关内容
  • 一、思考:连续分配...基于这一思想,产生了“非连续分配方式”,或者称为“离散分配方式”。 连续分配:为用户进程分配的必须是一个连续的内存空间。 非连续分配:为用户进程分配的可以是一些分散的内存空间。 二

    一、思考:连续分配方式的缺点?

    在这里插入图片描述
    考虑支持多道程序的两种连续分配方式:

    1. 固定分区分配:缺乏灵活性,会产生大量的内部碎片内存的利用率很低
    2. 动态分区分配:会产生很多外部碎片,虽然可以用“紧凑”技术来处理,但是“紧凑”的时间代价很高
      如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用内存,而无需再进行“紧凑”。基于这一思想,产生了“非连续分配方式”,或者称为“离散分配方式”。
      在这里插入图片描述
      连续分配:为用户进程分配的必须是一个连续的内存空间
      非连续分配:为用户进程分配的可以是一些分散的内存空间

    二、把“固定分区分配”改造为“非连续分配版本”

    假设进程A大小为23MB,但是每个分区大小只有10MB,如果进程只能占用一个分区,那显然放不下。
    解决思路:如果允许进程占用多个分区,那么可以把进程拆分成10MB+10MB+3MB三个部分,再把这三个部分分别放到三个分区中(这些分区不要求连续)。但是,进程A的最后一个部分是3MB,放入分区后会产生7MB的内部碎片

    如果每个分区大小为2MB,那么进程A可以拆分成11*2MB+1MB共12个部分,只有最后一部分1MB占不满分区,会产生1MB的内部碎片
    显然,如果把分区大小设置的更小一些,内部碎片会更小,内存利用率会更高
    基本分页存储管理的思想——把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分
    在这里插入图片描述

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

    将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”,或称“页帧”、“内存块”、“物理块”。每个页框有一个编号,即“页框号”(或者“内存块号”、“页帧号”、“物理块号”)页框号从0开始

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

    操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面内存的页框一一对应的关系。各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。
    在这里插入图片描述

    四、思考:如何实现地址的转换?

    将进程地址空间分页之后,操作系统该如何实现逻辑地址到物理地址的转换?
    在这里插入图片描述
    先回顾一下,进程在内存中连续存放时,操作系统是如何实现逻辑地址到物理地址的转换的?(采取动态重定位的方法)
    在这里插入图片描述
    在这里插入图片描述

    五、如果采用分页技术,应该如何实现地址转换?

    在这里插入图片描述
    CPU执行指令1,需要访问逻辑地址为80的内存单元,如何转化为物理地址?

    逻辑地址为80的内存单元:
    应该在1号页,该页在内存中的起始位置为450,逻辑地址为80的内存单元相对于该页的起始地址而言,“偏移量”应该是30
    所以,实际物理地址=450+30=480

    1. 要算出逻辑地址对应的页号
    2. 要知道该页号对应页面在内存中的起始地址
    3. 要算出逻辑地址在页面内的“偏移量”
    4. 物理地址=页面始址+页内偏移量

    如何计算:
    页号=逻辑地址/页面长度(取除法的整数部分)
    页内偏移量=逻辑地址%页面长度(取除法的余数部分)
    页面在内存中的起始位置:操作系统需要用某种数据结构记录进程各个页面的起始位置。

    页号=80/50=1
    页内偏移量=80%50=30
    1号页在内存中存放的起始位置450
    注意:为了方便计算页号、页内偏移量,页面大小一般设为2的整数幂

    在这里插入图片描述
    在这里插入图片描述
    结论:如果每个页面大小为2^K B,用二进制数表示逻辑地址,则末尾K位即为页内偏移量其余部分就是页号
    因此,如果让每个页面的大小为2的整数幂,计算机就可以很方便地得出一个逻辑地址对应的页号和页内偏移量。

    六、逻辑地址结构

    分页存储管理的逻辑地址结构如下所示:
    在这里插入图片描述
    地址结构包含两个部分:前一部分为页号,后一部分为页内偏移量W。在上图所示的例子中,地址长度为32位,其中0-11位为“页内偏移量”,或称“页内地址”;12-31位为“页号”。
    如果有K位表示“页内偏移量”,则说明该系统中一个页面的大小是2^K个内存单元
    如果有M位表示“页号”,则说明在该系统中,一个进程最多允许有2^M个页面

    分页存储管理中,如何实现地址转换?

    1. 要算出逻辑地址对应的页号
    2. 要知道该页是对应页面在内存中的起始地址
    3. 要算出逻辑地址在页面内的“偏移量”
    4. 物理地址=页面始址+页内偏移量
      注:如果题目中是用十进制数表示逻辑地址,则页号=逻辑地址/页面长度(取除法的整数部分)页内偏移量=逻辑地址%页面长度(取除法的余数部分)

    七、页表

    为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表
    在这里插入图片描述
    为什么每个页表项的长度是相同的,页号是“隐含”的?
    Eg:假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该为多少字节?
    4GB=2^32B,
    4KB=2^12B
    因此4GB的内存总共会被分为2^32 / 2^12= 220个内存块**,因此内存块号的范围应该是0~220-1因此至少要20个二进制位才能表示这么多的内存块号,因此至少要3个字节才够(每个字节8个二进制位,3个字节共24个二进制位)
    在这里插入图片描述
    各页表项会按顺序连续地存放在内存中。如果该页表在内存中存放的起始地址为x,则M号页对应的页表项一定是存放在内存地址为 X+3*M。因此,页表中的“页号”可以是“隐含”的。
    只需要知道
    页表存放的起始地址页表项长度**,即可找到各个页号对应的页表项存放的位置。在本例中,一个页表项占3B,如果进程由n个页面,则该进程的页表总共会占3*n个字节。

    八、总结

    在这里插入图片描述

    展开全文
  • os 分页存储管理方式

    2022-01-28 15:20:44
    连续分配方式会形成许多...(1)分页存储管理方式。在该方式中,将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。典型的页面大小为1KB。相应地,也将内存空间分为若干个物理块或页框( frame ),

    连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销。如果允许将一个进程直接分散地装入到许多不相邻块的分区中,便可充分地利用内存空间,而无须再进行“紧凑”。基于这一思想而产生了离散分配方式。根据在离散分配时所分配地址空间的基本单位的不同,又可将离散分配分为以下三种

    • (1)分页存储管理方式。在该方式中,将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。典型的页面大小为1KB。相应地,也将内存空间分为若干个物理块或页框( frame ),页和块的大小相同。这样可将用户程序的任一页放入任一物理块中,实现了离散分配。
    • (2)分段存储管理方式。这是为了满足用户要求而形成的一种存储管理方式。它把用户程序的地址空间分为若干个大小不同的段,每段可定义一组相对完整的信息。在存储器分配时,以段为单位,这些段在内存中可以不相邻接,所以也同样实现了离散分配。
    • (3)段页式存储管理方式。这是分页和分段两种存储管理方式相结合的产物。它同时具有两者的优点,是目前应用较广泛的一种存储管理方式。

    分页存储管理的基本方法

    1.页面和物理块

    (1)页面

    分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存的物理地址空间分成若干个块,同样也为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位,将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块,而形成了不可利用的碎片,称之为“页内碎片”。

    (2)页面大小

    在分页系统中,若选择过小的页面大小,虽然一方面可以减小内存碎片,起到减少内存碎片总空间的作用,有利于内存利用率的提高,但另一方面却会造成每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存。此外,还会降低页面换进换出的效率。然而,如果选择的页面过大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。因此,页面的大小应选择适中,且页面大小应是2的幂,通常为1 KB ~8 KB .

    2.地址结构

    分页地址中的地址结构如下:
    在这里插入图片描述
    它包含两部分内容:前一部分为页号 P ,后一部分为位(偏)移量 W ,即页内地址。图中的地址长度为32位,其中0-11位为页内地址,即每页的大小为4KB;12~31位为页号,地址空间最多允许有1M页
    对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为 A ,页面的大小为 L ,则页号 P 和页内地址 d 可按下式求得:
    在这里插入图片描述
    其中,INT是整除函数,MOD是取余函数。例如,其系统的页面大小为1KB,设A=2170B,则由上式可以求得P=2,d=122。

    3.页表

    在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表。在进程地址空间内的所有页(0~ n ),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块号,见下图的中间部分。在配置了页表后,进程执行时,通过査找该表,即可找到每页在内存中的物理块号。可见,页表的作用是实现从页号到物理块号的地址映射
    在这里插入图片描述


    地址变换机构

    为了能将用户地址空间中的逻辑地址转换为内存空间中的物理地址,在系统中必须设置地址变换机构。该机构的基本任务是实现从逻辑地址到物理地址的转换。由于页内地址和物理地址是一一对应的(例如,对于页面大小是1KB的页内地址是0-1023,其相应的物理块内的地址也是0-1023,无需再进行转换),因此,地址变换机构的任务实际上只是将逻辑地址中的页号转换为内存中的物理块号。又因为页面映射表的作用就是用于实现从页号到物理块号的变换,因此,地址变换任务是借助于页表来完成的

    1.基本的地址变换机构

    进程在运行期间,需要对程序和数据的地址进行变换,即将用户地址空间中的逻辑地址变换为内存空间中的物理地址,由于它执行的频率非常高,每条指令的地址都需要进行变换,因此需要采用硬件来实现页表功能是由一组专门的寄存器来实现的一个页表项用一个寄存器。由于寄存器具有较高的访问速度,因而有利于提高地址变换的速度;但由于寄存器成本较高,且大多数现代计算机的页表又可能很大,使页表项的总数可达几千甚至几十万个,显然这些页表项不可能都用寄存器来实现。因此,页表大多驻留在内存中。在系统中只设置一个页表寄存器 PTR ( Page - Table Register ),在其中存放页表在内存的始址和页表的长度。平时,进程未执行时,页表的始址和页表长度存放在本进程的 PCB 中。当调度程序调度到某进程时,才将这两个数据装入页表寄存器中。因此,在单处理机环境下,虽然系统中可以运行多个进程,但只需一个页表寄存器。
    当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址(相对地址)分为页号和页内地址两部分,再以页号为索引去检索页表。查找操作由硬件执行。在执行检索之前,先将页号与页表长度进行比较,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间。于是,这一错误将被系统发现,并产生一地址越界中断。若未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,便得到该表项在页表中的位置,于是可从中得到该页的物理块号,将之装入物理地址寄存器中。与此同时,再将有效地址寄存器中的页内地址送入物理地址寄存器的块内地址字段中。这样便完成了从逻辑地址到物理地址的变换。下图示出了分页系统的地址变换机构。
    在这里插入图片描述

    2.具有快表的地址变换机构

    由于页表是存放在内存中的,这使 CPU 在每存取一个数据时,都要两次访问内存。第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与页内偏移量 W 拼接,以形成物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据)。因此,采用这种方式将使计算机的处理速度降低近1/2。可见,以此高昂代价来换取存储器空间利用率的提高,是得不偿失的
    为了提高地址变换速度,可在地址变换机构中增设一个具有并行查询能力的特殊高速缓冲寄存器,又称为“联想寄存器”( Associative Memory ),或称为“快表”,在 IBM 系统中又取名为 TLB ( Translation Look aside Buffer ),用以存放当前访问的那些页表项。此时的地址变换过程是:在 CPU 给出有效地址后,由地址变换机构自动地将页号 P 送入高速缓冲寄存器,并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的页号,便表示所要访问的页表项在快表中。于是,可直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中。如在快表中未找到对应的页表项,则还须再访问内存中的页表,找到后,把从页表项中读出的物理块号送往地址寄存器;同时,再将此页表项存入快表的一个寄存器单元中,亦即,重新修改快表。但如果联想寄存器已满,则 OS 必须找到一个老的且已被认为是不再需要的页表项,将它换出。下图示出了具有快表的地址变换机构。
    在这里插入图片描述
    由于成本的关系,快表不可能做得很大,通常只存放16~512个页表项,这对中、小型作业来说,已有可能把全部页表项放在快表中;但对于大型作业而言,则只能将其一部分页表项放入其中。由于对程序和数据的访问往往带有局限性,因此,据统计,从快表中能找到所需页表项的概率可达90%以上。这样,由于增加了地址变换机构而造成的速度损失可减少到10%以下,达到了可接受的程度。


    访问内存的有效时间

    从进程发出指定逻辑地址的访问请求,经过地址变换,到在内存中找到对应的实际物理地址单元并取出数据,所需要花费的总时间,称为内存的有效访问时间( Effective Access Time , EAT )。假设访问一次内存的时间为 t ,在基本分页存储管理方式中,有效访问时间分为第一次访问内存时间(即查找页表对应的页表项所耗费的时间 t )与第二次访问内存时间(即将页表项中的物理块号与页内地址拼接成实际物理地址所耗费的时间 t )之和:

    EAT=t+t=2t

    在引入快表的分页存储管理方式中,通过快表查询,可以直接得到逻辑页所对应的物理块号,由此拼接形成实际物理地址,减少了一次内存访问,缩短了进程访问内存的有效时间。但是,由于快表的容量限制,不可能将一个进程的整个页表全部装入快表,所以在快表中查找到所需表项存在着命中率的问题。所谓命中率,是指使用快表并在其中成功查找到所需页面的表项的比率。这样,在引入快表的分页存储管理方式中,有效访问时间的计算公式即为

    EAT=a x λ+(t+λ)(1-a)+t=2t+λ-t x a

    上式中,λ表示查找快表所需要的时间, a 表示命中率, t 表示访问一次内存所需要的时间
    可见,引入快表后的内存有效访问时间分为查找到逻辑页对应的页表项的平均时间 a x λ+(t+λ)(1-a),以及对应实际物理地址的内存访问时间 t 。假设对快表的访问时间λ为20ns(纳秒),对内存的访问时间 t 为100 ns ,则下表中列出了不同的命中率 a 与有效访问时间的关系:
    在这里插入图片描述
    正是由于引入了快表,CPU访问数据所耗费的时间明显减少。


    两级和多级页表

    现代的大多数计算机系统都支持非常大的逻辑地址空间(232B~264B)。在这样的环境下,页表就变得非常大,要占用相当大的内存空间。例如,对于一个具有32位逻辑地址空间的分页系统,规定页面大小为4KB即212B ,则在每个进程页表中的页表项数可达1MB之多。又因为每个页表项占用一个字节,故每个进程仅仅其页表就要占用1MB的内存空间,而且还要求是连续的。显然这是不现实的,我们可以采用这样两个方法来解决这一问题:

    • 对于页表所需的内存空间,可采用离散分配方式,以解决难以找到一块连续的大内存空间的问题
    • 只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入

    1.两级页表( Two - Level Page Table )

    针对难于找到大的连续的内存空间来存放页表的问题,可利用将页表进行分页的方法,使每个页面的大小与内存物理块的大小相同,并为它们进行编号,即依次为0#页、1#页,…, n #页,然后离散地将各个页面分别存放在不同的物理块中。同样,也要为离散分配的页表再建立一张页表,称为外层页表( Outer Page Table ),在每个页表项中记录了页表页面的物理块号。下面我们仍以前面的32位逻辑地址空间为例来说明。当页面大小为4KB时(12位),若采用一级页表结构,应具有20位的页号,即页表项应有1M个;在采用两级页表结构时,再对页表进行分页,使每页中包含210(即1024)个页表项,最多允许有210个页表分页;或者说,外层页表中的外层页内地址 P2 为10位,外层页号 P1 也为10位。此时的逻辑地址结构如图所示。
    在这里插入图片描述
    由图可以看出,在页表的每个表项中,存放的是进程的某页在内存中的物理块号,如0#页存放在1#物理块中,1#页存放在4#物理块中。而在外层页表的每个页表项中所存放的是某页表分页的首址,如0#页表存放在1011#物理块中。我们可以利用外层页表和页表这两级页表来实现进程从逻辑地址到内存中物理地址的变换。
    为了方便实现地址变换,在地址变换机构中,同样需要增设一个外层页表寄存器,用于存放外层页表的始址,并利用逻辑地址中的外层页号作为外层页表的索引,从中找到指定页表分页的始址,再利用 P 作为指定页表分页的索引,找到指定的页表项,其中即含有该页在内存的物理块号,用该块号 P 和页内地址 d 即可构成访问的内存物理地址。下图示出了两级页表时的地址变换机构。
    在这里插入图片描述
    上述对页表实施离散分配的方法,虽然解决了对于大页表无需大片连续存储空间的问题,但并未解决用较少的内存空间去存放大页表的问题。换言之,只用离散分配空间的办法并未减少页表所占用的内存空间。能够用较少的内存空间存放页表的唯一方法是,仅把当前需要的一批页表项调入内存,以后再根据需要陆续调入。在采用两级页表结构的情况下,对于正在运行的进程,必须将其外层页表调入内存,而对于页表则只需调入一页或几页。为了表征某页的页表是否已经调入内存,还应在外层页表项中增设一个状态位 s ,其值若为0,表示该页表分页不在内存中,否则说明其分页已调入内存。进程运行时,地址变换机构根据逻辑地址中的 P1 去查找外层页表;若所找到的页表项中的状态位为0,则产生一个中断信号,请求 OS 将该页表分页调入内存。

    2.多级页表

    对于32位的机器,采用两级页表结构是合适的,但对于64位的机器,采用两级页表是否仍然合适,须做以下简单分析。如果页面大小仍采用4 KB 即212 B ,那么还剩下52位,假定仍按物理块的大小(212位)来划分页表,则将余下的42位用于外层页号。此时在外层页表中可能有4096G个页表项,要占用16384 GB 的连续内存空间。这样的结果显然是不能令人接受的。因此,必须采用多级页表,将外层页表再进行分页,也就是将各分页离散地装入到不相邻接的物理块中再利用第2级的外层页表来映射它们之间的关系
    对于64位的计算机,如果要求它能支持264(=1844744TB)规模的物理存储空间,则即使是采用三级页表结构也是难以办到的,而在当前的实际应用中也无此必要。故在近两年推出的64位 OS 中,把可直接寻址的存储器空间减少为45位长度(即245)左右,这样便可利用三级页表结构来实现分页存储管理。


    反置页表(Inverted Page Table)

    1.反置页表的引入

    在分页系统中,为每个进程配置了一张页表,进程逻辑地址空间中的每一页,在页表中都对应有一个页表项。在现代计算机系统中,通常允许一个进程的逻辑地址空间非常大,因此就需要有许多的页表项,而因此也会占用大量的内存空间。为了减少页表占用的内存空间,引入了反置页表。一般页表的页表项是按页号进行排序的,页表项中的内容是物理块号。而反置页表则是为每一个物理块设置一个页表项,并将它们按物理块的编号排序,其中的内容则是页号和其所隶属进程的标识符。在 IBM 公司推出的许多系统中都来用了反置页表,如 AS /400、 IBM RISC System 和 IBM RT 等系统。

    2.地址变换

    在利用反置页表进行地址变换时,是根据进程标识符和页号,去检索反置页表。如果检索到与之匹配的页表项,则该页表项(中)的序号 i 便是该页所在的物理块号,可用该块号与页内地址一起构成物理地址送内存地址寄存器。若检索了整个反置页表仍未找到匹配的页表项,则表明此页尚未装入内存。对于不具有请求调页功能的存储器管理系统,此时则表示地址出错。对于具有请求调页功能的存储器管理系统,此时应产生请求调页中断,系统将把此页调入内存。
    虽然反置页表可有效地减少页表占用的内存,例如,对于一个具有64MB的机器,如果页面大小为4KB,那么反置页表只占用64KB内存。然而在该表中只包含了已经调入内存的页面,并未包含尚未调入内存的页面。因此,还必须为每个进程建立一个外部页表( External Page Table )。该页表与传统的页表一样,当所访问的页面在内存时,并不需要访问外部页表,仅当发现所需之页面不在内存时,才使用它。在页表中包含了各个页在外存的物理位置,通过它可将所需之页面调入内存。
    由于在反置页表中是为每一个物理块设置一个页表项,当内存容量很大时,页表项的数目还是会非常大的。要利用进程标识符和页号去检索这样大的一张线性表是相当费时的。于是可利用 Hash 算法来进行检索,这样可以很快地找到在反置页表中的相应页表项。不过在采用 Hash 算法时,可能会出现所谓的“地址冲突”,即有多个逻辑地址被映射到同一个 Hash 表项上,必须妥善解决这一问题。

    展开全文
  • 基本分页存储管理基本概念

    千次阅读 2019-10-18 07:50:29
    1. 基本分页存储管理思想:把进程分页,各个页面可离散地放到各个的内存块中 基本分页的存储管理的思想: 2. 重要概念 (1)“页框、页帧、内存块、物理块”和“页、页面” (2)“页框号、页帧号、内存...

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

    思考:连续分配方式的缺点
    考虑支持多道程序的两种连续分配方式:
    1.固定分区分配:缺乏灵活性,会产生大量的内部碎片,内存的利用率很低。
    2.动态分区分配:会产生很多外部碎片,虽然可以利用“紧凑”技术来处理,但是“紧凑”的时间代价很高。
    所以
    如果允许将一个进程分散地装入到许多不相邻的分区中,便可以充分地利用内存,而无需再进行“紧凑”。

    灵魂一问:

    固定分区分配和分页式存储的区别?

    和动态分区分配和分段式存储的区别?

    内存空间的分配和回收可以分为两种方式
    1.连续分配管理
    2.非连续分配管理:分页、分段、段页式
    注:连续分配:为用户进程分配的必须是一个连续的内存空间
    非连续分配:为用户进程分配的可以是一些分散的内存空间

    1. 基本分页存储管理的思想:把进程分页,各个页面可离散地放到各个的内存块中

    基本分页的存储管理的思想:
    在这里插入图片描述

    2. 重要概念

    (1)“页框、页帧、内存块、物理块”和“页、页面”
    (2)“页框号、页帧号、内存块号、物理块号”和“页号、页面号”

    分页存储管理的基本概念:
    注:页框的页框号是从0开始的。页号也是从0开始的。页的大小除了最后一个其他的都和页框的大小相等。页框是对内存进行分框,页是对进程进行分页。各个页面不必连续存放在页框中,也不必按先后顺序
    在这里插入图片描述

    3. 如何实现地址转换

    (1)计算出逻辑地址对应的页号
    (2)找到对应页面在内存中的存放位置
    (3)算出逻辑地址对应的页内偏移量
    (4)物理地址=页面始址+页内偏移量

    灵魂一问:
    将进程地址空间分页后,操作系统该如何实现逻辑地址到物理地址的转换?

    回答这个问题之前先思考一下进程在内存中连续存放时,操作系统是如何实现逻辑地址到物理地址的转换的?
    重定位寄存器存放装入模块的起始位置
    思想:模块在内存中的“起始地址”+目标内存单元相对于起始位置的“偏移量”
    在这里插入图片描述
    那么如果采用分页技术,应该如何实现地址转换?
    将进程的逻辑地址空间分页,那么会分成若干个页。
    在这里插入图片描述
    其主要的想法是,在每一个页都记录其起始地址,然后加上偏移量即可。
    在这里插入图片描述
    计算:
    计算其实很简单:
    就是现在逻辑地址中算出页号和偏移量,由页号决定起始地址,再将起始地址+偏移量就得到了物理地址。
    在这里插入图片描述

    4. 页号、页内偏移量的计算

    (1)页号=逻辑地址/页面大小;页内偏移量=逻辑地址%页面大小
    (2)或根据逻辑地址结构计算,逻辑地址=【页号P,页内偏移量W】
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5. 页表

    (1)页表记录进程页面和实际存放的内存块之间的对应关系
    (2)

    一个进程对应一张页表所以

    可以知道对应程序的外存地址

    在这里插入图片描述
    ,进程的每一页对应一个页表项,每一个页表项由“页号”和“块号“组成
    (3)每个页表项的长度是相同的,页号是”隐含“的。
    为了能够知道进程的每个页面在内存中的存放位置,操作系统要为每个进程建立一张页表。
    1.一个进程对应一张页表
    2.进程的每一页对应一个页表项
    3.每个页表项由“页号”和“块号/页框号”组成
    4.页表记录进程页面和实际存放的内存块之间的对应关系
    5.每个页表项的长度是相同的,页号是“隐含”的

    在这里插入图片描述
    为什么每个页表项的长度是相同的,页号是“隐含”的?
    如果知道了页表存放的起始位置,和页表项占几个字节,如果是按字节编址,否则按字编址的话,就是页表项占几个字;之后由页表的起始位置和每个页表项所占的地址个数可以计算出各个页号对应页表项存放的位置,自然就不需要标记页号。
    在这里插入图片描述

    页表会按顺序连续地存放在内存中

    如果该页表在内存中存放的起始位置为X,则M号页对应的页表项一定是存放在内存地址位X+3*M的位置。

    展开全文
  • 基本分页存储管理方式 页面的概念 ① 物理划分块的大小 = 逻辑划分的页的大小 ②页面大小要适中: a.太大,(最后一页)内碎片增大,类似连续分配的问题。 b.太小的话,页面碎片总空间虽然小,提高了利用...
  • 操作系统 实验4【基本分页存储管理
  • 基本分页存储管理方式

    万次阅读 多人点赞 2018-07-26 20:16:41
    连续分配存储管理方式产生的问题 在分区存储管理中,要求把进程放在一个连续的存储区...分页存储管理:离散分配的基本单位是页 分段式存储管理:离散分配的基本单位是段 段页式存储管理:离散分配的基本单位是...
  • 这是操作系统实验报告,实现的是操作系统,里面含有源代码,能够对内存进行初始化,内存分配和回收等功能,决定原创。希望对各位有帮助
  • 文章目录前言思考:连续分配方式的缺点知识总览把“固定分区分配”改造为“非连续分配版本”分页存储管理基本概念思考:如何实现地址的转换方法一:方法二:逻辑地址结构页表 前言 此篇文章是我在B站学习时所做的...
  • 分页存储管理方式介绍及例题

    千次阅读 2020-03-17 14:45:38
    一、引入  在存储器管理中连续...基于这一思想便产生了离散分配方式,根据在离散分配时所分配地址空间的基本单位不同,又可将离散分配方式分为以下三种:(1)分页存储管理方式(2)分段存储管理方式(3)段页式...
  • 在执行过程中访问的页若已在内存,进行动态的地址重定位,执行指令(同基本分页存储管理) 2. 请求分页式存储管理 在执行过程中访问的页未装入内存时,产生缺页中断,进程阻塞,等待从磁盘动态装入页面; 缺页装入...
  • 操作系统实验四 基本分页存储管理

    千次阅读 2020-05-21 19:06:57
    目的:熟悉并掌握基本分页存储管理思想及其实现方法,熟悉并掌握基本分页存储管理的分配和回收方式。 任务:模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、内容、要求与安排 1、实验内容 内存空间的...
  • 实验目的:熟悉并掌握基本分页存储管理思想。 熟悉并掌握基本分页存储管理的分配和回收方式,并能够模拟实现。 实验内容:用高级语言模拟实现基本分页存储管理,要求: 1、 内存空间的初始化——可以由用户输入...
  • 操作系统:基本分页存储管理方式

    千次阅读 2019-01-21 11:16:40
    1、离散分配方式 ----连续分配方式(分区存储管理)要求把作业放在一个连续的存储区中,因而会形成许多“碎片”,固定分区会产生内部碎片,动态分区会产生外部...如果离散分配的基本单位是页,则称为分页存储管理...
  • 文章目录一、什么是分页存储二、页表(存PCB中)三、如何实现地址转换 一、什么是分页存储 将内存分为一个个大小相等的分区, 这些分区称作为(页框、页帧、内存块、物理块、物理页面)若对分区进从编号,则又有了...
  • 【操作系统】分页存储管理方式

    万次阅读 多人点赞 2016-12-12 21:16:25
    分页存储管理:离散分配的基本单位是页 分段式存储管理:离散分配的基本单位是段 段页式存储管理:离散分配的基本单位是段、页 页面和物理块空间划分 将一个用户进程的地址空间(逻辑空间)划分成若干个大小相等的...
  • 基本分页、请求分页储存管理方式

    千次阅读 2018-06-19 14:10:53
    基本分页储存管理方式具有如下特征:1) 一次性。要求将作业全部装入内存后方能运行。许多作业在每次运行时,并非其全部程序和数据都要用到。如果一次性地装入其全部程序,造成内存空间的浪费。2) 驻留性。作业装入...
  • 基本分页存储管理的模拟实现 课程设计《操作系统》课程设计报告基本分页存储管理的模拟实现学 院 计算机科学与技术专 业 计算机科学与技术( 师范)学 号 □□□□□学 生 姓 名 □□指导教师姓名 □□□2012年6月 20...
  • 1、离散分配方式----连续分配方式(分区存储管理)要求把作业放在一个连续的存储区中,因而会形成许多“碎片”,固定分区会产生内部碎片,动态分区会产生...如果离散分配的基本单位是页,则称为分页存储管理方式;如...
  • 第四章 分页存储管理方式

    千次阅读 2018-10-30 17:19:10
    基本分页存储管理 基本分段存储管理 段页式存储管理 二,基本分页存储管理 离散分配内存: 作业规定大小划分成小份;内存也按同样大小划分成小份 作业的任一小份可分散放入内存任意未使用的小份 1)页面的...
  • 基本分页存储管理的理解

    千次阅读 2020-09-19 11:21:51
    分页基本思想将逻辑地址转换为物理地址 怎么转换呢? 逻辑地址结构+页表 1⃣️逻辑地址 高地址部分为页号 低地址为偏移量。 2⃣️页表 第一部分页号 第二部分内存中的块号 这里一个用高地址 一个用第一部分描述在...
  • 基本分页存储管理一、实验内容及要求二、实验环境三、设计思想四、数据结构五、实验代码六、运行结果 一、实验内容及要求 模拟分页存储管理方式; 模拟分页存储管理方式,定义地址变换机构函数; 程序要添加适当的...
  • 从本文开始就介绍不连续分配的几种方式,本文主要介绍基本分页存储管理。 连续分配:为用户进程分配的必须是一个连续的内存空间。 非连续分配:为用户进程分配的是一些分散的内存空间。 1 将连续分配改造成非连续...
  • 将虚拟技术和分页存储结合起来,那么当一个程序内存无法装下时,就先装入部分程序执行,分页存储管理方式是将程序分成一个个页,那么内存中也就是先存放部分页。 步骤: 在虚拟技术的管理下,页表的属性不在页号和...
  • 分页存储管理实验报告,实验报告,包含源码,结果,很详细的,不错
  • 如果离散分配方式是页,则被称为分页存储管理方式 1. 目的: 内存管理是操作系统的核心内容。本设计要求用高级语言编写模拟一个简单的内存管理程序。通过本实验可以加深对常见操作系统的内存管理模块的实现方法的...
  • 分页存储管理系统的思想被提出了。 分页,是把主存存储空间按大小一定的块划分,称为物理块,或页框。同时按同样的尺寸去划分作业的地址空间,形成一个个相等的页面,称为逻辑页或虚页。因此,作业可以按页为单位,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,755
精华内容 7,502
关键字:

分页存储管理方式基本思想