数据存储与管理.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

①对相对地址进行修改 由编译程序产生的所有目标模块中,使用的都是相对 地址,其起始地址都为0,在链接成一个装入模块时修 改模块的相对地址。即把原B中的所有相对地址都加 上L,把原C中所有相对地址都加上L+M。 ②变换外部调用符号 将每个模块中所用的外部调用符号也都变换为相对地 址。例如将call B 变换为JSR “L”
• 为了便于程序的修改,对编译的程序采用符号地址,然 后在编译或汇编时,再将这些符号地址转换为绝对地 址。 (2).可重定位装入方式 • 目标模块的起始地址通常是从0开始的,程序中的其它 地址也都是相对于起始地址计算的。 • 由装入程序将装入模块装入内存后,装入模块中程序 所访问的所有逻辑地址与实际装入内存的物理地址不 同 ,必须进行变换。
空闲分区链表
(2) 分区分配算法
分区首址寄存 器:10000 10000 相对地址:2100 2100 12100

302
作业空间
处理机侧
存储器侧 物理内存
3.2பைடு நூலகம்2 分区管理
1. 固定分区分配:将内存用户空间划分为若干个 固定大小的区域,在每个分区中只装入一道作 业。 (1).划分分区的方法两种: ①分区大小相等。当程序太小时,会造成内 存空间的浪费 。当程序太大时,一个分区 又不足以装入该程序,致使该程序无法运行 ②分区大小不等。可把内存区划含有多个较 小的分区、适量的中等分区及少量的大分区。
3.1.2 程序的装入和链接
• 如何将一个用户源程序变成一个可在内存中 执行的程序,通常要经过3步骤: 1. 编译:由编译程序(Compiler)将用户源代码 编译成若个目标模块 2. 链接:由链接程序(Linker)将编译后形成的 一组目标模块,以及它们所需要的库函数链 接在一起,形成一个完整的装入模块 3. 装入:由装入程序(Loader)将装入模块装入 内存。
2.动态分区方式
★动态分区分配是根据进程的实际需要,动态地为 之分配内存空间。 (1) 分区组织 为了实现分区分配,系统中配置相应的数据结构, 为分配提供依据。常用的数据结构有以下两种形 式:
①空闲分区表。在系统中设置一张空闲分区表,用于记录 每个空闲分区的情况。 ②空闲分区链。为了实现对空闲分区的分配和链接,设置 前向指针和后向指针,通过前、后向链接指针将所有的 空闲分区链接成一个双向链。
(3)、运行时动态链接。这是指对某些目标模块的链接, 是在程序执行中需要该目标模块时,由0S去找到该模 块并将之装入内存并把它链接到调用者模块上。 优点:凡在执行过程中未被用到的目标模块,都不会 被调入内存和被链接到装入模块上,这样不仅可加快 程序的装入过程,而且可节省大量的内存空间。
3.2 连续分配方式
第三章 数据存储与管理
如何对存储器加以有效的管理,不仅 直接影响到存储器的利用率,而且还 对系统性能有重大影响。存储器管理 的主要对象是内存。
3.1 概述
3.1.1 存储系统的结构
中央处理器 一级缓存 容 量 越 往 下 越 大
访 问 速 度 往 上 越 高
二级缓存
内存 磁盘交换区
图3-1 现代存储系统的结构
1. 程序的装入
• 在将一个装入模块装入内存时,可以有绝对装 入方式、 (1).绝对装入方式 如果知道程序将驻留在内存的什么位置,那么, 编译程序将产生绝对地址的目标代码。 绝对装入程序按照装入模块中的地址,将程序 和数据装入内存。装入模块被装入内存后,由 于程序中的逻辑地址与实际内存地址完全相同, 故不需对程序和数据的地址进行修改。
(2)、装入时动态链接。是指将用户源程序编译后所得到 的一组目标模块,在装入内存时,采用边装入边链接 的链接方式。 • 装入时动态链接方式有以下优点: ①便于修改和更新 若采用动态链接方式,由于各目标模块是分开存放的, 所以要修改或更新各目标模块,是件非常容易的事。
②便于实现对目标模块的共享 在采用静态链接方式时,每个应用模块都必须含有 其目标模块的拷贝,无法实现对目标模块的共享。 但采用装入时动态链接方式时, OS 则很容易将一 个目标模块链接到几个应用模块上,实现多个应用程 序对该模块的共享。
• 把在装入时对目标程序中指令和数据的变换过程称为 重定位。因为地址变换是在装入时一次完成的,以后 不再改变,故称为静态重定位。 • 采用静态重定位方法将程序装入内存,称为可重定位装 入方式。 (3).动态运行时装入方式 • 装入程序将目标模块装入内存后,并不立即把装入模 块中的相对地址转换为绝对地址,而是把这种地址转 换推迟到程序执行时进行,在硬件地址变换机构的支 持下,随着对每条指令或数据的访问自动进行地址变 换,故称为动态重定位。

• 1. 2. 3. 4.
连续分配方式,是指为一个用户程序分 配一个连续的内存空间。 连续分配方式有四种: 单一连续分配 固定分区分配 动态分区分配 可重定位分区分配(汤子瀛)
3.2.1 单一连续分配
• 1. 2. • 把内存分为系统区和用户区两部分 系统区仅提供给0S使用,通常是放在内存的低址部 分; 用户区是指除系统区以外的全部内存空间,提供给 用户使用。 配置了存储器保护机构,用于防止用户程序对操作 系统的破坏 。
•采用动态重定位方法将程序装入内存,称 为动态运行时装入方式 。
2. 程序的链接 ★源程序经过编译后,可得到一组目标模块,再 利用链接程序将这组目标模块链接形成装入模 块。根据链接时间的不同,可把链接分成如下 三种: (1)、静态链接方式。在程序运行之前,先将各目 标模块及它们所需的库函数,链接成一个完整 的装配模块(又称执行模块),以后不再拆开。 我们把这种事先进行链接的方式称为静态链接 方式。
(2).分区分配 • 固定分区式分配 的实现。为了便于内存分配,通常将 分区按大小进行排队,并为之建立一张分区使用表。 如下图所示。
分区描述表
(2).分区分配 • 固定分区式分配 的优缺点:可运行多道程序的存储管 理方式 。存在“内零头”会造成存储空间的浪费 。 • 内零头——在分区内没有利用的部分称为内零头。
相关文档
最新文档