第三章 存储方式(分页、分段、段页式存储)

 

        这三种存储方式都是将存储的内容按照一定的规则分割。通过指针指向查询自己想要的存储内容。大大方便了收索和理解。 

       页式存储:是将进程的地址空间按照固定的大小进行分割。

              1.   分配方式(计算方法)

                      用进程的地址空间的大小除以每页大小,等到的整数+1为页数(因为页号从0开始,所以表示为最大的页号——即最后一页!);余数为进程地址的最后的地址空间在最后一页中的页内地址,也是相对于最后一页的偏移量。

             2.   存储

                     在将进程的地址空间划分的同时,将主存空间按照页的大小划分成若干个物理块(其实和页也没什么区别,只不过是对实际存储空间而言的)。

                    存储是将每页分配到可以使用的物理空间中去,因为实际的空间可能是不连续的。所以这些页也就是离散的。

           3.    查找

                     那么要用的存储的内容的时候怎样才能找的到呢?所以这里引入了页表的概念。

                     当存储时,记录下每一页对应的物理块号。当进程运行的时候,就能通过页号找到对应的物理块号,所以页表的作用就是完成从页号到物理块号的转换。

                     然而仅仅找到了物理块号还不能达到我们的目的。我们是想将逻辑地址转换成物理地址,这样才能准确地找到我们需要的东西。

                    为了实现地址转换的功能,所以又提到了新的概念——寄存器。

                   页表寄存器:页表寄存器中保存了页表的始地址和页表的长度。在进行地址转换的时候,系统将页号与页表长度进行比较,如果页号大于等于页表寄存器中页表的长度,则访问越界,产生越界中断。如果没有越界,则根据页表寄存器中的页表始址和页号计算出该页在页表中的位置,找到物理块号。然后将物理块号装入物理地址寄存器

                  物理地址寄存器:物理地址寄存器中保存了物理块号和对应每块物理块的开始地址,通过物理块号就可以找到对应块的开始地址。于此同时将有效地址寄存器中的业内地址直接拼接在物理块开始地址的后面就可以了,也就是将逻辑地址转换成了物理地址。

 

           对于这样的存储方式我还有些不明白:

         如果之前的程序已经占有了前面的物理块,但是没有完全将物理块用掉——也就是没有占满,这一页剩下的空间在没有重新分配之前就谁也用不了了,那么就会造成一部分资源的浪费。也不清楚这样的存储方式是不是这样进行的,有待研究!

 

 

        这是对页式存储的一点点小描述,对于段式和段页式基本和页式存储相同。 不同之处就在于,段式存储他的分段式不定长的。而段页式是先分段,然后在给段进行分页。存储方式和地址的转换方式方法相同。段式和段页式进行转换时要求会更多一些。这里就不详细描述了!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lidonglong121/article/details/6872123
文章标签: 存储
个人分类: 基础知识
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