欢迎来到天天文库
浏览记录
ID:61478407
大小:237.50 KB
页数:23页
时间:2021-02-03
《内存管理练习题.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、三、内存管理一、考试大纲(一)内存管理基础1.内存管理概念程序装入与链接;逻辑地址与物理地址空间;内存保护。2.交换与覆盖3.连续分配管理方式单一连续分配;分区分配。4.非连续分配管理方式分页管理方式;分段管理方式;段页式管理方式(二)虚拟内存管理1.虚拟内存基本概念2.请求分页管理方式3.页面置换算法最佳置换算法(OPT);先进先出置换算法(FIFO);最近最少使用置换算法(LRU);时钟置换算法。4.页面分配策略5.抖动抖动现象;工作集6.请求分段管理方式7.请求段页式管理方式二、知识点归纳(一)内存管理基础1.内存管理
2、概念内存是指处理器可以直接存取指令和数据的存储器,内存和处理器都是计算机系统的一种重要资源。在多道程序设计技术出现以后,对存储管理提出了更高的要求。内存管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。在操作系统中,将一个用户的源程序变为一个可在内存中执行的进程,通常要经过以下几步:1)编译。由编译程序将用户源代码编译成若干个目标模块;2)链接。由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块;3)装入。由装入程序将装入
3、模块装入内存。(1)程序的链接源程序经过编译后,可得到一组目标模块,这时需要利用系统中链接程序将这组目标模块链接在一起,形成装入模块。根据链接时间的不同,可以分成三种链接方式,即静态链接、装入时的动态链接和运行时的动态链接。1)静态链接。在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。静态链接方式需要解决两个问题:外部调用符号到相对地址的转换;相对地址到绝对地址的的转换;2)装入时的动态链接。在将目标模块装入内存时,采用边装入边链接的方式。该方式具有以下优点:便于目标模块的修改和更新;
4、便于实现对目标模块的共享。3)运行时的动态链接。事先不对各个模块进行链接,而是在程序执行中当需要该模块时,再将该模块调入内存,并进行链接。采用这种方式,凡在执行过程中没有用到的目标模块,都不会被调入内存,这样不仅可加快程序的装入过程,而且可以节省大量的内存空间。(2)程序的装入程序的装入方式有三种,它们分别是绝对装入方式、可重定位的装入方式以及动态装入方式,现介绍如下。1)绝对装入方式在编译时,如果知道程序将驻留在内存的什么位置,那么编译程序将产生包含有内存绝对地址(也称实际地址)的目标代码。这样装入程序就会按照目标代码中的
5、地址,将程序和数据装入到内存的实际位置。程序中使用的绝对地址,既可以在编译或汇编时给出,也可由程序员直接赋予。但因为需要程序员熟悉当前内存的使用情况,所以要求较高。2)可重定位的装入方式在多道程序的环境下,所得到的目标模块的起始地址通常是从0开始的,程序中的其它地址都是相对于起始地址进行计算的。此时应采用重定位装入方式,根据内存的当前情况,将装入模块装入到内存的适当位置。由于装入模块中的所有地址与实际装入内存的物理地址不同,所以需要进行地址变换(在原先相对地址的基础上加上内存装入位置的地址)。如下图所示100025000Lo
6、ad1,2500365110001000012500Load1,2500365图3-1作业装入内存的情况通常,把在装入程序时对目标模块中的指令和数据的地址变换过程称为重定位。又因为地址变换是在装入时一次完成的,所以称为静态重定位。3)动态运行时的装入方式动态运行时的装入程序,在把装入模块装入内存后,并不立即将其中的相对地址转换为绝对地址,而是把地址转换推迟到程序执行前再进行。因此,装入内存后的所有地址都仍是相对地址。(3)逻辑地址与物理地址空间;由编译程序所产生的所有目标模块中,使用的都是相对地址,即其起始地址为0,每个模块
7、中的地址都是相对于起始地址计算的。而物理地址是指内存中的实际的地址空间。(4)内存保护保证进入内存的各道作业都在自己的存储空间内运行,互不干扰。既要防止一道作业由于发生错误而破坏其他作业,也要防土破坏系统程序。这种保护一般由硬件和软件配合完成2.交换与覆盖交换技术就是把暂时不用的某个程序及数据部分(或全部)从内存移到外存中去,以便腾出必要的内存空间,或把指定的程序或数据从外存读到相应的内存中,并将控制权交给它,使其在系统上运行的一种内存扩充技术。覆盖技术,就是把一个大的程序划分为一系列覆盖,每个覆盖就是一个相对独立的程序单位
8、,把程序执行时并不要求同时装入内存的覆盖组成一组,称为覆盖段,这个覆盖段分配到同一个存储区域,这个存储区域称为覆盖区,它与覆盖段一一对应。交换技术不要求程序员给出程序段之间的覆盖结构,而且交换主要是在进程或作业之间进行;而覆盖则主要在同一个作业或进程中进行。另外,覆盖只能覆盖与覆盖程序段无
此文档下载收益归作者所有