页式内存管理

基本原理

    1.等分内存

    页式存储管理将内存空间划分成等长的若干区域,每个区域的大小一般取2的整数幂,称为一个物理页面有时称为块。内存的所有物理页面从0开始编号,称作物理页号。

    2.逻辑地址

    系统将程序的逻辑空间按照同样大小也划分成若干页面,称为逻辑页面也称为页。程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号。每个页面内从0开始编址,称为页内地址。程序中的逻辑地址由两部分组成:

              页式存储管理 - paul - he_haoyi 的博客

    3.内存分配

    系统可用一张“位示图”来登记内存中各块的分配情况,存储分配时以页面(块)为单位,并按程序的页数多少进行分配。相邻的页面在内存中不一定相邻,即分配给程序的内存块之间不一定连续。

    对程序地址空间的分页是系统自动进行的,即对用户是透明的。由于页面尺寸为2的整数次幂,故相对地址中的高位部分即为页号,低位部分为页内地址。

实现原理

    1.页表

    系统为每个进程建立一张页表,用于记录进程逻辑页面与内存物理页面之间的对应关系。地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列,形如:

页式存储管理 - paul - he_haoyi 的博客

    2.地址映射过程

    页式存储管理采用动态重定位,即在程序的执行过程中完成地址转换。处理器每执行一条指令,就将指令中的逻辑地址(p,d)取来从中得到逻辑页号(p),硬件机构按此页号查页表,得到内存的块号B’,便形成绝对地址(B’,d),处理器即按此地址访问主存。

    3.页面的共享与保护

    当多个不同进程中需要有相同页面信息时,可以在主存中只保留一个副本,只要让这些进程各自的有关项中指向内存同一块号即可。同时在页表中设置相应的“存取权限”,对不同进程的访问权限进行各种必要的限制。

另一种解释

页式存储管理:把主存储器物理地址分成大小相等的许多区,每个区称为一,与此对应,编制程序的逻辑地址也分成页的大小与块的大小相等

(1)地址转换:绝对地址=块号*块长+块内地址
(2)计算块号公式:块号=字号*字长+位号

基本思路:

物理内存划分为许多固定大小的内存块,称为物理页面

逻辑地址空间也划分为大小相同的块,称为逻辑页面

当一个用户程序被装入内存时,不是以整个程序为单位,把它存放在一整块连续的区域,而是以页面为单位来进行分配的。对于一个大小为N的页面程序,需要有N个空闲的物理页面来把它装载。这些物理页面不一定是要连续的

   在页式存储管理中需要解决三个问题:数据结构、内存分配与回收、地址映射。

   数据结构有两个:页表和物理页面表。

   A.页表:给出了任务逻辑页面号和内存中物理页面号之间的对应关系。

   B.物理页面表:描述内存空间中,各个物理页面的使用情况。


 内存的分配过程

   A.对于一个新来的任务,计算它所需要的页面数N,然后查看位示图,看是否还有N个空闲的物理页面。

   B.如果有足够的空闲物理页面,就去申请一个页表,其长度为N,并把页表的起始地址填入到该任务的控制块中。

   C.分配N个空闲的物理页面,把他们的变换填到页表中,建立逻辑页面与物理页面直接的对应关系。

   D.修改位示图,对刚刚被占用的那些物理页面进行标记。

地址映射的基本思路:

   A.逻辑地址分析:对逻辑地址,找到它所在的逻辑页面,以及它在页面内的偏移地址。

   B.页表查找:根据逻辑页面号,从页表中找出它对应的物理页面号。

   C.物理地址合成:根据物理页面号和页内偏移地址,最终确定物理地址。

逻辑地址分析:

   页面的大小都是2的整数次幂。对于给定的一个逻辑地址,可以直接把它的高位部分作为逻辑页面号,把它的低位部分作为页内偏移地址。例如,假设页面的大小是4KB,即2的12次幂,逻辑地址为32为,那么在一个逻辑地址当中,最低12位为页内偏移地址,而剩下的20位就是逻辑页面号。

计算方法:

   逻辑页面号=逻辑地址/页面大小

   页内偏移量=逻辑地址%页面大小

页表查找:

   页表作为操作系统的一个数据结构,通常保存在内核的地址空间中。

   页表基地址寄存器用来指向页表的起始地址;页表长度寄存器用来指示页表的大小,即对于当前任务,它总共包含有多少个页面。

物理地址合成:

   假设物理页面号为f,页内偏移地址为offset,每个页面大小为2n,那么相应的物理地址为:f×2n+offset。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值