第四章存储器管理须解决以下两个问题:(1)对相对地址进行修改。(2)变换外部调用符号。缺点:(1)内存空间的浪费,不利于共享。(2)模块修改、更新困难。数学与信息技术学院
第四章 存 储 器 管 理 数学与信息技术学院 须解决以下两个问题: (1) 对相对地址进行修改。 (2) 变换外部调用符号。 缺点: (1) 内存空间的浪费,不利于共享。 (2) 模块修改、更新困难
第四章存储器管理2.装入时动态链接(LoadtimeDynamic Linking):指将一组目标模块在装入内存时,边装入边链接的方式优点:(1)便于修改和更新。(2)便于实现对目标模块的共享。存在问题:由于程序运行所有可能用的自标模块在装入时均全部链接在一起,所以将会把一些不会运行的目标模块也链接进去。如程序中的错误处理模块数学与信息技术学院
第四章 存 储 器 管 理 数学与信息技术学院 2. 装入时动态链接(Load time Dynamic Linking) : ◆ (1)便于修改和更新。 (2) 便于实现对目标模块的共享。 ◆ 存在问题: 由于程序运行所有可能用的目标模块在装入时均全部链 接在一起,所以将会把一些不会运行的目标模块也链接 进去。如程序中的错误处理模块 ◆ 指将一组目标模块在装入内存时,边装入边链接的方式
第四章存储器管理3.运行时动态链接(Run-timeDynamicLinking将对某些模块的链接推迟到执行时才执行:在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。优点:可加快程序的装入过程节省大量的内存空间。数学与信息技术学院
第四章 存 储 器 管 理 数学与信息技术学院 3. 运行时动态链接(Run-time Dynamic Linking) ◆优点: ➢ 可加快程序的装入过程, ➢ 节省大量的内存空间。 ◆将对某些模块的链接推迟到执行时才执行; ◆在执行过程中,当发现一个被调用模块尚未装入内存时, 立即由OS去找到该模块并将之装入内存, 把它链接到调 用者模块上
第四章存储器管理装入时动态链接与运行时动态链接的区别:装入时动态链接:>编译前知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含DLL函数的代码:>当程序装入时,利用链接信息加载DLL函数代码>需要函数所在DLL的导入库:导入库向系统提供了载入DLL时所需的信息及DLL函数定位◆运行时动态链接(run-timedynamiclinking),>编译之前并不知道将会调用哪些DLL函数。>运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。GetProcAddress动态获得DLL函数的入口地址>避免导入库文件。数学与信息技术学院
第四章 存 储 器 管 理 数学与信息技术学院 ◆装入时动态链接: ➢编译前知道要调用DLL中的哪几个函数,编译时在目标文件中只保留 必要的链接信息,而不含DLL函数的代码; ➢ 当程序装入时,利用链接信息加载DLL函数代码 ➢ 需要函数所在DLL的导入库:导入库向系统提供了载入DLL时所需的 信息及DLL函数定位 装入时动态链接与运行时动态链接的区别: ◆运行时动态链接(run-time dynamic linking), ➢ 编译之前并不知道将会调用哪些DLL函数。 ➢ 运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。 GetProcAddress动态获得DLL函数的入口地址。 ➢ 避免导入库文件
第四章存储器管理4.3连续分配方式4.3.1单一连续分配内存分为系统区和用户区:>系统区仅提供给OS使用,通常是放在内存的低址部分>用户区是除系统区以外的全部内存空间,提供给用户使用。实现:Os作业队列用户区空闲区数学与信息技术学院
第四章 存 储 器 管 理 数学与信息技术学院 ◆实现: OS 用户区 空闲区 作业队列 4.3.1 单一连续分配 4.3 连续分配方式 ◆内存分为系统区和用户区: ➢系统区仅提供给OS使用,通常是放在内存的低址部分 ➢用户区是除系统区以外的全部内存空间,提供给用户使用