欢迎来到天天文库
浏览记录
ID:50267275
大小:1.28 MB
页数:174页
时间:2020-03-07
《计算机操作系统-存储器管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第四章存储器管理存储器是计算机系统的重要组成部分之一。对存储器加以有效管理,不仅直接影响存储器的利用率,而且对系统性能有重大影响。内存管理的主要对象是内存,对外存的管理在文件管理中。第四章存储器管理存储器的层次结构多级存储器结构主存CPU寄存器辅存寄存器高速缓冲存储器磁盘缓存磁盘可移动存储介质主存存储器的层次结构1、主存储器CPU只能从主存储器中取得指令和数据。但运行速度远低于CPU执行指令的速度。2、寄存器访问速度最快,但价格昂贵。3、高速缓存容量远大于寄存器,但比主存小两三个数量级。4、磁盘缓存利用主存中的存储空间。第四章存储器管理4.1程序的装入
2、和链接4.2连续分配方式4.3基本分页存储管理方式4.4基本分段存储管理方式4.5虚拟存储器的基本概念4.6请求分页存储管理方式4.7页面置换算法4.8请求分段存储管理方式本章重点难点1、掌握地址变换机构及实现方法。2、掌握虚拟存储器概念和虚拟存储技术。3、掌握页面置换算法。4.1程序的装入和链接在多道程序环境下,要使程序运行,必须为之先建立进程。创建进程的第一件事是将程序和数据装入内存。将用户源程序变为可在内存中执行的程序的步骤:1、编译:由编译程序将用户源代码编译成若干个目标模块2、链接:由链接程序将编译后形成的一组目标模块,以及它们所需要的库函数
3、链接在一起,形成一个完整的装入模块3、装入:由装入程序将装入模块装入内存4.1程序的装入和链接库链接程序装入模块装入程序…编译程序产生的目标模块第一步第二步第三步内存4.1程序的装入和链接4.1.1程序的装入将一个装入模块装入内存时,有三种方式:绝对装入方式可重定位装入方式动态运行时装入方式4.1程序的装入和链接1.绝对装入方式在编译时,如果知道程序驻留在内存的什么位置,那么编译程序将产生绝对地址的目标代码。装入模块装入内存后,程序中的逻辑地址与实际内存地址完全相同,不须对程序和数据的地址进行修改。程序中所使用的绝对地址,可在编译或汇编时给出,也可由程
4、序员赋予。只适合于单道程序环境4.1.1程序的装入4.1程序的装入和链接2.可重定位装入方式在多道程序环境下,目标模块的起始地址通常从0开始,程序中的其他地址都是相对于起始地址计算的。因此应采用可重定位装入方式,根据内存的当前情况,将装入模块装入到内存的适当位置。注意:在采用可重定位装入方式将装入模块装入内存后,会使装入模块中的所有逻辑地址与实际装入内存的物理地址不同。4.1程序的装入和链接365LOAD1,2500365LOAD1,2500~~~~010002500500010000110001250015000作业地址空间内存空间在装入时对目标程序
5、中指令和数据的修改过程称为重定位。地址变换在装入时一次完成,以后不再改变,称为静态重定位。4.1程序的装入和链接3.动态运行时装入方式动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。为使地址转换不影响指令的执行速度,应设置一个重定位寄存器。4.1程序的装入和链接4.1.2程序的链接程序经过编译后得到一组目标模块,再利用链接程序将目标模块链接,形成装入模块。根据链接时间的不同,把链接分成三种:1、静态链接:在程序运行前,将
6、目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开。2、装入时动态链接:指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式。3、运行时动态链接:指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行链接。1.静态链接方式:事先进行链接,以后不再拆开4.1.2程序的链接模块ACALLB;Return;0L-1模块BCALLC;Return;0M-1模块CReturn;0N-1模块AJSR“L”Return;0L-1模块BJSR“L+M”Return;LL+M-1模块CReturn;L+ML+M+N-1目
7、标模块装入模块将目标模块装配成装入模块时需解决的两个问题:(1)对相对地址进行修改(2)变换外部调用符号4.1.2程序的链接2.装入时动态链接:用户源程序经编译后所得的目标模块,是在装入内存时,边装入边链接的,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要修改目标模块中的相对地址。优点:便于修改和更新便于实现对目标模块的共享3.运行时动态链接:运行时动态链接是将对某些模块的链接推迟到执行时才执行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把
8、它链接到调用者模块上。凡执行过程中未被用到的目标模块,不会调入内存和链接,这样不仅加快程序的装
此文档下载收益归作者所有