1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OS第四章1,前尘旧梦第四章,第四章,冒险岛黑色天堂第四章,熟女的悲哀前传第四章,神界传说第四章,前尘旧梦第四章攻略,暗黑3第四章,战舰少女第四章,潜伏之赤途第四章攻略

存储器管理 Operating System * * 教学重点 程序的装入与链接 内存的各种管理方式 虚拟存储器的基本概念 * * 存储管理 计算机系统的主要用途是执行程序。在执行时,这些程序及其所访问的数据必须在内存里(至少部分如此)。 为改善CPU的使用率和对用户的响应速度,计算机必须在内存中保留多个进程。内存管理方案有很多,以便适应不同需求,而方案的选择依赖于很多因素,尤其是系统硬件设计,每个算法都要有自己的硬件支持。 * * 存储器的层次结构 按照距离CPU的远近及由快到慢的存取速度,可以将存储器分为:寄存器、高速缓存cache(一级缓存、二级缓存、三级缓存)、内存、磁盘缓存、磁盘、可移动存储器 * * 4.2 程序装入与链接 程序装入 1 逻辑与物理地址空间 2 链接 3 覆盖与对换 4 * * 地址 内存是现代计算机运行的中心,它由海量的字或字节空间组成,每个字或字节都有它们自己的地址,CPU根据程序计数器的值从内存中提取指令,这些指令可能会引起进一步的对特定内存地址的读写 一个典型的指令执行周期应首先从内存中读取指令,接着解码指令并从内存中读取操作数,在指令对操作数执行完指定工作后,将结果存回内存,这些过程都需要地址帮助 * * 逻辑地址空间和物理地址空间 物理地址:内存单元所看到的地址,存在于内存地址寄存器中 逻辑地址:CPU所使用的地址 注:执行时采用的程序装入方案不同会导致不同的逻辑和物理地址,此时称逻辑地址为虚拟地址 逻辑地址空间:由程序所生成的所有逻辑地址的集合 物理地址空间:所有物理地址的集合 * * 逻辑地址和物理地址 运行时从逻辑地址到物理地址的映射是由硬件内存管理单元(MMU)完成 在MMU内设有重定位寄存器,用户程序所生成的地址在送交内存前都要加上重定位寄存器的值 重定位:装入时对程序中指令和数据地址的修改过程 用户程序绝不会看到真正的物理地址,它只处理逻辑地址 用户程序仅仅使用相对于某个特殊地址(本程序的开始地址,即基址)的差值来操作指定位置的数据或指令,该差值只有在用于内存地址时(加载或存储)才进行相对于基址的重定位 * * 逻辑地址和物理地址 CPU 14000 + 内存 内存管理单元(MMU) 重定位寄存器 逻辑地址 346 物理地址 14346 * * 程序装入 为了执行程序,需要将其调入内存形成多个进程 进程至少占据数据段和代码段两个内存空间 进程在执行时,会访问内存中的数据和指令;进程终止时,其地址空间将被释放 许多系统允许用户进程放在物理内存的任意位置,即计算机的物理地址空间虽然从0开始计数,但用户进程的开始物理地址却不必也是0 * * 用户程序的处理过程 编辑:编写源代码,形成源文件 编译:将源文件翻译成若干目标模块 链接:多个目标模块及其所需函数库生成装入模块(可执行文件) 装入:将装入模块放入内存,申请PCB、分配空间、生成进程 * * 用户程序的处理过程 编译时间 加载时间 运行时间 编译器或汇编器 链接编辑器 加载器 内存中二进制内存映像 源程序 目标模块 加载模块 其他目标模块 系统库 动态链接库 动态链接 * * 程序装入(地址捆绑) 用户程序在执行前,需要经过多个步骤,在这些步骤中,地址可能有不同的表示形式 源程序中的地址通常用符号表示(如count),编译器通常将这些符号地址捆绑在可重定位的地址(如“从本模块开始的第3字节”)。链接程序或加载程序再将这些可重定位的地址捆绑成绝对地址(如20375) 每次捆绑都称为从一个地址空间到另一个地址空间的映射 * * 程序装入(地址捆绑) 指令数据与内存地址的捆绑可在如下任一步骤中执行 编译时(绝对装入方式):编译时已经指定进程在内存中的地址,可以直接给出绝对地址,生成绝对代码 加载时(可重定位装入方式):编译时不知道进程驻留地址,需要在加载时生成可重定位代码 执行时(动态运行时装入方式):若进程执行时在内存段间切换,捆绑必须延迟到执行时进行,这种方案需要特定硬件支持 * * 绝对装入方式 此种方式的程序代码中使用的绝对地址既可在编译或汇编时给出,也可由程序员人工赋予 优点:装入简单,无需地址变换,适用于单道程序环境 缺点:如果开始地址产生变化,必须重新编译代码,同时要求程序员熟悉内存使用情况和硬件结构 * * 可重定位装入方式 根据内存当前情况将装入模块装入到内存的适当位置,装入时的地址变换是一次性完成的,以后不再修改,因此称为静态重定位 如果开始地址产生变化,只需重新加载用户代码以引入改变值即可 优点:适用于多道程序环境 缺点:程序装入内存后占据连续空间且不能在内存中移动位置 * * 动态运行时装入方式 可执行文件中使用逻辑地址,装入时不变换地址,执行时才进行重定位 优点:可

文档评论(0)

gooddoc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档