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

特征:非连续分配管理方式。 为用户进程可以分配分散的内存空间。

思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。

一、概念

概念中只有(页、页面)/(页号、页面号)是和进程相关的,其他的都是和内存相关的。

1.内存空间划分的小块称为页框(内存块),页框号从0开始。

 2.用户进程的地址空间分为与页框大小相等的区域,称为页或页面,也是从0开始。

 3.页面与页框的关系,用页表表示。一个进程对应一个页表。每个页表由“页号”和“块号”组成。

    各个页面不必连续存放,也不必按先后顺序来,可以放到不相邻的各个页框中。

 二、地址转换

目的:实现逻辑地址到物理地址的转换。

思想:物理地址=页面在内存中的的“起始地址”+逻辑地址在页面内的“偏移量”。

1.计算方式:页号 = 逻辑地址/页面长度

                  页内偏移量 = 逻辑地址%页面长度

                  物理地址 = 页号的起始地址 + 偏移量

2.二进制计算:

为了方便计算页号、页内偏移量,页面大小一般设为2的整数幂。

假设用32个二进制位表示逻辑地址,页面大小为2^12 B = 4096 B = 4 KB

0号页的逻辑地址空间应该是0~4095,用二进制表示应该是: 00000000000000000000000000000000~ 00000000000000000000111111111111

1号页的逻辑地址空间应该是4096~8191,用二进制表示应该是: 00000000000000000001000000000000 ~ 00000000000000000001111111111111

2号页的逻辑地址空间应该是8192~12287,用二进制表示应该是: 与另一种算法的结果对比: 00000000000000000010000000000000 ~ 00000000000000000010111111111111

Eg:逻辑地址2,用二进制表示应该是00000000000000000000000000000010 若0号页在内存中的起始地址为x,则逻辑地址⒉对应的物理地址应该是X+000000000010

Eg:逻辑地址4097,用二进制表示应该是00000000000000000001000000000001 若1号页在内存中的起始地址为X,则逻辑地址4097对应的物理地址应该是X+000000000001
 

结论:如果每个页面大小为2^k B,用二进制数表示逻辑地址,则末尾K位就是页内偏移量,其余部分就是页号。

逻辑地址结构:

如果有K位表示“页内偏移量”,则说明该系统中一个页面的大小是2^K 个内存单元。

如果有M位表示“页号”,则说明在该系统中,一个进程最多允许有2^M 个页面。

三、基本地址变换机构

解释:用于实现逻辑地址到物理地址的转换的一组硬件机构

进程未执行的时候页表的始址和页表长度都是存放在PCB中的,当进程被调度时操作系统会将它放到页表寄存器中(PTR)。

页表寄存器记录了页表始址F和页表长度M

 Eg:设页面大小为L,页面大小是2的整数幂。逻辑地址A到物理地址E的变化如下:

1.计算页号P和偏移量W:P = A / L,W = A % L;

2. 判断页号是否越界:如果P>=M,产生越界中断,否则继续执行。(页号是从0开始的,所以实际长度p+1)

3.查询页表:页表P对应的页表项地址 = F+P*页表项长度(M为页表长度,指的是页表中页表项的个数;页表项长度指的是每个页表项占的存储空间),取出页表内容b,即为内存块号。

4.物理地址:E = b*L + W。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值