您的当前位置:首页正文

分页存储管理,分段存储管理,段页式存储管理

2024-12-01 来源:个人技术集锦

转载出处:http:///wangrunmin/article/details/7967293

概括的挺详细的,然后我加上了纯分页系统和请求式分页系统的基本概念,也对有些部分稍作修改

一、分页存储管理

1、基本概念(页面和物理块)

页号P 页内位移d

页号:        P=INT[A/L]

页内位移:    d=[A] MOD L

举例:

设某系统的页面大小为1KB,A=3456,则P=3;d=384


3、页表

页号 块号 存储控制(存储控制用于对该存储块中的内容进行保护)

  0        2    

  1       15F    

  2       14E    

  3       1  

1) 程序执行时,从PCB中取出页表始址和页表长度(4),装入页表寄存器PTR

例:11406D=0010|110010001110B=2C8EH

      页号为2,位移量为C8EH=3214D

11406  DIV  4096=2

     11406  MOD  4096=3214

4)将页表始址与页号和页表长度(页表项所占的内存空间大小,因为计算机是通过计算得到相应的位置,不能一眼看出)的乘积相加,便得到该页表项在页表中的位置。

5)取出页描述子得到该页的物理块号。  2       14E

6) 对该页的存取控制进行检查。

例:0010|110010001101B

1110|110010001101B=EC8EH=60558D

或 14*4096+3214=60558D

6、纯分页系统

        所谓纯分页系统是指在调度一个作业时,必须把它的所有页一次装入到内存的物理块中,如果当时物理块不足,则该作业必须等待,直到有足够的物理块为止,这时系统可再调度另外的作业

7、请求式分页系统

        是目前常用的一种实现虚拟存储器的方式;基本思想是,作业在运行之前,只把当前需要的一部分页面装入内存,当需要其他页面是,才自动选择一些页交换到辅存,同时调入所需的页到内存中

二、分段存储管理

1.基本思想

2. 分段存储方式的引入

方便编程

分段共享

分段保护

动态链接

动态增长

15           12   11                  0

       段号            段内位移量

4. 段表

0     1K     4096    

1     4K     17500    

2     2K     8192  

(1). 程序执行时,从PCB中取出段表始址和段表长度(3),装入段表寄存器。

例:7310D=0001|110010001110B=1C8EH

段号为1,位移量为C8EH=3214D

(4). 将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。

(6). 检查段内位移量是否超出该段的段长(3214<4K),若超过,产生越界中断。

(7). 对该段的存取控制进行检查。

例:0001|110010001101B

三、分页与分段的主要区别

分页和分段有许多相似之处,比如两者都不要求作业连续存放.但在概念上两者完全不同,主要表现在以下几个方面:

(1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.

四、段页式存储管理

1.基本思想:

分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,便于段的共享与保护,将分页与分段两种存储方式结合起来,就形成了段页式存储管理方式。

为实现段页式存储管理,系统应为每个进程设置一个段表,包括每段的段号,该段的页表始址和页表长度。每个段有自己的页表,记录段中的每一页的页号和存放在主存中的物理块号。

1)程序执行时,从PCB中取出段表始址和段表长度,装入段表寄存器。

4)将段表始址与段号和段表项长度的乘积相加,便得到该段表项在段表中的位置。

5)取出段描述子得到该段的页表始址和页表长度。

7)将页表始址与页号和页表项长度的乘积相加,便得到该页表项在页表中的位置。

8)取出页描述子得到该页的物理块号。

9)对该页的存取控制进行检查。

五、在网上找到了一个比较形象的比喻,挺不错的,呵呵,列出来如下:
 
打个比方,比如说你去听课,带了一个纸质笔记本做笔记。笔记本有100张纸,课程有语文、数学、英语三门,对于这个笔记本的使用,为了便于以后复习方便,你可以有两种选择。

第一种是,你从本子的第一张纸开始用,并且事先在本子上做划分:第2张到第30张纸记语文笔记,第31到60张纸记数学笔记,第61到100张纸记英语笔记,最后在第一张纸做个列表,记录着三门笔记各自的范围。这就是分段管理,第一张纸叫段表。

第二种是,你从第二张纸开始做笔记,各种课的笔记是连在一起的:第2张纸是数学,第3张是语文,第4张英语……最后呢,你在第一张纸做了一个目录,记录着语文笔记在第3、7、14、15张纸……,数学笔记在第2、6、8、9、11……,英语笔记在第4、5、12……。这就是分页管理,第一张纸叫页表。你要复习哪一门课,就到页表里查寻相关的纸的编号,然后翻到那一页去复习

六、虚拟内存的置换算法

1、先进先出页面置换算法

        总是选择在内存中停留最长的页淘汰,即先进入内存的页先被换出内存

2、最佳页面置换算法

        当调入一个新的页面必须预先淘汰某个老页面时,所选择的老页面应是将来不再被使用,或者是在很久以后才被使用的页面。采用这种算法,理论上能保证有最少的缺页率,但无法实现,因为它需要人们预先知道作业整个运行期间的页面走向情况。

3、最近最少使用页面置换算法

        根据页面调入内存后的使用情况,选择最近最少使用的页面予以淘汰。

4、第2此机会页面置换算法

        对最老页面的R位进行检查,如果R位是0,那么这个页既老又没用,可立即被置换掉,如果R位是1,就清除掉这个位,并将该页放到链表的尾端,修改它的装入时间就像刚装入一样

5、时钟页面置换算法

        把所有页面都保存在一个类似时钟表面的环形链表中,用一个指针指向最老的页面。当发生缺页中断时,算法检查指针指向的页面,如果R位是0就淘汰掉这页,并把新页插入这个位置,再把指针前移一个位置;是1,就清除R位并把指针前移一个位置

显示全文