存储器管理

所需积分/C币:3 2012-11-27 08:14:39 2.16MB PDF
1
收藏 收藏
举报

存储器管理
4.1概述(5) 存储管理( memory management),即是对存储器的管 理。在计算机系统中,存储器的功能是保存各种信息 存储器分为cPU能直接访问的内存和不能直接访间的外 两者物理特性不同,操作系绕对它们的管理方式也 本章介绍的是对内存的管理,对外存的管理将文件管 理和设备管理中介绍 小存巾大规模集成电路实现,它的发展方向是高速、大 容量和小体积。内存又分为ROM和RAM,ROM为固化 只读的。因此操作系统的存储管理模块管理的是內存屮 的RAM 内存可以看作是以字或字节为单位的存储单元组成的数 组,每个存储单元都有的地 四州大计算院陈兴 41概述一存储管理的功能 ●内存分配和画收:为运行的进程分配内空间 并在不需要时回收它们占据的空间 ●地址转换:当程序中采用的地址和将其装入内 存后的地址不一致时,要完成程序中采用的地址 到内存地址的转换,程序才能正确运行 ●信息共亨和保护 代码和数据共亨,以节省内存空间和保持数据一致 为防止内存中程序相互十扰,要设置地址空门访问 权限(读、写、执 ●内存扩充:即在不改变实际内存容量情况下, 借助大容量外冇决内冇不是问题 42程序的装入和链接 ●创建个活趺进程的第一步是把程序装入内 存,并创建一个进程映像 迂程控制块 程序 程序 数据 数据 主存屮的进程像 叫川大学计算品学院陈兴一 42程序的装入和链接(2) 用户程序的处理步骤 编译、链接、装入(加载 模块#1 模块书2 能接界团我模加我器k 模块 编译阶段链接阶段如载阶段 一四州大学计算品学陈兴 4.21程序的期载、(装入) ●加载(装入) 绝对加载 可重定位加载 ●动态运行时加载 421程序的加载(2) ●绝对加载 ●绝对加载器要求一个给定的加载模块总是被加载 到主存中的同一个单元 ●加载模块中的所有地址都是绝对的主存地址 绝对地址的绑定时间 程序设计时:程序员直接在程序中硝定所有实际的物 编译或汇编:程序包含符号地址访问,由编译器或 仁编器把它们转换成实际的物理地址 二四大学陈兴强一 421程序的加载(3) ●再重定位加载 ●绾对加载使加载模块只能放置在存储器中的一个 固定区域,不能满足多个程序共享主存的需求 ●童定位的实现方法 汇编器或编译器不产生实际的主存地址(绝对地址 而是相对于某些已知点的地址(如:程序的起点) 加载模块的起点祓指定为相对地址0,所有其他存储器 的访问都相对于该模块的起点来表示 重定位 把装入时对日标程序中指令和数据的修改过程成为重定 位,也称静态重定位 一四州大学计算品学陈兴 421程序的加载(4) ●绝对和可重定位加载模块 行号地 绝对地址 相对地址 程序 IUMP X JMP 1424 JUMP 400 1424 400 LOADY LOAD 2224 LOAD 1200 数据 目枟模块 绝对加载模块 相对加载模 一国片大算陈兴 421程序的加载(5) ●动态运行时加截 需要把程序换入、换出,以增加处理器的利用率 重定位加载的地址绑定时间:加载器在加载程序 中把相对地址转换成实际的绝对地址 需要把绝对地址的计算推迟到运行中真正需要时 动态运行时加载的实现方法 加或模块被加载到主午中,它的所有仔储器访问都以相 对形式表示,只有个指定真正被执行时才计算绝对地 需要使件完成 二四大学学陈火一 422程序的链接 ●编译斝:源桯序→目标模块 ●链接器:目标模块→加载模块(装入模块 e链接器的功能 把一纽目标模块作为输入,产生一个包含完整 的程序和数据模块的加载模块,传递给加载器 一四州大学计算品学陈兴 422程序的链接(2) ●链接功能 素地址 模块A 碳块B的外 郃引 周用B L1返回 模块 JSR“L+M 调用C; 长度M L+M1返回 L+M模块C 长度NL+M+N1返回 返回 甘标模央 加载模 422程序的链接3) ●根据链接时间的不同,分成 静态链接方法(上页图) 在程序运行之前,将冬目标模块及它们所需的库函数, 链接成一个完整约装配模块,以后不再拆开 装入时动态链接 ●将用户源程序编译后所得到的一组日标模块,在装入 内仔时,采用边装入边链接的方式 运行时动态链接 对芣些日标模块的链接,是在程序执行中需要该(日 标)模块时,才对它进行链接 二州大学陈兴服一 422程序的链接(4) ●静态链接 静态链接器,也称为链接编辑程序 ●需要解决的问题 ●对相对址进行修改 变换外部调用符号 一四州大学计算品学陈兴 422程序的锥接(5) ●装入时动态链接 ●在装入一个标模块时,若发生一个外部调用事件 勻起装入程序去找出相威的外部模块,并将它们 装入内存 优点 便于修改和更浙 便于实现对日标模块的共享 一川大学陈兴 422程序的链接(6) 运行时动态链接 是装入是链接方式的一种改进 对某些模块的链接推迟到执行时才执行 在执行过程中,发现一个被调用模块尚未装入内 存时,立即由OS去找到该模块并将之装入内存 把它链接到调用者模块上 可以加怏程序的装入过程,并可节省大量的内存 空间 二四州大学院陈一 422程序的链接(7) ●地址绑定时间 程序设计时 不允许外部理序或数据访问,历有引用到的子程序的源代码放入程序 编泽或汇编时 编器必须取每个引用到的子程序的源代码并把它们作为一个部件 加载模块产生时 所有目标模块都使用相对地址汇编,模块被链接在一起,所有的访问 都相对于最后加载的模决釣地点重新申明 ●加载时 百到加载模块被加载到主存时才解析外部访问,被访问的动态链接模 头附加到加载模块后,整个软件包被加载到主右或虚存 运行时 直到处珄器汍行外部调用衬才解析夕部访问,该进行被中断,期待的 被链接到调用程序中 州大学计算玩学院除兴蜀 43连续分配方式 为每个用户程分配连续的内存空向 单一连续分配 固定分区分配 动态分区分配 可重定位分区分配 对换 一川大学计算院陈 431单一连续分配 ●是最简单的一种存储分配管理方法 只能用于单用户、单任务的操作系统中 ●内存分为两个部分 系统区:供OS使用,内存的地址部分 用户区:供用户程序使用 一大学陈兴 432固定分区分配 ●最简单的可还行多道程序的存储管理方式 ●内存用户空间划分为若定大小的区域—一 分区 ●每个分区只装入一道作业 ●划分分区的方法 分区大小相等 ●缺点:缺乏灵活性、浪费,程序太大时无法运行 ●分区大小不等 一四州大学计算品学陈兴 432固定分区分配(2) ●内存分配 将分区按大小进行排队,并为之建立一张分区使用表 会造成存储空间的浪费 区号大小(k)起(K) 操作系统 24K作业A 32三分配 64K作业日 64分西 分区说明表 存储空间分配情沉 抖H大学玩学陈兴 433动态分区分配 根据进程的实际需要,动态地为之分配内存空间 ●分区分配中的数据结构 空闲分区表 进程A 度区首址 进程A 室闲分区链 25K1102□25K 35K 5K 进程B 进程B L3K T36K+5K 进程 进程C b)空闲分区表 13K 68K a)内存分布状况 433动态分区分配(2) 分区分电算法:从空分区表中选出一分区分 给新作业的分配算法 ●首次适应算法FF 从链首开始顺序查找,直到大小能满足要求的空闲分区为 ●从该分区中找出块内存空间分配给请求考,余下的空闲 分区仍留在空闲链中 优 尤先使用低地址部分的空分区,保留高址部分的大空闲区 点 低址部分不断被划分,留下许多难以利用的、很小的空闲分区 ·都从低扛开始,查找开销大 一四州大学计算品学陈兴 4.33动态分区分配(3) ●分区分配算法 循环首次适应算法 从上次找到的空闲分区的下一个空闲分区开始 查找 ●有一起始查询指什 ●采用循环杳找方式 优点 内存中的空闲分区分布得更均匀 减少查找开销 缺点 缺乏大的空闲分区 一川大学算陈兴猫一 433动态分区分配(4) 分区分配算法 最佳适应算法 “最伴”指每次为作业分内存时总是把能满足要求 又是最小的空闲分区分配给作业,避兔“大材小用 空闲分区按其容量以从小到人的顺序形成一空闲分 区链 ●优点 ●每次分配后所剩余部门总是最小的 缺点 ●难以利用的小空困 四大打学陈兴一 10

...展开详情
试读 37P 存储器管理
立即下载 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
存储器管理 3积分/C币 立即下载
1/37
存储器管理第1页
存储器管理第2页
存储器管理第3页
存储器管理第4页
存储器管理第5页
存储器管理第6页
存储器管理第7页
存储器管理第8页

试读结束, 可继续读4页

3积分/C币 立即下载