内存管理

内存分段

  1. 将程序分成若干个段,每个段有各自的用途
  2. 运行程序时,不是将整个程序放进内存,而是将各个段放进内存
    程序分段
    程序分段后放进内存
  3. PCB中存放各个段的基址,寻找段内数据时根据基址+偏移量来完成进程段表(LDT)
  4. 进程与操作系统的交互进程与操作系统的交互

内存分区

  1. 动态分区:有内存请求时,从空闲内存中分配出一段内存来响应请求在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  2. 当有多个空闲分区时,应该怎么选择?在这里插入图片描述
    1. 最佳适配:选择满足要求的最小内存块
    2. 最差适配:在满足要求的空闲分区中选择最大的分区
    3. 首先适配:选择第一个满足要求的分区

内存分页

  1. 针对每个内存请求,系统一页一页的分配响应请求
  2. 操作系统初始化时就将物理内存分页
  3. 地址定位:在这里插入图片描述页表在这里插入图片描述
  4. 页号 = 地址 / 页面尺寸
  5. 偏移量 = 地址 % 页面尺寸
  6. 在这里插入图片描述在这里插入图片描述

多级页表

  1. 页小了,相应的页表就会增大,这导致内存的浪费在这里插入图片描述
  2. 页目录表(类比书目录的章)+页表(类比书目录的节),如果要查找某一节的内容首先找到这一章的地方,然后再查具体的某一节。这样一来,既保证了页目录和页号的地址连续又节约了内存。
  3. 多级页表缺点:每增加一级就要多一次访问内存,比较浪费时间

块表(TLB)

  1. TLB是寄存器,记录最近使用的页号,当TLB没有命中时就去多级页表寻找对应页的物理地址,再把对应的地址放入TLB中
    在这里插入图片描述

段页结合的实际内存管理

  1. 段面向用户,页面向硬件
  2. 在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

内存换入

  1. 当使用到程序某一部分时才将这部分映射到实际内存中在这里插入图片描述在这里插入图片描述

内存换出

  1. 换入和换出是一起工作的,有换入就该有换出
  2. 置换算法
    1. FIFO
    2. OPT
    3. LRU

内存换入换出的总结在这里插入图片描述在这里插入图片描述

  1. 当访问页表发现缺页时从磁盘上读取对应数据放入内存,如果分配的页框不足那么就需要换出页框中的一页数据将该数据写回磁盘
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值