26-基本的分页存储

基本的分页存储请添加图片描述

连续分配方式的缺点

固定分区分配

缺乏灵活性,会产生大量的内部碎片,内存利用率很低

动态分区分配

会产生很多外部碎片,虽然可以用紧凑技术来处理,但是紧凑的时间代价很高


如果能让一个进程分散的装入许多不相邻的分区中,便可充分的利用内存,而无需利用"紧凑"。
基于此思想,就产生了"非连续分配管理方式",即离散分配管理方式


连续分配:为用户进程分配的必须是一个连续的内存空间
非连续分配:为用户进程分配的可以是一些分散的内存空间


固定分区分配改造为非连续分配版本

将固定分区分配改造为非连续分配版本,不可避免的会有一些内部碎片,因此我们可以将分区大小设置的更小,进程拆分成更多份,这样产生的内部碎片会更小一点请添加图片描述

分页存储的基本概念

定义

页框

将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个页框,或者称页帧,内存块,物理块。每个页框有一个编号,即页框号,页框号从0开始

页面

用户进程的地址空间也分为与页框大小相等的一个个区域,称为页面。每个页面也有一个编号,即页号,页号也从0开始。

:进程的最后一个页面可能没有页框大。因此页框不能太大,否则不能产生过大的内部碎片

页表

为了能让进程知道每个页面在内存中的存放位置,操作系统要为每个进程建立一张页表.请添加图片描述1. 一个进程对应一张页表
2. 进程的每一页对应一个页表项
3. 每个页表项由页号和块号组成
4. 页表记录进程页面和实际存放内存块之间的关系请添加图片描述
各页表项会连续的存放在内存中,如果页表在内存地址中存放的起始位置为X,则M号页表项一定是存放在X+3*M的位置请添加图片描述

地址转换

进程在内存中连续存放时,操作系统使用[[003-1-1-内存的基础知识#动态重定位 |动态重定位]]的方法实现从逻辑地址到物理地址的转化,通过重定位寄存器。
思想:模块在内存中的起始地址+目标内存单元相对于起始位置的偏移量

计算步骤

我们在计算时要通过如下步骤来实现地址转换

  1. 要算出逻辑地址对应的页号
  2. 要知道页号对应页面在内存中的起始地址
  3. 要算出逻辑地址在页面内的偏移量
  4. 物理地址=页面始址+页内偏移量
计算细节
  1. 页号=逻辑地址/页面长度(取整)
  2. 页内偏移量=逻辑地址%页面长度(取余)
  3. 页面在内存中的起始位置:操作系统需要用某种数据结构来记录进程在各个页面的起始位置
页号要求

:为了方便页号、页内偏移量,页面的大小一般是2的整数幂请添加图片描述
如果每个页面大小是2^kB,用二进制数表示逻辑地址,则末尾K位即为页内偏移量,其余部分就是页号。请添加图片描述
因此,如果让每个页面的大小为2的整数幂,计算机就可以很方便的得出一个逻辑地址对应的页号和页内偏移量。
如果有K位表示"页内偏移量",则说明该系统中一个页面大小为2^k个内存单元
如果有M位表示"页号",则说明该系统中,一个进程最多允许有2^M个页面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜太郎呀!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值