




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 3程序装入技术 可执行程序的生成步骤 可执行程序的装入 如何装入待执行的程序及其所需的数据 何时将程序的逻辑地址转换为物理地址3种装入方式 绝对装入 重定位装入和运行时动态装入 绝对装入 程序运行之前 按照程序的逻辑地址 将程序和数据装入内存指定的地方 实现简单 无须进行逻辑地址到物理地址的变换 绝对装入 缺点 程序每次必须装入同一内存区 程序员必须事先了解内存的使用情况 根据内存情况确定程序的逻辑地址 程序的修改 增加或删除指令 将引起整个程序中指令地址的变动 程序中的所有存储引用 例如函数调用或过程调用等 在装入之前都必须转换为物理地址 这不利于存储共享 重定位装入 允许将程序装入与逻辑地址不同的物理内存空间 即程序可以装入到内存的任何位置 其逻辑地址与装入内存后的物理地址无直接关系 但是 必须进行地址映射 将逻辑地址转换为物理地址 静态重定位技术 地址映射在程序装入时进行 以后不再更改程序地址 重定位装入 有利于程序代码和数据的共享 因为装入程序时 可以将其中的某些存储引用的逻辑地址映射为内存中已有的共享区的物理地址 但是 静态重定位不允许程序在内存中移动 这不便于进程交换和紧凑拼接操作 也很难实现多道程序环境下 多个程序同时装入内存的要求 故 重定位装入方式只适合于单道程序环境 运行时动态装入 指 程序的地址转换不是在装入时进行 而是在程序运行时动态进行 运行时动态装入需要硬件支持 即重定位寄存器 用于保存程序在内存中的起始地址 程序被执行时 通过重定位寄存器内的起始物理地址和指令或数据的逻辑地址计算其物理地址 运行时动态装入有利于多道程序环境下 进程的换进 换出及实现紧凑技术 可执行程序的链接形成 目标模块如何链接成装入模块呢静态链接动态链接 装入时动态链接和运行时动态链接 静态链接 指 程序被装入内存之前 必须完全链接成一个装入模块 将其中的存储引用全部转换为相对地址跳转语句 并将多个目标模块链接成为一个模块 使装入模块中的每一条指令具有相对于整个模块的第一条语句的逻辑地址 静态链接生成的装入模块可以采用重定位装入或运行时动态装入方式 静态链接需要花费大量的处理机时间 而其中的很多模块将不会运行 浪费存储空间和处理机时间 动态链接 指 不用事先链接所有目标模块形成一个完备的装入模块 而是生成一个含有未被链接的外部模块引用的装入模块 这些外部模块可以在装入时链接 或运行时链接 装入时动态链接 指 当系统装入含有未链接的外部模块引用的装入模块时 每当遇到一个外部模块引用 则查找相应的目标模块 将其装入内存 并将模块内的指令地址转换为相对于整个装入模块起始地址的相对地址 优点 有利于目标模块的更新与升级 有利于代码共享 有利于扩充软件的功能 可以将扩充部分作为动态链接模块 但是 可能链接一些不会执行的模块 浪费存储空间和处理机时间 运行时动态链接 指 外部模块引用直至程序执行时才装入内存 并链接到装入模块中 进行地址转换 可以解决静态链接和装入时动态链接都面临的存储空间和处理机时间浪费问题 不需要执行的模块就不会装入内存 广泛用于事务处理系统 如航空售票系统 银行管理系统等 操作系统自身的一些特殊处理例程 如错误处理例程 也无需事先全部装入内存 3 4简单存储管理技术 简单存储 相对于虚拟存储而言 指为了实现简单 执行之前 操作系统必须将待执行的程序全部装入内存 然而 现代操作系统大都支持虚拟存储功能 允许进程装入部分程序即可开始执行 其余部分保留在外存 当执行所需的部分不在内存时 中断进程执行 使之阻塞等待 直到相应部分装入内存 程序在内存中如何组织 连续存储 需要内存中的一块连续的 足够大的分区 如果内存中没有足够大的连续空闲分区 但存在总量足够的独立小分区 即外零头 系统要么拒绝分配空间 要么采用紧凑技术拼接外零头 非连续存储 允许进程的程序和数据分别装在内存的不同分区中 必须登记一个进程分到的所有分区的位置 大小 使用情况 如是否共享等 等信息 常用的非连续存储技术 分页存储技术 分段存储技术及其结合 连续存储管理 最简单的存储管理技术要求系统配置专门的硬件实现快速地址转换和存储保护 处理机硬件基址寄存器 Baseregister 界限寄存器 Boundsregister 连续存储管理 基址寄存器 存放当前执行进程所在分区的物理存储单元的起始地址 界限寄存器 存放当前执行进程所在分区最后一个物理存储单元的地址 限定进程的执行范围 保护其他进程不被非法访问 基址寄存器和界限寄存器被多个进程共享 只有当前执行进程才使用它们 装入时 进程分区的基地址值和分区的最后一个物理存储单元的地址值 分别填入该进程PCB的相应字段中 当进程被调度执行时 将PCB中对应的进程基地址值写入基址寄存器中 并将进程获得的内存分区最大地址值 填入界限寄存器中 当进程被交换出 换入内存时 上述两个地址值也会发生改变 地址映射与存储保护 逻辑地址转换成物理地址 取基址寄存器中的值 加上逻辑地址值 生成一个物理地址地址越界检查 取界限寄存器中的值 与第一步计算的结果进行比较 如果生成的物理地址超出了界限范围 产生一个中断 报告地址越界 否则 继续该指令的执行 简单分页存储管理 连续存储 存在外零头 浪费存储空间 紧凑 需要系统额外开销 非连续存储 允许将一个进程的程序和数据离散存储在多个独立的分区中 消除了外零头 基本原理 分页存储管理技术是一种特殊的固定分区方法 系统事先将物理内存划分成许多尺寸相等的页框 PageFrame 并将进程分割成许多大小相同的页面 Page 页面与页框大小相同 分区 进程的逻辑地址空间是连续的 一维的 线性地址 进程的每一条指令和数据的地址相对于第一条语句的地址而定 分页 进程被分割成许多页面 每个页面内的指令和数据是连续的 它们的地址相对于其所属页的第一条语句的地址 称为页内偏移量 逻辑地址被分为两部分 页号和页内偏移量 当一个进程被装入物理内存时 系统将为该进程的每个页面分配一个独立的页框 同一个进程的多个页面不必存放在连续的多个页框中 例如 假设内存能提供16个空闲页框 进程P1被分割成4个页面 装入内存中的0号至3号页框 进程P2被分割成3个页面 装入4号至6号页框 进程P3被装入7号至12号页框 如图3 15 a 所示 此时 进程P4请求分配5个页框大小的存储空间 但内存只有3个空闲页框 于是 将暂时不运行的P2交换出内存 如图3 15 b 所示 然后 再将P4装入4 5 6 13 14号页框 如图3 15 c 所示 数据结构 页表 页表 系统为每个进程建立一张页面映射表 用于记载进程的各页面到物理内存中页框的映射信息 进程的每个页面依次对应页表中的一个表项 其中包含相应页在内存中对应的物理页框号和页面存取控制权限等字段 数据结构 页框表 空闲页框表 登记系统中剩下的空闲页框情况 地址变换 硬件机制 实现逻辑地址到物理地址的转换分页系统中的地址变换过程如下 1 根据逻辑地址 计算出页号和页内偏移量 2 用页号检索页表 查找指定页面对应的页框号 3 根据页框号和页内偏移量 计算出物理地址 页表寄存器 页表寄存器 实现快速地址映射 存储执行进程的页表起始地址 页表寄存器设置在处理机硬件中 当进程被创建时 其页表起始地址记载于进程PCB中 当进程被调度执行时 页表的起始地址将从该进程的PCB中取出 并填入页表寄存器中 进行地址变换时 处理机从页表寄存器中查找页表的地址 页框 大页表 大逻辑地址空间 页表非常大 需要占用相当大的内存空间 比如 32位逻辑地址空间 假设页面大小为4KB 212 则4GB 232 的逻辑地址空间将被划分成220个页面 大页表 若采用一级页表 则其内将包含1兆 220 个页表项 若按字节寻址 一个页表项占4B 则一级页表需要占用4MB 222 内存空间 不可能将4MB的页表保存在一个连续区中 那么 如何处理大页表的存储与检索呢 二级页表 将一个大页表全部保存在内存中 首先 将其分割 并离散地存储在内存的多个页框中 为之建立二级页表 记录被分割的各个页面存储在哪些页框中 也称为外层页表 OuterPageTable 对于4GB的进程 若采用二级页表 则对应的二级页表结构如图 多级页表 对于某些机器 二级页表也可能非常大 可以采用多级页表 对外层页表再进行分页 将各个页面离散地存储到不相邻接的物理页框中虽然 对大页表而言 多级页表方法消除了对较大的连续内存空间的需要 但并未解决大页表占用较大的内存空间的问题 建立多及页表反而会增加额外的存储空间 大页表 最好的解决办法是采用虚拟存储技术 内存中仅装入页表的一部分 即只将当前需要的部分页表项装入内存 其余页表项驻留在磁盘上 需要时再将它们装入内存 若采用多级页表 对于正在运行的进程 必须将其外层页表调入内存 而内层页表只需调入几页就可以了 反置页表 InvertedPageTable 一般情况下 系统从进程的角度为每个进程建立一张页表 页表的表项按页号排序 这种方法可能导致一个大进程的页表太大 占据大量的内存空间 反置页表 从内存的角度建立页表 整个系统只有一张页表 页表的表项基于内存中的每一个物理页框设置 页表项按页框号的顺序排序 其中还必须包含页框对应的页号及其隶属进程的标识符等信息 反置页表 通常 反置页表需要包含成千上万个表项 利用进程ID和页号检索其中某一个表项的速度很慢 可以根据进程ID和页号构建Hash表 Hash表的每一项指向反置页表中的某一项 但是 可能会出现多个逻辑地址被映射到一个Hash表项的情况 需要通过链接指针将多个冲突的映射链接起来 一般 冲突的表项一般只有一项 或两项 地址变换 首先 以进程ID和页号为参数 代入Hash函数进行计算 然后 根据计算结果 检索反置页表 若检索完整个反置页表都未找到与之匹配的表项 表明此页尚未装入内存 若系统支持虚拟存储技术 则产生请求调页中断 若系统不支持虚拟存储技术 则表示地址出错 当检索到反置页表中的对应表项时 将其中的页框号与逻辑地址中的偏移量相加 构成物理地址 物理地址 偏移量 页框号 逻辑地址 偏移量 页号 Hash表 反置页表 图3 20利用反置页表进行地址变换 快表 分页系统 处理机每次存取指令或数据至少需要访问两次物理内存 第一次访问页表 第二次存取指令或数据为了提高地址变换速度 为进程页表设置一个专用的高速缓冲存储器 称为快表 TLB TranslationLookasideBuffer 或联想存储器 AssociativeMemory 快表的工作原理 快表的工作原理类似于系统中的数据高速缓存 cache 其中专门保存当前进程最近访问过的一组页表项 根据局部性原理 在一个很短的时间段内 程序的执行总是局部于某一个范围 即 进程最近访问过的页面在不久的将来还可能被访问 分页系统地址转换 通过根据逻辑地址中的页号 查找快表中是否存在对应的页表项 若快表中存在该表项 称为命中 hit 取出其中的页框号 加上页内偏移量 计算出物理地址 若快表中不存在该页表项 称为命中失败 则再查找页表 找到逻辑地址中指定页号对应的页框号 同时 更新快表 将该表项插入快表中 并计算物理地址 图3 21具有快表的分页系统地址变换过程 内存 页框 TLB命中 命中失败 页面与页框大小 分页系统中 页面 页框 页框的大小由计算机的硬件逻辑定义 通常 页框的大小是2的幂次个字节 且常在512B 29 4KB 212 之间 典型的页框大小为1KB 将页框大小设置为2的幂次 可以简化处理机中地址变换硬件逻辑的设计与实现 页面与页框大小 影响页面与页框大小的主要因素 页内零头 地址转换速度和页面交换效率 较小的页面有利于减少内零头 从而有利于提高内存的利用率 然而 较小的页面也将导致页表过大 从而降低处理机访问页表时的命中率 HitRate 块越大 内 外存之间的数据交换效率越高 因此 对于支持交换技术的系统 较大的页面有利于提高页面换进 换出内存的效率 对分页存储管理的评价 彻底消除了外零头 仅存在很少的内零头 提高了内存利用率 分页操作由系统自动进行 一个页面不能实现某种逻辑功能 用户看到的逻辑地址是一维的 无法调试执行其中的某个子程序或子函数 采用分页技术不易于实现存储共享 也不便于程序的动态链接 简单分段存储管理 基于模块化程序设计时 常常需要将一个大任务划分成若干相对独立的子任务 对应于子任务编写子程序 称为段 Segment 每个子程序可以独立地编辑 编译 链接和执行 各个子程序由实现的功能决定 长度各不相同 执行时 根据实际需要 将若干子程序链接成一个大程序 基本原理 程序由若干逻辑段组成 每个段有自己的名字和长度 程序的逻辑地址是由段名 段号 和段内偏移量决定 每个段的逻辑地址从0开始编址 系统采用动态划分技术 将物理内存动态地划分成许多尺寸不相等的分区 当一个进程被装入物理内存时 系统将为该进程的每一段独立地分配一个分区 同一进程的多个段不必存放在连续的多个分区中 分段系统的基本数据结构 段表 每个进程建立一个 用于描述进程的分段情况 记载进程的各个段到物理内存中分区的映射情况 其中包含段号 段长 段基址以及对本段的存取控制权限等信息 空闲分区表 用于记载物理内存中的空闲分区情况 地址变换和存储保护 1 根据逻辑地址中的段号检索进程段表 获得指定段对应的段表项 2 判断是否地址越界 比较逻辑地址中的段内偏移量与段表项中的段长 若超过段的长度 则产生存储保护中断 该中断将由操作系统进行处理 否则 转 3 3 把逻辑地址中的段内偏移量与段表表项中的段基址相加 从而得到物理地址 段表寄存器 段表同样被保存在物理内存中 段表寄存器 实现快速地址变换 用来存放当前执行进程的段表在物理内存中的起始地址 当创建进程 将进程的程序和数据装入内存时 系统为之建立段表 并将段表的起始地址填入进程的PCB中 当进程被调度执行时 取出其PCB中的段表首址 填入段表寄存器中 图3 24分段系统的地址变换过程 内存 段 段 分段系统的快表 在分段系统中 为了访问内存中的一条指令或数据 需要两次访问内存 第一次 访问内存中的段表 获得对应段的起始地址 根据段的起始地址和段内偏移量 计算出物理地址 第二次 根据物理地址 访问对应存储单元的指令或数据 为了提高处理机的效率 类似分页系统的快表 可以为分段系统增加一个快表 用于保存最近使用过的段表项 对分段系统的评价 有效消除了内零头 提高了存储利用率 允许子程序独立编译和修改 而不需要重新编译或链接其它相关子程序 容易实现存储共享 具有较高的安全保障 很容易满足程序段的动态增长需要 分页与分段技术的比较 都采用非连续存储 由地址映射实现地址变换 不同主要表现在 1 页是信息的物理单位 大小固定 段是信息的逻辑单位 各段的长度不固定 每一段都具有一定逻辑含义 2 分页的地址空间是一维的 逻辑地址的划分由机器硬件实现 对用户透明 分段的地址空间是二维或多维的 程序员知道段名和段内偏移量 3 分页活动源于系统管理物理内存的需要 在系统内部进行 由系统实施 用户看不见 分段活动源于用户进行模块化程序设计的需要 在系统外部进行 由用户实施 用户是知道的 简单段页式存储管理 基本思想 采用分段方法组织用户程序 采用分页方法分配和管理内存 即 用户程序可以用模块化思想进行设计 一个用户序由若干段构成 系统将内存划分成固定大小的页框 并将程序的每一段分割成若干页以后装入内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年见证取样员考试题及参考答案
- 乡镇避孕药具培训课件
- 创新安防技术2025年智能视频分析系统在校园周边安全防范的可行性研究
- 公司全体安全培训内容课件
- 临沂安全评价培训公司课件
- 建基础考试题及答案
- 餐饮企业培训课件
- 防毒基础知识试题及答案
- 2025年起重信号司索工(建筑特殊工种)考试试题题库(附答案)
- 机修基础试题及答案
- FZ∕T 71006-2021 山羊绒针织绒线
- 慢性创面的治疗及护理课件
- 2023年上海交通大学招聘考试真题
- YY/T 0003-2023手动病床
- 眼科护理个案分享案例
- 《有毒动植物中毒》课件
- 《PS基础教程》课件
- 中秋礼券采购合同
- 招投标评分标准表
- 光学显微镜使用说明书
- 学校体育学(第三版)课件第三章学校体育的目的与目标
评论
0/150
提交评论