操作系统-内存管理(内存的分配与回收(非连续分配方式,基本分页存储管理方式,基本地址变换机构))

1. 基本分页存储管理

分页存储:

将内存空间分为一个个大小相等的分区(eg:每个分区4KB),每个分区就是一个页框
每个页框有一个编号,即页框号,页框号从0开始

注意:

  1. 页框=页帧=内存块=物理块=物理页面
  2. 页框号=页帧号=内存块号=物理块号=物理页号

将进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部分称为一个页或页面。
每个页面也有一个编号,即页号,页号也是从0开始。

操作系统以页框为单位为各个进程分配内存空间。进程的个页面分别放入一个页框中。
进程的页面与内存的页框是意义对应的关系。

页表:

操作系统需要找到进程的每个页面在内存的位置,需要为每个进程建立一张页表。
这张页表通常保存在进程的PCB中。

在这里插入图片描述
由上图可知:

  1. 一个进程对应一张页表
  2. 进程的每个页面对应一个页表项
  3. 每个页表项由页号和块号组成
  4. 页表记录进程页面和实际存放的内存块之间的映射关系

eg:
假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该为多少字节?

内存块大小(页框)=页面大小=4KB
4GB内存总共会有2^20个页框(页框号0~2^20-1)
页框号至少需要20bit进行标识,所以对应页表块号项至少是20bit(至少3字节)

页号不需要占用存储空间,因为页表项是连续存放的,因此页号可以隐藏
可以类比数组(页表存储结构是连续的)

注意:页表记录的只是内存块号,而不是内存块的起始地址,i号内存块的起始地址=i×内存块大小

基本分页的地址转化步骤

虽然进程的各个页面在内存中时离散存放的,但是各个页面内部时连续存放的

eg:访问A的逻辑地址

  1. 确定逻辑地址A对应的页号P
  2. 查找页表,找到P页面在内存中的起始地址
  3. 确定逻辑地址A的页内偏移量w

逻辑地址A对应的物理地址=P号页面在内存中的起始地址+页内偏移量w

页号=逻辑地址/页面长度(取结果的整数部分)
页内偏移量w=逻辑地址%页面大小(取结果的余数部分)

总结:

  1. 如果页面大小刚好是2的整数幂,则只需把页表中记录的物理块号拼接上页内偏移量就能得到对应的物理地址。

    结构:物理块号+页内偏移量

逻辑地址结构:

eg:假设一个页面大小为4KB=4096B
在这里插入图片描述

基本地址变换机构

基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。

通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M(页表项数)。
进程未执行时,页表的始址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放到页表寄存器中。

整个过程如下:

  1. 进程被调度,操作系统恢复进程的运行状态,将进程PCB中的页表的始址和页表长度放入页表寄存器上
  2. 首先将逻辑地址的页号分离出来,和页表寄存器中的页表长度进行越界判断,出错的话以中断的形式通知操作系统。
  3. 找到页表项地址(页表项地址=F+P*页表项长度)。通过页表地址的映射,找到内存块号
  4. 将找到的内存块号与页内偏移量w进行拼接,找到对应的物理地址。(注意,这里的页面大小默认为2的整数幂)(不是2次幂物理地址=内存块号×页面大小+页内偏移量)

在这里插入图片描述

需要注意:

  1. 比较页号P和页表长度M时,若P>=M,则产生越界中断,否则继续执行。页号是从0开始的,而页表长度至少是1,因此P=M时也会越界

  2. 注意区分页表项长度、页表长度、页面大小的区别。

    页表长度:指的是这个页表中总共有几个页表项,即总共有几个页
    页表项长度:指的是每个页表项占多大的存储空间
    页面大小:指的是一个页面占多大的存储空间

在分页存储管理(页式管理)的系统中,只要确定了每个页面的大小,逻辑地址结构就确定了。因此,页式管理中地址是一维的。

只要给出一个逻辑地址,系统就可以自动地算出页号(系统已知页面大小)、页内偏移量两个部分,并不需要显式地告诉系统这个逻辑地址中,页内偏移量占多少位。

需要注意:

页表在内存中是连续存储的,如果已知页表在内存的起始地址为X,页表大大小为4KB,系统的物理内存的大小为4GB。

首先可以退出需要20bit(3字节)才可以表示内存块号(页号不需要保存)

所以一个页框可以存放的页表项为4KB(4096B)/3(B)=1365个。但是每个页框还会留下1B的页内碎片

