网站开发设计公司,网站安全维护方案,南昌整站优化,定制网站 北京一、内存管理的目的和功能 内存一直是计算机系统中宝贵而又紧俏的资源#xff0c;内存能否被有效、合理地使用#xff0c;将直接影响到操作系统的性能。此外#xff0c;虽然物理内存的增长现在达到了N个GB#xff0c;但比物理内存增长还快的是程序#xff0c;所以无论物理…一、内存管理的目的和功能 内存一直是计算机系统中宝贵而又紧俏的资源内存能否被有效、合理地使用将直接影响到操作系统的性能。此外虽然物理内存的增长现在达到了N个GB但比物理内存增长还快的是程序所以无论物理内存如何增长都赶不上程序增长的速度所以操作系统如何有效的管理内存便显得尤为重要。 1内存管理的目的 内存管理的目的主要有两个一是方便用户使用二是提高存储器的利用率。 2内存管控的功能 内存管理主要有四个方面的功能 1内存空间的分配与回收由操作系统完成主存储器空间的分配和管理使程序员摆脱存储分配的麻烦提高编程效率。 2地址转换在多道程序环境下程序中的逻辑地址与内存中的物理地址不可能一致因此存储管理必须提供地址变换功能把逻辑地址转换成相应的物理地址 3存储保护和存储共享保证各道作业在各自的存储空间内运行互不干扰同时充分利用内存空间共享内存中存放的信息。 4内存空间的扩充利用虚拟存储技术或自动覆盖技术从逻辑上扩充内存。 二、内存管理中的基本概念 1逻辑地址、相对地址、虚地址 源程序经过编译处理后源程序中的各种符号元素转换成机器指令和数据组成的目标程序并用实际地址码替换符号地址。这种经编译后的目标代码所限定的地址域叫做该程序的地址空间。地址空间中的各个地址叫做相对地址逻辑地址或虚地址。地址空间总是从0号单元开始编址其他所以地址都是以0单元为起始地址顺序编码的。 2线性地址 线性地址是逻辑地址到物理地址变换之间的中间层。在段页式存储管理中程序代码会产生逻辑地址或者说是段中的偏移地址加上相应段的基地址就生成了一个线性地址。如果启用了分页机制那么线性地址可以再经变换以产生一个物理地址。若没有启用分页机制那么线性地址直接就是物理地址。 3物理地址、绝对地址、实地址 物理地址空间是指内存中物理单元的集合它是地址转换的最终地址进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取。物理地址又叫绝对地址、实地址。 4地址重定位 当装入程序将可执行代码装入内存时必须通过地址转换将逻辑地址转换成物理地址这个过程称为地址重定位。即把程序相对地址空间的逻辑地址转换成存储空间的绝对地址的工作叫做地址重定位又叫地址映射或地址变换。 地址重定位又分为两种静态重定位和动态重定位。 1静态重定位 在装入作业时由装入程序把用户程序中的指令地址和数据地址全部转换成存储空间的绝对地址。这种地址转换工作是在程序执行前集中一次完成的程序执行时就无需要再进行地址转换工作。 主要优点是无需增加硬件地址变换机构主要缺点是要求给每个程序分配一片连续的存储空间。 2动态重定位 动态重定位是靠硬件的地址转换机构来实现的通常使用一个重定位寄存器。在存储管理为程序分配一个主存区域后装入程序直接把程序和数据装入到分配的存储区中然后把这个存储区的起始地址送入重定位寄存器中。在程序执行时对于每一个存储器的访问都要讲相对地址转化成主存的绝对地址。 主要优点是使用更加灵活有效不用给程序分配一大片连续的空间能够给用户提供一个比主存大的多的地址空间。 三、常见的内存管理技术 1简单存储管理 1单一连续分配 单一连续分配是指主存中只有一个用户作业把程序装入主存之后占据全部存储空间和资源。 内存在此方式下分为系统区和用户区系统区仅提供给操作系统使用通常在低地址部分用户区是为用户提供的、除系统区之外的内存空间。这种方式的优点是简单、无外部碎片可以釆用覆盖技术不需要额外的技术支持。缺点是只能用于单用户、单任务的操作系统中有内部碎片存储器的利用率极低。 2分区分配 分区分配又分为固定式分区和可变式分区。 ----------------------------- 固定分区分配是将内存空间划分为若干个固定大小的区域每个分区只装入一道作业。当有空闲分区时便可以再从外存的后备作业队列中,选择适当大小的作业装入该分区如此循环。 固定分区方式存在两个问题一是程序可能太大而放不进任何一个分区中这时用户不得不使用覆盖技术来使用内存空间二是主存利用率低当程序小于固定分区大小时也占用了一个完整的内存分区空间这样分区内部有空间浪费这种现象称为内部碎片。 ----------------------------- 可变式分区在进程装入内存时根据进程的大小动态地建立分区并使分区的大小正好适合进程的需要。 动态分区在开始分配时是很好的但是之后会导致内存中出现许多小的内存块。随着时间的推移内存中会产生越来越多的碎片且随着进程的换入/换出很可能会出现更多更小的内存块内存的利用率随之下降。这些小的内存块称为外部碎片指在所有分区外的存储空间会变成越来越多的碎片这与固定分区中的内部碎片正好相对。 动态分区的分配策略考虑以下几种算法 》首次适应(First Fit)算法空闲分区以地址递增的次序链接。分配内存时顺序查找找到大小能满足要求的第一个空闲分区。 》最佳适应(Best Fit)算法空闲分区按容量递增形成分区链找到第一个能满足要求的空闲分区。 》最坏适应(Worst Fit)算法又称最大适应(Largest Fit)算法空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区也就是挑选出最大的分区。 》邻近适应(Next Fit)算法又称循环首次适应算法由首次适应算法演变而成。不同之处是分配内存时从上次查找结束的位置开始继续查找。 ----------------------------- 解决碎片的方法是采取紧凑技术即对碎片进行拼接但是需要消耗系统资源。 3覆盖与交换 1.虚拟存储器 当一个作业程序的地址空间比主存可用空间大时操作系统可将这个程序的地址空间的一部分放入主存内其余部分放在辅存上。当访问的信息不在主存时再由操作系统负责调入所需要的部分。这样计算机系统好像为用户提供了一个比实际主存大得多的存储空间这样的技术叫做虚拟存储器。 实现的基础一是需要有相当数量的外存二是需要有一定容量的主存三是地址变换机构。 2.覆盖 覆盖是指同一主存区可以被不同的程序段重复使用。作业在一次运行时把那些不会同时执行的程序段共用一个主存区。相互覆盖的程序段叫做覆盖可共享的主存区叫做覆盖区。覆盖技术的基础是提供正确的覆盖结构。 3.交换 交换就是系统根据需要把主存中暂时不允许的某个或某些作业部分或全部移到辅存而把辅存中的某个或某些作业移到相应的主存区并使其投入运行。 2页式存储管理 1基本概念 页式存储管理将程序逻辑地址空间划分为固定大小的页(page)而物理内存划分为同样大小的页框(page frame)。为方便地址转换页面大小应是2的整数幂。每一个作业有一个页表用来记录各个页在内存中所对应的块页框。 2地址结构 地址结构包含两部分前一部分为页号P后一部分为页内偏移量W。其中页号与页内偏移量所占多少位与页面的大小和主存的最大容量有关。 每页大小为4KB主存大学为4GB。则地址长度为32 位其中0~11位为页内地址即12~31位为页号地址空间最多允许有2^20页。 3地址变换机制 上面介绍的地址变换过程可知若页表全部放在内存中则存取一个数据或一条指令至少要访问两次内存一次是访问页表确定所存取的数据或指令的物理地址第二次才根据该地址存取数据或指令。显然这种方法比通常执行指令的速度慢了一半。 为此在地址变换机构中增设了一个具有并行查找能力的高速缓冲存储器——快表又称联想寄存器(TLB)用来存放当前访问的若干页表项以加速地址变换的过程。 3请求式分页存储管理 1基本概念 请求分页系统建立在基本分页系统基础之上为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能。请求分页是目前最常用的一种实现虚拟存储器的方法。在请求分页系统中只要求将当前需要的一部分页面装入内存便可以启动作业运行。在作业执行过程中当所要访问的页面不在内存时再通过调页功能将其调入同时还可以通过置换功能将暂时不用的页面换出到外存上以便腾出内存空间。 2扩充的页表 3地址变换机制 4页面置换算法 1.最佳算法OPT算法 用来评价其他算法使用缺页中断率 f F / A其中F为作业失败访问的次数A为作业总的访问次数 2.先进先出算法FIFO算法 淘汰在内存驻留时间最长的页面。 3.最近最久未使用淘汰算法LRU算法 淘汰最久没有被使用的页面。 4.最不经常使用淘汰算法LFU算法 淘汰一段时间内访问次数最少的页面。 LRU和LFU的区别http://blog.csdn.net/guoweimelon/article/details/50855351 4段式存储管理 1基本概念 段式存储管理要求每个作业的地址空间按照程序自身的逻辑划分为若干段每个段都有一个唯一的内部段号。 2地址结构 逻辑地址由段号S与段内偏移量W两部分组成。 段号为16位段内偏移量为16位则一个作业最多可有2^1665536个段最大段长为64KB。 3地址变换机制 5段页式存储管理 1基本概念 在段页式存储中每个分段又被分成若干个固定大小的页。 2地址结构 逻辑地址由段号S、段内页号P与段内偏移量W两部分组成。 3地址变换机制 参考资料 http://c.biancheng.net/cpp/html/2611.html http://blog.csdn.net/hguisu/article/details/5713164 http://www.cnblogs.com/CareySon/archive/2012/04/25/2470063.html http://blog.csdn.net/yang_yulei/article/details/24142743 http://blog.csdn.net/leves1989/article/details/3305402 http://blog.csdn.net/yusiguyuan/article/details/9664887