当前位置: 首页 > news >正文

内存管理(第五、六章)

功能

内存空间的分配与回收

地址转换(地址映射)——逻辑地址转换为物理地址,实现内存的访问和管理

内存空间的扩充,即虚拟内存

存储保护

管理内存的方式

连续分配

单一连续分配

内存分为系统区和用户区

简单但内存利用率低

固定分区分配

分区划分有大小相等,也有大小不等

将分区大小进行排队

产生内碎片(不连续、零散的未被使用的小块内存)问题,造成内存浪费

动态分区分配

数据结构:动态分区表和动态分区链

分配算法:

基于顺序搜索的动态分区分配算法——

首次适应算法【空闲分区地址递增】

循环首次适应

最佳适应【空闲分区容量递增】

最坏适应【空闲分区容量递减】

基于索引搜索的动态分区分配算法——

快速适应算法

伙伴系统【二叉树】

哈希算法【哈希函数映射】

分区分配与回收:

分配内存

回收内存——

①回收区上面的分区是空闲分区->空闲区容量增大为原来空闲区和回收区的容量之和

②回收区下面的分区是空闲分区->空闲区和回收区合并的容量为新的空闲区的容量,新的空闲区在空闲链表中的地址使用之前回收区的地址

③回收区上下面的分区都是空闲分区->两个空闲区和回收区合并的容量为新的空闲区的容量,新的空闲区在空闲链表中的地址使用回收区上面的空闲区地址

④回收区上下面的分区都不是空闲分区->新建一个单独的地址节点存放到空闲链表中,大小为回收区的大小

动态重定位分区分配

紧凑-时间换空间的策略

离散分配

分页存储管理方式

单级分页

进程的虚拟地址空间被划分为相同大小的页,物理内存也被划分为相同大小的物理块(页框)

核心思想:虚拟地址(一维)映射到物理地址

逻辑地址分离成逻辑页号和页内偏移量

访问一个数据需要访存2次,快表(最近访存表)中需要访存1次

多级分页

每一个一级页表的每个表项对应一个区域,区域又分别包含一个二级页表,进一步映射到物理页

页表基址寄存器存放的是顶级页表的起始物理地址

没有外碎片,但有页内碎片

分段存储管理方式

段是一个逻辑上相关的内存区域,每个段都有自己的起始地址和长度以及属性

段表——二维表

逻辑地址——段号+段内偏移量,二维地址

地址变换机构

优点:方便编程、信息共享、信息保护、动态链接、动态增长

外部碎片

段页式存储管理方式

段中分页——段表,段内页表

逻辑地址——段号+段内页号+页内偏移量

产生内碎片

地址变换机构

碎片:分段无内碎片

扩充内存

多道程序环境下逻辑扩充内存的方法

覆盖

划分模块

大型程序,不需要内存支持,但程序设计复杂

对换/交换

暂时移到磁盘或其他存储介质

内存不足的情况下

性能开销

虚拟内存管理

虚拟存储器:请求调入功能和置换功能,容量=内存+外存,运行速度->内存运行速度,每位成本->外存

局部性原理:时间局部性,空间局部性

特征:多次性(对应传统的一次性)(多次调入内存)、对换性(对应传统的驻留性)、虚拟性

※作业在运行前,不必全部装入内存,且运行过程中也不必一直驻留内存

管理内存方式:

请求分页管理方式——

请求调页功能、

页表、

缺页中断机构、

地址变换机构、

内存分配【页面分配策略:固定分配,局部置换;固定分配,全局置换;可变分配,局部置换。物理块分配算法:平均分配算法,按比例分配算法,考虑优先权算法】、

页面调入策略、【何时:预调页策略、请求调页策略。何处:文件区、对换区。缺页率

页面置换功能【最佳置换算法(无法实现),先进先出页面置换算法(会有Belady现象),最近最久未用页面置换算法LRU,最少适用页面置换算法(最先淘汰被修改且没访问的页面),Clock时钟页面置换算法(淘汰最近未用的页面)】

调入页面的时机【预调页策略、请求调页策略】

异常:抖动

※发生抖动时,可以采取的有效策略:撤销部分进程

请求分段管理方式

虚拟容量:

最大不超过计算机的地址位数

内存和外存的容量之和

相关文章:

  • RocketMQ 深度解析:消息中间件核心原理与实践指南
  • AUTOSAR图解==>AUTOSAR_SRS_ICUDriver
  • 关于 Web 安全:5. 认证绕过与权限控制分析
  • 前端面经-虚幻引擎5
  • 嵌入式项目之QT页面制作
  • Python笔记:windows下编译python3.8.20
  • 股票程序化交易-使用python获取新浪财经期货行情数据
  • 如何理解Pytorch中前向传播的计算过程
  • dify-plugin-daemon的.env配置文件
  • Java 流程控制:从「小白」到「能用」的 while 循环指南
  • DAY34
  • 市场需求文档撰写
  • 超大数值减法
  • 解决论文中字体未嵌入的问题
  • STM32中的SPI通信协议
  • SprigBoot整合rocketmq-v5-client-spring-boot
  • CMake从入门到实战:现代C++项目构建指南
  • Android组件化框架设计与实践
  • Python60日基础学习打卡D35
  • NumPy数组切片
  • 大丰网站建设价格/2345网址导航官网官方电脑版下载
  • 做电影网站需要注意什么东西/搜索引擎营销的优势
  • 网站建设考虑的因素/今日足球比赛预测推荐分析
  • 网站建设需要费用/今天大事件新闻
  • 网站建设能挣钱/推广普通话宣传标语
  • 布吉网站建设哪家便宜/推广渠道平台