- 1、本文档共144页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 存储管理 概述 现代计算机最重要的两个硬件—处理器和内存内存管理是一项重要的基础工作 内存管理的基本功能: 分配和释放 抽象和映射 隔离与共享 存储扩充 编译、链接与加载编译器完成的是代码的翻译,在链接之前,它不确定具体的地址,而是把需要重定位地址的地方写到符号表里连接器把各个“可重定位目标文件”组合成一个可执行文件,并确定具体的地址加载器根据文件中的地址,以及具体的内存管理方案,把程序加载到特定的位置 编译:将源程序翻译为机器指令,生成目标文件,这些目标文件并不能直接执行编译器记录外部函数和变量的引用位置,每个目标文件都有记录这些位置的符号表 链接:将多个目标文件模块装配成一个完整的程序,它解析符号表,把对符合的引用转换成具体的数值地址一般都把地址做成相对于地址0开始的偏移,便于下一步的再修改,因为此时并不知道具体会在内存的哪个位置运行 加载:执行程序之前,当获得了一块实际的内存之后,加载器根据该内存的首地址,再次修改和调整可执行文件中的地址,完成地址的最后绑定 静态地址重定位:分配内存后,程序执行前,一次性修改程序中的地址,它无需硬件支持,但修改后不能更换内存地址 动态地址重定位:分配内存地址后,把该内存的首地址赋给一个硬件装置,但不修改链接以后的可执行文件中的逻辑地址采用“首地址+逻辑地址”的方法来生成真正的物理地址 存储器层次现代的存储器,已经不仅仅指内存了,它包括了寄存器,缓存,内存,磁盘这样一种层次结构 从下往上访问速度越来越快容量越来越少价格越来越贵 存储器层次设计的目的——提高访问速度 当访问数据时,首先在高层次的存储单元里查找,当找不到时,再向下一层去查找 每一层都是其上一层的缓存 几种内存管理方法 固定分区主存空间被划分成固定数目、大小不等的分区,每个分区可执行一个作业,各作业并发执行 执行方法: 根据当天的作业情况,进行分区 建立“主存分配表” 根据待运行作业的内存需求,选择合适的分区,载入运行 缺点 分区大小需要事先由管理员确定 内存利用率不高 分区的个数,限制了并发进程的个数 不容易进行内存的动态扩充 可变分区也是根据作业的大小选择分区,但分区的划分是根据作业和空余内存来动态分配的 执行方法:每当来一个新进程,从可用内存中划分出一块连续的区域,供进程使用,没有合适的区域,则等待别的进程释放内存 几种分配策略 最先适应分配算法(First Fit) 下次适应分配算法(Next Fit) 最优适应分配算法(Best Fit) 最坏适应分配算法(Worst Fit) 快速适应分配算法(Quick Fit) 伙伴系统(buddy算法)原理:任何尺寸为2i的空闲块,都可以分解成两个2 i-1的块,反过来也可以把他们合并起来,这两个块,成为伙伴 执行方法:建立一个空闲数组free[i],i=0,…N,每个元素表示一个链表,该链表中的元素是大小为2^i的分配单元 分配:若需要分配大小为n单元的内存,则在free中寻找满足n=2^i的这样的i在free[i]中寻找有没有空闲块,有就分配,没有就继续在free[i+1]中寻找,…,直到找到这样的k(ki),使得存在空闲块把该块一分为二,L与R,R放入下一级的free[k-1]中,看大小是否为i,如果还不是,则继续分割,再把另一半放入free[k-2],直到分割到2^i大小 释放:当某尺寸为2^i的块回收时,检查这个块的伙伴是否已经被回收,若没有,则该块放入free[i]中,若已回收,则他们两个合并成一个2^(i+1)的块重复以上过程,直到不能合并下去,最后放入某一个free[k],k=i中 伙伴算法有些重要的应用场景,比如在Linux中的Slab分配器 一些辅助技术当出现内存不足时,可以用另一些技术来补充内存不足有两种情况:1,总的物理内存足够,只是没有合适的分区;2,程序的内存要求已经超过了实际物理内存 移动技术:适用于第一种情况把已经分配的内存块移动到内存的一段,而把空闲区移到另一端 缺点:引起很大的开销 很多时候不允许进行移动 对换技术也是针对第一种情况选择一个已经阻塞、占用内存大小合适的进程,将其换到磁盘缓冲区中,然后调其他进程进去运行 核心问题:按照什么原则,选择换出进程换进程的那些部分什么时间来换 覆盖技术主要针对第二种情况原因:尽管程序的总内存需求超过了实际物理内存,但并不是每时每刻都要这么多,实际上每时刻,都只有部分代码在运行 执行方法:在程序执行过程中,将程序的不同模块在内存中交替运行,每次运行一部分。 页式内存管理 由于不知将来会被载入到何处,链接器在进行目标文件的装配时,安排的地址,都是相对于0开始的地址 由此,所有的程序,地址
您可能关注的文档
最近下载
- 拦污清污类自动机械格栅机样本_新.pdf
- DL_T 596-2021 电力设备预防性试验规程.docx
- 《西游记》“整本书阅读”教学策略研究.docx
- 电力建设施工现场安全文明施工标准化图片展示.ppt
- -ISO17025(GBT27025)-实验室认可质量手册-(第二部分).docx VIP
- (三级)农作物种植技术员技能鉴定考试复习题库(含理论、实操).docx
- 国家开放大学2022春(202207)《2228物业信息管理》期末考试真题及答案-开放专科.docx VIP
- 2024年高中英语学业水平试题及答案.pdf VIP
- 民营企业人力资源管理现状与变革途径研究.doc
- 酒精计温度浓度换算表9143.pdf VIP
文档评论(0)