- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
存储器是计算机系统的五大组成部分之一。随着计算机技术的发展,存储器容量一直在扩充,但仍不能满足现代软件和用户的需要,因此存储器仍是一种宝贵、紧俏的资源。对存储器加以有效管理,不仅直接影响存储器的利用率,而且对系统性能有重大影响。 存储器管理的主要对象是内存,对外存的管理在文件管理中。 存储管理的主要功能有: 主存分配与回收 地址重定位(地址映射) 存储保护 主存扩充(虚拟内存) 提高内存空间的利用率 当CPU访问一组特定信息时,首先检查它是否在高速缓存中,如果已存在,可直接从中取出使用,以避免访问主存,否则,再从主存中读出信息。 4.2 程序的装入和链接 在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常要经过以下几步: (1)编译。由编译程序(Compiler)将用户源代码编译成若干个目标模块(Object Module); (2)链接。由链接程序(Linker)将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块(Load Module); (3)装入。由装入程序(Loader)将装入模块装入内存。 4.2.1 程序的装入 先介绍一个无须进行链接的单个目标模块的装入过程。此时目标模块就是装入模块。 将一个装入模块装入内存时,有三种方式: 绝对装入方式 可重定位装入方式 动态运行时装入方式 4.2.2 程序的链接 程序经过编译后得到一组目标模块,再利用链接程序将目标模块链接,形成装入模块。根据链接时间的不同,把链接分成三种: 静态链接:在程序运行前,将目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开。 装入时动态链接:指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 运行时动态链接:指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行链接。 如:主程序段 4.2 连续分配方式 连续分配方式,是指为一个用户程序分配一个连续的内存空间。 分类: 单一连续分配 固定分区分配 动态分区分配 动态重定位分区分配 4.2.1 单一连续分配 最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。 采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给OS使用,通常放在内存低址部分,用户区是指除系统区以外的全部内存空间,提供给用户使用。 工作流程 单一连续区分配采用静态分配和静态重定位方式,亦即作业或进程一旦进入主存,就一直等到它运行结束后才能释放主存。如下图所示的主存分配与回收法。并且由装入程序检查其绝对地址是否超越,即可达到保护系统的目的。 工作流程(续) 4.2.2 固定分区分配 将内存用户空间划分为若干个固定大小的区域,在每个分区中只装入一道作业,这样把用户空间划分为几个分区,便允许有几道作业并发执行。 当有一空闲分区时,便可以再从外存的后备作业队列中,选择一个适当大小的作业装入该分区,当该作业结束时,可再从后备作业队列中找出另一作业调入该分区。 分区大小相等 分区大小不相等 4.3.3 动态分区分配 所谓动态式分区分配是指根据进程的实际需要,动态地为之分配连续的内存空间。这种存储管理的方法解决了固定分区严重浪费内存的问题。是一种较为实用的存储管理方法。 在实现过程中涉及三个问题: 分区分配中的数据结构 分区分配算法 分区分配与回收操作 2. 分区分配算法 系统运行一段时间后,在整个存储空间内将出现许多大小不等的区域,有的仍被作业进程占用,有的则因作业已退出系统而成为可用于再分配的区域。现在假设有一个新的作业需调入主存,如何为其选择一个合适的区域? 常用的分配算法: (1) 首次适应算法FF (2) 循环首次适应算法 (3) 最佳适应算法 (4)最坏适应算法 (5) 快速适应算法(quick fit) (1) 首次适应算法FF FF算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;然后按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若从头到尾不存在满足要求的分区,则分配失败。 优点:算法简单,查找速度快;优先利用内存低址部分的空闲分区,留在高址部分的大的空白区被划分的机会较少,因而在大作业到来时也比较容易得到满足。 缺点:低址部分不断划分,产生小碎片;每次查找从低址部分开始,增加了查找的开销 要求:空闲区表或空闲区链按地址从低到高排列. (2) 循
文档评论(0)