因此1365号页表存放的地址为X+3*1365+1

如果每个页表项占4字节,则每个页框刚好可存放1024个页表项。这样就避免了页内碎片。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: CSND的存储管理是一种计算机内存管理方式,通过将内存分为固定大小的的面和等大小的面框,实现了虚拟内存和物理内存之间的映射,从而更好地管理内存资源。 在请求存储管理中,当一个程序需要访问某个面时,首先判断该面是否在物理内存中。如果在物理内存中,那么直接访问即可;如果不在物理内存中,则需要进行面调度,将该面从磁盘读取到内存中。这个过程主要依靠操作系统表来完成,表存储着虚拟和物理的映射关系。 面置换算法是请求存储管理的核心,常见的置换算法包括最佳置换算法、先进先出算法、最近最久未使用算法等。这些算法根据不同的策略来选择需要被置换出去的面,从而保证内存资源的合理分配和利用。 请求存储管理有很多优点。首先,它实现了虚拟内存的概念,使得程序的地址空间可以大于物理内存的大小,从而提高了系统的性能和可用性。其次,面的分配回收是按需进行的,大大节省了内存的空间。此外,由于面是等大小的,简化了内存管理的复杂度,提高了操作系统的效率。 总之,请求存储管理是一种高效、灵活的内存管理方式,通过合理的面调度和面置换算法,实现了虚拟内存和物理内存之间的有效映射,提高了系统的性能和可用性。在实际应用中,它被广泛地应用于各种计算机系统和操作系统中。 ### 回答2: CSND是一家技术社区网站,是程序员学习和交流技术的重要平台。请求存储管理意味着请求在CSND上实施存储管理的方法。存储管理是一种操作系统内存管理技术,将整个物理内存划分为固定大小的面,并将进程的逻辑地址空间划分为相同大小的面。 在请求存储管理中,每当一个进程请求内存时,操作系统会将其逻辑地址空间中的面映射到物理内存中的面。如果目标面不在物理内存中,那么操作系统需要将物理内存中的某个面替换出去,以便腾出空间给请求的面。 对于CSND来说,实施存储管理可以提高网站的性能和可扩展性。通过将网站的各个功能和内容划分为面,并使用合适的数据结构进行管理,可以提供更高的访问速度和更好的用户体验。此外,存储管理还可以减少服务器的内存占用,使得网站能够处理更多的并发请求。 要实施存储管理,CSND可以使用现有的操作系统或自行开发一套定制的管理系统。首先,需要对CSND的功能和内容进行分析和划分,确定面的大小和数量。然后,需要设计合适的数据结构来管理这些面,并实现面的分配和替换算法。最后,需要将修改后的代码部署到服务器上,进行测试和调优,以确保系统能够稳定和高效地运行。 总之,请求存储管理CSND将有助于提高网站的性能和可扩展性,为用户提供更好的体验和服务。通过合理划分和管理面,CSND可以更高效地处理大量的并发请求,并减少服务器的资源占用。 ### 回答3: 存储管理是一种计算机系统中用于管理虚拟内存和物理内存的技术。在存储管理中,物理内存被划分为固定大小的框,而虚拟内存被分为相同大小的。通过表来进行虚拟地址与物理地址之间的映射,实现了虚拟内存的灵活分配和管理。 首先,存储管理充分利用了虚拟内存的概念,使得计算机系统可以运行更大规模和更复杂的程序。因为虚拟内存可以大于物理内存,所以可以运行超过物理内存容量的程序,提升了系统的性能和可用性。 其次,存储管理实现了虚拟内存分页机制,将程序的逻辑地址空间划分为固定大小的,这样可以更加高效地进行存储和检索操作。通过表的维护和更新,可以将虚拟地址映射到物理地址,从而实现了对内存分配和管理。 另外,存储管理还具有一定的安全性和隔离性。通过表的权限设置,可以对不同的内存进行不同的访问权限控制,保护程序和系统的安全。同时,不同的程序之间可以独立地使用自己的虚拟地址空间,相互之间不会影响,增加了系统的隔离性。 最后,存储管理还能够减少内存碎片的产生,提高了内存的利用率。当物理内存不足时,可以通过面置换算法将一部分不常用的面调入外存,从而释放出更多的内存空间,满足系统和程序的需求。 综上所述,存储管理是一种高效、灵活和安全的内存管理技术,能够提升计算机系统的性能和可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NUC_Dodamce

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

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

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

打赏作者

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

抵扣说明:

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

余额充值