操作系统:基本分页存储管理方式

1、离散分配方式

----连续分配方式(分区存储管理)要求把作业放在一个连续的存储区中,因而会形成许多“碎片”,固定分区会产生内部碎片,动态分区会产生外部碎片。虽然可通过“紧凑”方法将许多碎片拼接成可用的大块空间,但需为之付出很大开销。如果允许将一个进程直接分散的装入到许多不相邻接的分区中,则无需再进行“紧凑”。基于这一思想而产生了离散分配方式。

如果离散分配的基本单位是页,则称为分页存储管理方式;

如果离散分配的基本单位是段,则称为分段存储管理方式。

---- 在分页存储管理方式中,如果不具备页面置换功能,则称为基本的分页存储管理方式,或称为纯分页存储管理方式。它不具有支持实现虚拟存储器的功能,它要求把每个作业全部装入内存后方能运行。

也就是说,不具备页面置换功能的基本分页存储管理方式要求把每个作业全部装入内存之后方能运行。

2、页面与页表

----页面和物理块

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也加以编号,如0#块,1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中

由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。

----页面大小

问:页面大小该如何设置?(内存碎片、置换的效率问题、页表长度、内存利用率)

在分页系统中的页面大小应适中。

页面若太小,粒度比较小一方面虽然可使内存碎片减小,有利于提高内存利用率。但是另一方面页表会比较大,也会使每个进程占用较多的页面,从而导致进程的页表过长(页号->块号),占用大量内存,还会降低页面换进换出的效率。

若页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,却又会使页内碎片增大因此,页面的大小选择应适中,且页面大小应是2的幂,通常为512B~8KB。

----地址结构

分页地址中的地址结构有两部分:前一部分是页号P,后一部分为页内位移量W(或称为页内地址)。如下图所示:如果逻辑地址空间是2的m次方,页面大小是2的n次方(字节),那么逻辑地址的高m-n位是页号,低n位是页内偏移量。


上述地址结构中,两部分的地址长度为32位,其中0~11位(计12位)为页内偏移量,即每页大小=2^12=4KB;12~31位(计20位)为页号,即(页表项的个数)最多的页数=2^20=1MB。页内偏移量也称为页内位移、页偏移或页内地址等。对于某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址W可按下式求得: P=INT(A/L)        W=(A)MOD(L)    其中,INT是整除函数,MOD是取余函数。

例如,系统的页面大小是1KB(1024B),设A=2170B,则得出P=2,W=2170-2048=122.

----页表

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

在进程地址空间内的所有页(0~n),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块号。在配置了页表后,进程执行时,通过查找该页表,即可找到每页在内存中的号(页框号),页表的作用是实现从页号到物理块号的地址映射。即使在简单的分页系统中,也常在页表的表项中设置一存取控制字段,用于对该存储块中的内容加以保护。

-- 当存取控制字段仅有一位时,可用来规定该存储块中的内容是允许读/写,还是只读。

-- 当存取控制字段为二位,则可规定为读/写、只读和只执行等存取方式。

如果有一进程试图去写一个只允许读的存储块时,将引起操作系统的一次中断。如果要利用分页系统去实现虚拟存储器,还需在页表中增设状态位/修改位等数据项来供页面换进换出参考,具体可看请求分页存储管理方式。http://blog.csdn.net/dongyanxia1000/article/details/51727339 

为了实现上面的方便,系统中设置了一个页表寄存器(PTR,Page Table Register),其中存放页表在内存的起始地址F和页表的长度M。进程未执行时,页表的起始地址和长度存放在进程控制块(PCB)中。当进程执行时,才将页表起始地址和长度存入页表寄存器中。

假设页面大小为L,页表长度(页表项的个数)为M,逻辑地址A通过地址变换得到物理地址E的过程如下:

--1)计算页号P=(int)(A/L);页内偏移量W=A%L。

--2)比较页号P(理论值0~M-1)和页表长度M,若P>= M,则产生越界中断,否则转到下一步执行。(判断是否越界)

--3)页表中页号P对应的页表项的地址=页表起始地址F + 页号P x 页表项大小,取出该页表项中的物理块号b的内容。

