基于分段、分页技术的虚拟内存技术

1、分段

段的定义:把程序与其相关的数据划分到几个段中,比如数据段、代码段和堆栈段。段的长度有限制,但是不要求所有程序的所有段长度都一样。

分段:一个程序的所有段被装入内存中时,同样不要求这些段是连续的。分段类似于动态分区,当段放入内存中时,系统会为这些段分配容量相等的内存空间,随着大小不同的段被放入内存,渐渐会产生外部碎片,即段外部的内存小碎片。如图,放了进程1、2、3之后内存剩余4MB,很难再放入其他段了,这就是外部碎片。

在这里插入图片描述

段表:段表中的每一项表示一个段,由于段的长度可以不同,所以段表项不仅要给出这个段在内存中的起始位置,还要给出该段的长度。

地址转换:采用分段技术时的逻辑地址也是由段号和偏移量组成。以段号为索引,查找段表中的对应项,找到这个段的起始内存地址,再判断偏移量是否超出了该段的长度,超出则地址无效。物理地址就是该段的起始地址与偏移量之和。

2、分页

页的定义:内存被划分成大小固定、相等的块,且块比较小,每个进程也被划分成一个个这样的块,进程中的块称为(page),内存中的可用块称为页框(frame),进程中的页可以被装载到内存的页框中(类似把照片放入相框)。

分页:每个进程占用独立的虚拟地址空间,进程的整个空间并不实际存放在内存中,内存一般只存储进程的一部分。操作系统以页的方式,将进程的一部分页面换入内存或者换出到外存。分页不存在外部碎片,进程在被划分成页时,仅进程的最后一页可能会出现未使用的空间,即内部碎片。

页表:一个进程的所有页在内存中可以不是连续存放的,操作系统为每个进程维护一个页表,页表中每一项代表一页,每个页表项指明该页对应的页框地址&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值