内存管理

本章主要学习目标:

  • 讨论内存管理的主要需求
  • 理解内存分区的原因并解释所使用的各种技术
  • 理解并解释分页的概念
  • 理解并解释分段的概念
  • 分区和分段的区别

一、内存管理的需求

  1. 重定位(把内存换出后再换入,放入内存的其他区域)
  2. 保护(运行时,保护进程的程序和数据不被未授权的访问和修改 [ 用硬件保护 ] )
  3. 共享(多个进程访问共享内存区域)
  4. 逻辑组织(模块化编程 -> 段式内存管理)
  5. 物理组织(两级存储:内存、外存,交换)

二、内存分区

  • 固定大小的分区
    1.程序可能太大而不能放到一个分区中
    2.内存利用率非常低(有内碎片)
  • 大小不等的分区
    1.分区数目在系统生成阶段已经确定,它限制了系统活动进程的数目
    2.内存利用率低(有较少内碎片)
  • 动态分区
    动态分区在开始时是很好的,但它最终导致在内存中出现许多小空洞。随着时间的推移,
    内存中产生越来越多的碎片(外碎片),内存利用率随之降低。
    放置算法:最佳适配,首次适配和下次适配。其中首次适配的最简单、最好、最快的。
  • 伙伴系统
    是固定分区和动态分区的折中方案

三、分页

大小不等待额分区和大小可变的分技术在内存的使用上都是低效的,前者会产生内部碎片,后者会产生外部碎片。但是,假如内存被划分成大小相等的块,且快相对比较校,每个进程也被分成同样大小的块,那么进程中称为的块可以指定到内存中称为页框的可用块。分页不会产生外碎片,可能在最后一页产生内碎片。

系统会给每个进程维护一个页表,记录着该进程的每一页对应的页框的位置。

页面大小:页面太小,页内碎片少,但进程所占页面多页表大。页面太大,页表数目减少,但页内碎片增多。页面大小必须是2的幂,以便容易地表示出相对地址。相对地址由程序的起点和逻辑地址定义,可以用页号和偏移量表示。

分页与固定分区的不同之处:采用分页技术的分区相当校,一个程序可以占多个分区,并且这些分区不是连续的。

如何从逻辑地址求出物理地址:逻辑地址 A, 页大小 L

  1. 页号 = int [ A / L ],偏移量 = A mod L
  2. 查页表: 页号 -> 块号
  3. 物理地址 = (块号 × 页大小) + 偏移量
    (块号 × 页大小 = 起始地址)

四、分段

细分用户程序的另一种可选方案是分段。采用分段技术,可以把程序和其先关的数据划分都几个段中。尽管段有一个最大长度限制,但并不要求所有程序的所有段相等。和分页一样,采用分段技术时的逻辑地址也是由两部分组成:段号和偏移量。


五、分页和分段的区别

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

  2. 页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.

  3. 分页的作业地址空间是一维的.分段的地址空间是二维的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值