--4)计算E=bxL+W   (页面的大小就是物理块的大小,页内地址就是物理块内的地址)

--5)用得到的物理地址E去访问内存。(放到总线,访问内存)

以上整个地址变换过程都是由硬件自动完成的。地址变换过程如下图所示:


 请求分页存储管理方式

----- 请求分页系统是建立在基本分页的基础上的,为了能支持虚拟存储器功能而增加了请求调页功能和页面置换功能。

相应地,每次调入换出的基本单位都是长度固定的页面,这使得请求分页系统在实现上要比请求分段系统简单。

请求分段系统在换进和换出时是可变长度的段因此,请求分页便成为目前最常用的一种实现虚拟存储器的方式。

请求分页中的硬件支持 

-- 为了实现请求分页,系统必须提供一定的硬件支持。除了需要一台具有一定容量的内存及外存的计算机系统外,还需要有页表机制缺页中断机构以及地址变换机构

1)页表机制

在请求分页系统中所需要的主要数据结构页表。其基本作用仍然是将用户空间中的逻辑地址变换为内存空间中的物理地址

由于只将应用程序的一部分调入内存,还有一部分仍在盘上,故需在页表中再增加若干项,供程序(数据)在换进、换出时参考。

在请求分页系统中的每个页表项如下所示:

各字段的说明如下:

---- 状态位P:用于指示该页是否已调入内存,供程序访问时参考。(“在/不在”位)

---- 访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,供选择换出页面时参考

---- 修改位M:表示该页在调入内存后是否被修改过。置换页面时参考。

由于内存中的每一页都在外存上有一份副本,因此,若未被修改,在置换该页时就不需要将该页写回到外存上,直接丢弃,以减少系统的开销启动磁盘的次数;已被修改,则必须将该页重写到外存上,以保证外存中所保留的始终是最新副本。

---- 外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。(页框号)

有的操作系统实现还添加了 

保护位:指出一个页允许什么类型的访问。读写?读?写?

TLB禁止位:当前页表项是否禁止TLB?

2)缺页中断机构

-- 在请求分页系统中,每当所要访问的页面不在内存中时,便产生一次缺页中断,请求OS将所缺之页调入内存。

-- 缺页中断作为中断,同样需要经历诸如保护CPU现场、分析中断原因、转入缺页中断处理程序进行处理、恢复CPU现场等几个步骤。

-- 但缺页中断又是一种特殊的中断,它与一般的中断相比,有着明显的区别,主要表现在下面两个方面:

---- 在指令执行期间产生和处理中断信号。通常,CPU都是在一条指令执行完成后,才检查是否有中断请求到达。若有,便去响应,否则,继续执行下一条指令。然而,缺页中断是在指令执行期间,发现所要访问的指令或数据不在内存时所产生和处理的。

---- 一条指令在执行期间,可能产生多次缺页中断。所以,系统中的硬件机构应能保存多次中断时的状态,并保证最后能返回到中断前产生缺页中断的指令处继续执行。

3)地址变换机构

-- 请求分页系统中的地址变换机构,是在分页系统地址变换机构的基础上,为实现虚拟存储器而增加了某些功能而形成的,

产生和处理缺页中断,以及从内存中换出一页的功能等等。

---- 在进行地址变换时,首先去检索快表,试图从中找出所要访问的页。若找到,便修改页表项中的访问位。对于写指令,还需将修改位置成“1”。然后利用页表项中给出的物理块号和页内地址形成物理地址。地址变换过程到此结束。

---- 如果在快表中未找到该页的页表项时,应到内存中去查找页表,再根据找到的页表项中的状态位P,了解该页是否已调入内存

---- 若该页已调入内存,这时应将此页的页表项写入快表,当快表已满时,应先调出按某种算法所确定的页的页表项;然后再写入该页的页表项。

---- 若该页尚未调入内存,这时应产生缺页中断,请求OS从外存该页调入内存

 


补充:硬失效和软失效

软失效:TLB没有、内存有,加载到TLB,利用页表项中给出的物理块号和页内地址形成物理地址。地址变换过程到此结束。

硬失效:TLB没有、内存没有,缺页中断,调入缺少的页

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值