操作系统内存管理-课件_第1页
操作系统内存管理-课件_第2页
操作系统内存管理-课件_第3页
操作系统内存管理-课件_第4页
操作系统内存管理-课件_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内存管理内存管理1目的详细描述内存硬件的各种组织方法讨论各种内存管理技术,包括分页和分段详细描述IntelPentium芯片,它支持纯分段和带分页的分段目的详细描述内存硬件的各种组织方法2背景为了运行程序必须把程序从磁盘载入到内存内存和寄存器是CPU唯一能直接访问的存储器寄存器的访问时间vs内存的访问时间缓存为了确保正常运行必须保护内存背景为了运行程序必须把程序从磁盘载入到内存3首先讨论:符号内存地址到实际物理地址的绑定逻辑地址与物理地址的区别动态装载、动态链接代码及共享库首先讨论:4在计算机科学中,库是用于开发软件的子程序集合。库和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码。库链接是指把一个或多个库包括到程序中,有两种链接形式:静态链接和动态链接,相应的,前者链接的库叫做静态库后者的叫做动态库。在计算机科学中,库是用于开发软件的子程序集合。库和可5静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。静态链接的最大缺点是生成的可执行文件太大,需要更多的系统资源,在装入内存时也会消耗更多的时间。静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法6动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加7基地址寄存器和界限地址寄存器一个进程使用的内存地址范围是由一对基地址寄存器和界限地址寄存器来定义基地址寄存器和界限地址寄存器一个进程使用的内存地址范围是由一8一个用户程序的多步骤处理一个用户程序的多步骤处理9地址绑定地址绑定是从一个地址空间到另一个地址空间的映射将指令与数据绑定到内存,有以下几种情况不知道驻留地址地址绑定地址绑定是从一个地址空间到另一个地址空间的映射不知道10逻辑地址空间和物理地址空间逻辑地址:CPU所生成的地址–(虚拟地址)物理地址:从内存单元所看到的地址绑定内存管理单元(MMU)逻辑地址空间和物理地址空间逻辑地址:CPU所生成的地址–(11内存管理单元(MMU)映射虚拟地址为物理地址的硬件设备

用户进程所生成的地址在送交内存之前,都将加上重定位寄存器(基地址寄存器)的值

用户程序决不会看到真正的物理地址内存管理单元(MMU)映射虚拟地址为物理地址的硬件设备

12库的链接及加载静态链接动态链接(dynamiclink)动态加载(dynamicloading)库的链接及加载静态链接13动态加载直到被调用之前,程序不会被载入到内存,即加载延迟到运行时优点不使用的程序不会载入到内存,既而内存使用率高适合用户用大量代码来操作不常发生事件时不需要操作系统的特别支持,由程序员来设计动态加载直到被调用之前,程序不会被载入到内存,即加载延迟到运14动态链接链接延迟到执行时小程序,stub(存根),用来定位适当的内存驻留库程序,或如果该程序不在内存时应如何装入库存根会用子程序地址来替换自己,并开始子程序存根首先检查所需子程序是否在内存中,如果不在,就将子程序装入内存。动态链接通常适用于系统库需要操作系统的帮助动态链接链接延迟到执行时152.交换(swapping)进程可以暂时从内存中交换到备份存储(backingstore)上,当需要再次执行时再调回到内存backingstore–通常是快速磁盘优先级调度算法中使用滚出(rollout),滚入(rollin)交换时间转移时间,而转移时间与交换内存空间量成正比问:将交换出的进程再交换(调回)回来的时候,应调回哪个内存空间(编译时,加载时,执行时)2.交换(swapping)进程可以暂时从内存中交换到备份16操作系统内存管理-课件17连续分配内存通常分为两个区域:一个用于驻留操作系统,常与中断向量一起放在低内存另一个用于用户进程,常放在高内存。单分区分配方法(Single-partitionallocation)重定位寄存器方案用来保护用户进程之间,用户进程与操作系统之间不会相互修改代码与数据重定位寄存器包含了最小的物理地址;界限寄存器包含了逻辑地址的范围,每个逻辑地址必须小于界限寄存器连续分配内存通常分为两个区域:18重定位和界限寄存器的硬件支持重定位和界限寄存器的硬件支持19多分区分配方法孔(Hole):一块可用内存称为孔。不同大小的孔分布在内存的不同地方。当有新进程需要内存时,为该进程查找足够大的孔。操作系统维护的信息包括:已分配分区空闲分区(hole)多分区分配方法20动态存储分配问题根据一组空闲孔来分配大小为n的请求。首次适应(First-fit)最佳适应(Best-fit)最差适应(Worst-fit)First-fit和best-fit在分配速度及存储效率上优于Worst-fit动态存储分配问题根据一组空闲孔来分配大小为n的请求。21碎片(Fragmentation)外部碎片内部碎片紧缩(compaction):用来降低外部碎片移动内存内容,以便所有空闲空间合并成一整块。如果重定位是动态的,是在运行时进行的,那么就能采用紧缩另一种可能解决外部碎片问题的方法是允许物理地址空间为非连续,这样只要有物理内存就可为进程分配。分页分段碎片(Fragmentation)外部碎片22分页(Paging)一个进程的物理地址可以是非连续的将物理内存分成固定大小的块,称为帧(frame)将逻辑内存分为同样大小的块,称为页(page)跟踪所有的空闲帧建立页表用来将逻辑地址转换为物理地址。内部碎片分页(Paging)一个进程的物理地址可以是非连续的23地址转换方法CPU生成的地址分成以下两部分页号(p):页号作为页表中的索引。页表中包含每页所在物理内存的基地址。页偏移(d):与页的基地址组合就形成了物理地址,就可送交物理单元。地址转换方法CPU生成的地址分成以下两部分24地址转换体系结构地址转换体系结构25逻辑内存和物理内存的分页模型逻辑内存和物理内存的分页模型26分页示例分页示例27空闲帧空闲帧28页表的实现页表保存在内存中页表基寄存器(PTBR)指向页表页表长度寄存器(PTLR)指示页表的大小在这种方式下,每次数据/指令的访问需要访问两次内存。一次访问页表,另一次访问数据/指令两次内存访问问题可以用特别的快速查找硬件缓冲(称为关联内存或翻译后备缓冲器)来解决。页表的实现页表保存在内存中29关联存储关联内存-并行搜索当关联内存根据给定值查找时,它会同时与所有键进行比较。如果找到条目,那么就得到相应的值域地址转换(A’,A’’)如果A’在关联寄存器中,则直接取出其对应的frame#否则从内存中的页表当中得到frame#Page#Frame#关联存储关联内存-并行搜索Page#Frame#30带TLB的分页硬件带TLB的分页硬件31内存保护内存保护通过与每个帧关联有保护位来实现。可读、可写、只可读还有一位与页表中的每一条目相关联,称为有效-无效位一个进程很少会使用其所有的地址空间。事实上,许多进程只使用一小部分可用的地址空间。如对于14位地址空间(0-16383)的系统,有一个程序,其地址空间为0-10648该位有效时表示相关的页在进程的逻辑地址空间内,因此是合法的页。该位无效时表示相关的页不在进程的逻辑地址空间内。内存保护内存保护通过与每个帧关联有保护位来实现。32页表中的有效-无效位页表中的有效-无效位33页表结构层次化分页Hash页表反向页表页表结构层次化分页34层次化分页将逻辑地址空间分成多个页表一种简单的方法是两层分页法层次化分页将逻辑地址空间分成多个页表35两层分页方法实例逻辑地址(32位机器,页大小为4K)分成以下两部分:页号(20位)页偏移(12位)页表又分成页,所以页号又进一步分成:10位页号10位页偏移因此,逻辑地址表示如下两层分页方法实例逻辑地址(32位机器,页大小为4K)分成以下36操作系统内存管理-课件37两级页表方法示意两级页表方法示意38地址转换方法地址转换方法39Hash页表处理超过32位地址空间的常用方法是使用Hash页表。虚拟地址中的虚拟页号被放入hash页表中。hash页表的每一条目都包括一个链接组的元素,这些元素hash成同一位置(碰撞)。虚拟页号与链表中的每一个元素的第一个域相比较。如果匹配,那么对应的帧码就用来形成位置地址。如果不匹配,那么就对链表中的下一个域进行页码比较。Hash页表处理超过32位地址空间的常用方法是使用Hash页40Hash页表实例Hash页表实例41反向页表反向页表对于每个真正的内存页或帧才有一个条目。每个条目包含保存在真正内存位置的页的虚拟地址,以及拥有该页的进程的信息。虽然这种方案减低了存储每个页表所需要的内存空间,但是当引用页时它增加了查找页表所需要的时间。可使用hash表来减少查找的次数反向页表反向页表对于每个真正的内存页或帧才有一个条目。42反向页表结构反向页表结构43共享页共享代码可以在进程之间共享共同代码(只读的,可重入的)(如文本编辑器、编译器、Windows系统)共享代码必须出现在所有进程逻辑地址的同一位置私有代码和数据每个进程保留了代码与数据的独立的拷贝私有代码和数据页可以出现在逻辑地址空间的任何地方。共享页共享代码44共享分页实例共享分页实例45分段支持用户观点的内存管理方法程序是若干段的集合主程序子程序函数方法对象局部变量,全局变量堆栈符号表,数组分段支持用户观点的内存管理方法46用户角度的程序用户角度的程序47段的逻辑视角段的逻辑视角48段的体系结构逻辑地址由两个元素组成<段号,偏移>段表:将二维的用户定义地址映射为一维物理地址。段表的每个条目都有段基地址和段界限。基地址:包含段的起始地址界限:指定段的长度段表基地址寄存器(STBR)指向内存中的段表的位置段表长度寄存器(STLR)指示程序所用的段的个数段号S小于STLR的时候才是有效的段的体系结构逻辑地址由两个元素组成49段硬件段硬件50分段实例分段实例51段共享段共享52问题外部碎片问题外部碎片53带分页的分段MULTICS采用带分页的分段方法来解决外部碎片的问题与纯粹的分段式内存管理不同,段表的条目包含的不是段的基地址,而是该段的页表的基地址带分页的分段MULTICS采用带分页的分段方法来解决外部碎片54内存管理内存管理55目的详细描述内存硬件的各种组织方法讨论各种内存管理技术,包括分页和分段详细描述IntelPentium芯片,它支持纯分段和带分页的分段目的详细描述内存硬件的各种组织方法56背景为了运行程序必须把程序从磁盘载入到内存内存和寄存器是CPU唯一能直接访问的存储器寄存器的访问时间vs内存的访问时间缓存为了确保正常运行必须保护内存背景为了运行程序必须把程序从磁盘载入到内存57首先讨论:符号内存地址到实际物理地址的绑定逻辑地址与物理地址的区别动态装载、动态链接代码及共享库首先讨论:58在计算机科学中,库是用于开发软件的子程序集合。库和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码。库链接是指把一个或多个库包括到程序中,有两种链接形式:静态链接和动态链接,相应的,前者链接的库叫做静态库后者的叫做动态库。在计算机科学中,库是用于开发软件的子程序集合。库和可59静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。静态链接的最大缺点是生成的可执行文件太大,需要更多的系统资源,在装入内存时也会消耗更多的时间。静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法60动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加61基地址寄存器和界限地址寄存器一个进程使用的内存地址范围是由一对基地址寄存器和界限地址寄存器来定义基地址寄存器和界限地址寄存器一个进程使用的内存地址范围是由一62一个用户程序的多步骤处理一个用户程序的多步骤处理63地址绑定地址绑定是从一个地址空间到另一个地址空间的映射将指令与数据绑定到内存,有以下几种情况不知道驻留地址地址绑定地址绑定是从一个地址空间到另一个地址空间的映射不知道64逻辑地址空间和物理地址空间逻辑地址:CPU所生成的地址–(虚拟地址)物理地址:从内存单元所看到的地址绑定内存管理单元(MMU)逻辑地址空间和物理地址空间逻辑地址:CPU所生成的地址–(65内存管理单元(MMU)映射虚拟地址为物理地址的硬件设备

用户进程所生成的地址在送交内存之前,都将加上重定位寄存器(基地址寄存器)的值

用户程序决不会看到真正的物理地址内存管理单元(MMU)映射虚拟地址为物理地址的硬件设备

66库的链接及加载静态链接动态链接(dynamiclink)动态加载(dynamicloading)库的链接及加载静态链接67动态加载直到被调用之前,程序不会被载入到内存,即加载延迟到运行时优点不使用的程序不会载入到内存,既而内存使用率高适合用户用大量代码来操作不常发生事件时不需要操作系统的特别支持,由程序员来设计动态加载直到被调用之前,程序不会被载入到内存,即加载延迟到运68动态链接链接延迟到执行时小程序,stub(存根),用来定位适当的内存驻留库程序,或如果该程序不在内存时应如何装入库存根会用子程序地址来替换自己,并开始子程序存根首先检查所需子程序是否在内存中,如果不在,就将子程序装入内存。动态链接通常适用于系统库需要操作系统的帮助动态链接链接延迟到执行时692.交换(swapping)进程可以暂时从内存中交换到备份存储(backingstore)上,当需要再次执行时再调回到内存backingstore–通常是快速磁盘优先级调度算法中使用滚出(rollout),滚入(rollin)交换时间转移时间,而转移时间与交换内存空间量成正比问:将交换出的进程再交换(调回)回来的时候,应调回哪个内存空间(编译时,加载时,执行时)2.交换(swapping)进程可以暂时从内存中交换到备份70操作系统内存管理-课件71连续分配内存通常分为两个区域:一个用于驻留操作系统,常与中断向量一起放在低内存另一个用于用户进程,常放在高内存。单分区分配方法(Single-partitionallocation)重定位寄存器方案用来保护用户进程之间,用户进程与操作系统之间不会相互修改代码与数据重定位寄存器包含了最小的物理地址;界限寄存器包含了逻辑地址的范围,每个逻辑地址必须小于界限寄存器连续分配内存通常分为两个区域:72重定位和界限寄存器的硬件支持重定位和界限寄存器的硬件支持73多分区分配方法孔(Hole):一块可用内存称为孔。不同大小的孔分布在内存的不同地方。当有新进程需要内存时,为该进程查找足够大的孔。操作系统维护的信息包括:已分配分区空闲分区(hole)多分区分配方法74动态存储分配问题根据一组空闲孔来分配大小为n的请求。首次适应(First-fit)最佳适应(Best-fit)最差适应(Worst-fit)First-fit和best-fit在分配速度及存储效率上优于Worst-fit动态存储分配问题根据一组空闲孔来分配大小为n的请求。75碎片(Fragmentation)外部碎片内部碎片紧缩(compaction):用来降低外部碎片移动内存内容,以便所有空闲空间合并成一整块。如果重定位是动态的,是在运行时进行的,那么就能采用紧缩另一种可能解决外部碎片问题的方法是允许物理地址空间为非连续,这样只要有物理内存就可为进程分配。分页分段碎片(Fragmentation)外部碎片76分页(Paging)一个进程的物理地址可以是非连续的将物理内存分成固定大小的块,称为帧(frame)将逻辑内存分为同样大小的块,称为页(page)跟踪所有的空闲帧建立页表用来将逻辑地址转换为物理地址。内部碎片分页(Paging)一个进程的物理地址可以是非连续的77地址转换方法CPU生成的地址分成以下两部分页号(p):页号作为页表中的索引。页表中包含每页所在物理内存的基地址。页偏移(d):与页的基地址组合就形成了物理地址,就可送交物理单元。地址转换方法CPU生成的地址分成以下两部分78地址转换体系结构地址转换体系结构79逻辑内存和物理内存的分页模型逻辑内存和物理内存的分页模型80分页示例分页示例81空闲帧空闲帧82页表的实现页表保存在内存中页表基寄存器(PTBR)指向页表页表长度寄存器(PTLR)指示页表的大小在这种方式下,每次数据/指令的访问需要访问两次内存。一次访问页表,另一次访问数据/指令两次内存访问问题可以用特别的快速查找硬件缓冲(称为关联内存或翻译后备缓冲器)来解决。页表的实现页表保存在内存中83关联存储关联内存-并行搜索当关联内存根据给定值查找时,它会同时与所有键进行比较。如果找到条目,那么就得到相应的值域地址转换(A’,A’’)如果A’在关联寄存器中,则直接取出其对应的frame#否则从内存中的页表当中得到frame#Page#Frame#关联存储关联内存-并行搜索Page#Frame#84带TLB的分页硬件带TLB的分页硬件85内存保护内存保护通过与每个帧关联有保护位来实现。可读、可写、只可读还有一位与页表中的每一条目相关联,称为有效-无效位一个进程很少会使用其所有的地址空间。事实上,许多进程只使用一小部分可用的地址空间。如对于14位地址空间(0-16383)的系统,有一个程序,其地址空间为0-10648该位有效时表示相关的页在进程的逻辑地址空间内,因此是合法的页。该位无效时表示相关的页不在进程的逻辑地址空间内。内存保护内存保护通过与每个帧关联有保护位来实现。86页表中的有效-无效位页表中的有效-无效位87页表结构层次化分页Hash页表反向页表页表结构层次化分页88层次化分页将逻辑地址空间分成多个页表一种简单的方法是两层分页法层次化分页将逻辑地址空间分成多个页表89两层分页方法实例逻辑地址(32位机器,页大小为4K)分成以下两部分:页号(20位)页偏移(12位)页表又分成页,所以页号又进一步分成:10位页号10位页偏移因此,逻辑地址表示如下两层分页方法实例逻辑地址(32位机器,页大小为4K)分成以下90操作系统内存管理-课件91两级页表方法示意两级页表方法示意92地址转换方法地址转换方法93Hash页表处理超过32位地址空间的常用方法是使用Hash页表。虚拟地址中的虚拟页号被放入hash页表中。hash页表的每一条目都包括一个链接组的元素,这些元素hash成同一位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论