操作系统第四章学习笔记 (3)存储器管理 存储管理的离散分配方式 分页

版权声明:抱最大的希望,为最大的努力,做最坏的打算。 https://blog.csdn.net/qq_37748451/article/details/84623582

存储管理的离散分配方式

基本分页存储管理

基本分段存储管理

段页式存储管理

1)页面的概念:内存划分成多个小单元,每个单元K大小,称(物理)块。作业也按K单位大小划分成片,称为页面。

                           物理划分块的大小 = 逻辑划分的页的大小

                           ②页面大小要适中。

                               Ø 太大,(最后一页)内碎片增大,类似连续分配的问题。

                               Ø 太小的话,页面碎片总空间虽然小,提高了利用率,但每个进程的页面数量较多,

                                  页表过长,反而又增加了空间使用。

2)页表的概念:为了找到被离散分配到内存中的作业,记录每个作业各页映射到哪个物理块,形成的页面映射表,简称页表。

                           每个作业有自己的页表

                           页表的作用: 页号到物理块号的地址映射

                           要找到作业A

                                       关键是找到页表(PCB)

                                       根据页表找物理块

 理解内存使用,解决两个问题:

         •如何将一个作业装入内存空间?

         •如何找到该作业并运行它?

         

3)地址的处理  

     连续方式下,每条指令用基地址+偏移量即可找到其物理存放的地址。

     //分页方式下详细的地址处理会如何呢?

     规律:
     
Ø作业相对地址在分页下不同位置的数有一定的意义结构:

  页号+页内地址(即页内偏移)

     Ø关键的计算是:根据系统页面大小找到不同意义二进制位的分界线

     Ø从地址中分析出页号后,地址映射只需要把页号改为对应物理块号,偏移不变,即可找到内存中实际位置。

    •重要参数:系统页面大小=8B

  à 页内的所有指令编址用了3位

  à 111增一后进位,下一条第9条指令已经到了下一页1000

  à1011中的1代表是1号页,而011代表是该页中偏移3B后的第4条,

   •根据页表,1号页存在7#物理块上。

   •7#物理块又在哪?

  à物理块的编址也是8B大小决定的,地址结构类似

 à7#块的第一条指令地址是111000。第7块中向下偏移3就是要找的指令。其地址就是111011。

4)地址变换机构     --具体实现地址映射

围绕页表进行工作,那么页表数据放在哪?

n寄存器。一个进程有n个页,页表就需要记录n项数据,需要n个寄存器。不现实。

n内存。只设置一个页表寄存器PTR(page table register)记录页表在内存中的首地址和页表长度,运行时快速定位页表。

 

  地址变换过程

 分页系统中,进程创建,放入内存,构建页表,在PCB中记录页表存放在内存的首地址及页表长度。

1.运行某进程A时,将A进程PCB中的页表信息写入PTR中;

2.每执行一条指令时,根据分页计算原理,得到指令页号X和内部偏移量Y;

3.CPU高速访问PTR找到页表在哪里;

    为防止错误检索,增加预先的判断:

    • 计算得到的页号是否大于页表长度(即页表项数)

    • 一个5页的进程,页面编号0-4,若地址计算出的页号不在该范围,一定产生了越界错误。

4.查页表数据,得到X实际对应存放的物理块,完成地址映射计算,最终在内存找到该指令。

5)快表

      进程发出逻辑地址的访问请求,经过地址变换,到内存中找到对应的实际物理地址单元并取出数据,

      所需花费的总时间,称为内存的有效访问时间EAT(effective access time)

问:设访问一次内存时间为t,则基本分页机制下EAT=2t,why?

       CPU操作一条指令需访问内存两次:

       1.访问内存中的页表(以计算指令所在的实际物理地址)

       2.访问指令内存地址

     针对访问速度问题---引入快表

     快表放什么?--正在执行进程的页表的数据项

     n设一次查找访问快表时间为t' ,则

  EAT= a*t' + (1-a)(t'+t)    +    t

       = 2t +t' -t*a

6)多级页表

页表大小的讨论

进程分页离散存放,但页表的数据是连续在存放内存的。而页表可能很大:

现代操作系统支持非常大的逻辑地址空间的进程。如32位系统,可编址的最大代码数为232,若页面大小为4KB(4*210),则支持的最大进程页表项数可达码232/212=220,有1M个,每个页表项占1B(字节),则页表大小就有1MB。

反置页表

猜你喜欢

转载自blog.csdn.net/qq_37748451/article/details/84623582