资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,程序装入与内存分配,第四章 存储器管理,4.1 程序的装入和链接,4.2 连续分配方式,第四章 存储器管理 4.1 程序的装入和链接,1,上节回顾,第二三章复习,上节回顾第二三章复习,2,基本概念,基本概念,3,4.1 程序的装入和链接,4.1 程序的装入和链接,4,4.1.1 程序的装入,4.1.1 程序的装入,5,1.绝对装入方式(Absolute Loading Mode),程序中所使用的绝对地址,既可在编译或汇编时给出,也可由程序员直接赋予。,通常是在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。,特点:程序的逻辑地址与实际内存地址相同,1.绝对装入方式(Absolute Loading Mod,6,2.可重定位装入方式(Relocation Loading Mode),特点:地址变换在装入时一次性完成,不再改变,2.可重定位装入方式(Relocation Loading,7,3.动态运行时装入方式(Denamle Run-time Loading),可重定位装入并不允许程序运行时在内存中移动位置。,动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。,3.动态运行时装入方式(Denamle Run-time,8,4.1.2 程序的链接,静态链接方式(Static Linking),装入时动态链接(Load time Dynamic Linking),运行时动态链接(Run-time Dynamic Linking),4.1.2 程序的链接 静态链接方式(Static Lin,9,4.1.2 程序的链接,1.静态链接方式(Static Linking),图 4-3 程序链接示意图,4.1.2 程序的链接 1.静态链接方式(Static,10,在将这几个目标模块装配成一个装入模块时,须解决以下两个问题:,(1)对相对地址进行修改。,(2)变换外部调用符号。,在将这几个目标模块装配成一个装入模块时,须解决,11,2.装入时动态链接(Loadtime Dynamic Linking),装入时动态链接方式有以下优点:,便于修改和更新。,(2)便于实现对目标模块的共享。,2.装入时动态链接(Loadtime Dynamic L,12,3.运行时动态链接(Run-time Dynamic Linking),对模块的链接推迟到执行时才执行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。,凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。,3.运行时动态链接(Run-time Dynamic Li,13,4.2 连续分配方式,4.2 连续分配方式,14,4.2.1 单一连续分配,4.2.1 单一连续分配,15,4.2.2 固定分区分配,划分分区的方法,分区大小相等,即使所有的内存分区大小相等。,(2)分区大小不等。,4.2.2 固定分区分配 划分分区的方法 分区大小相等,,16,第四章存储器管理课件,17,2.内存分配,图 4-4 固定分区使用表,2.内存分配 图 4-4 固定分区使用表,18,第四章存储器管理课件,19,4.2.3 动态分区分配,4.2.3 动态分区分配,20,第四章存储器管理课件,21,1.分区分配中的数据结构,空闲分区表。,(2)空闲分区链。,图 4-5 空闲链结构,1.分区分配中的数据结构 空闲分区表。图 4-5 空闲链结,22,2.分区分配算法,首次适应算法FF。,(2)循环首次适应算法,该算法是由首次适应算法演变而成的。,(3)最佳适应算法。,2.分区分配算法 首次适应算法FF。,23,第四章存储器管理课件,24,第四章存储器管理课件,25,第四章存储器管理课件,26,第四章存储器管理课件,27,3.分区分配操作,1)分配内存,图 4-6 内存分配流程,3.分区分配操作 1)分配内存 图 4-6 内存分配流程,28,2)回收内存,图 4-7 内存回收时的情况,2)回收内存 图 4-7 内存回收时的情况,29,第四章存储器管理课件,30,4.2.4 可重定位分区分配,4.2.4 可重定位分区分配,31,1.动态重定位的引入,图 4-8 紧凑的示意,1.动态重定位的引入 图 4-8 紧凑的示意,32,2.动态重定位的实现,图 4-9 动态重定位示意图,2.动态重定位的实现 图 4-9 动态重定位示意图,33,3.动态重定位分区分配算法,图 4-10 动态分区分配算法流程图,3.动态重定位分区分配算法 图 4-10 动态分区分配算法,34,4.2.5 对换(Swapping),1.对换的引入,所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。,整体对换:以进程为单位,部分对换:以页或段为单位,4.2.5 对换(Swapping)1.对换的引入,35,2.对换空间的管理,为了能对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结构,以记录外存的使用情况。其形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表中的每个表目中应包含两项,即对换区的首址及其大小,它们的单位是盘块号和盘块数。,2.对换空间的管理 为了能对对换区中的空闲,36,3.进程的换出与换入,(1)进程的换出。,每当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等情况发生时,系统应将某进程换出。其过程是:,1、系统选择处于阻塞状态且优先级最低的进程作为换出进程,,2、启动盘块,将该进程的程序和数据传送到磁盘的对换区上。,3、若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的进程控制块做相应的修改。,3.进程的换出与换入 (1)进程的换出,37,(2)进程的换入。,系统应定时地查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将其中换出时间(换出到磁盘上)最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。,(2)进程的换入。,38,
展开阅读全文