操作系统存储管理(1)
计算机操作系统存储管理

计算机操作系统存储管理计算机操作系统存储管理是指操作系统在运行过程中管理和控制计算机的存储资源的一种机制。
它负责分配和回收内存,以及保护和管理进程的内存访问权限。
存储管理是操作系统中的一个重要子系统,对系统的性能和稳定性具有重要影响。
本文将介绍计算机操作系统存储管理的基本原理、常见的存储管理技术以及其在实际应用中的作用。
一、存储管理的基本原理在计算机系统中,存储器扮演着重要的角色,它用于存储程序、数据和系统状态。
计算机操作系统存储管理的基本原理是将物理内存划分为多个逻辑区域,每个区域被分配给不同的程序或进程使用。
操作系统维护一个内存分配表,记录每个逻辑区域的使用情况,并根据请求进行内存分配与回收。
当进程创建时,操作系统将为其分配一定大小的内存,当进程终止时,操作系统会回收这些内存资源。
同时,存储管理还负责处理内存碎片问题,通过内存的动态分配与合并来最大化利用内存资源。
二、常见的存储管理技术1. 基于固定分区的存储管理技术基于固定分区的存储管理技术是最早的一种存储管理方法。
它将物理内存划分为若干固定大小的分区,每个分区只能分配给一个进程使用。
该方法简单直观,但由于分区的固定大小,会产生很多内存碎片,不利于内存的高效利用。
2. 基于可变分区的存储管理技术为了解决内存碎片问题,出现了基于可变分区的存储管理技术。
这种技术允许每个进程动态地申请和释放内存空间,分区的大小可以根据进程的需要进行调整。
它相对于固定分区的方法更加灵活,能够提高内存利用率,但也存在内存碎片问题。
3. 页式存储管理技术页式存储管理技术将物理内存和逻辑内存划分为固定大小的页块,进程的地址空间也被划分为相同大小的页。
通过将逻辑地址转换为物理地址,实现了逻辑内存与物理内存的映射。
该技术可以很好地解决内存碎片问题,并且方便创建和销毁进程,但需要额外的地址转换开销。
4. 段式存储管理技术段式存储管理技术将进程的逻辑地址空间划分为若干段,每个段具有不同的长度和属性。
计算机基础知识之操作系统与存储管理

计算机基础知识之操作系统与存储管理操作系统是计算机系统中一种重要的软件,它负责管理和控制计算机的硬件、软件和用户资源。
存储管理是操作系统的一个重要组成部分,它负责管理计算机系统中的内存和磁盘空间。
本文将介绍操作系统与存储管理的基本概念和功能。
一、操作系统操作系统是计算机系统的核心组件,它为用户提供了一个友好的界面,使用户可以通过命令或图形界面与计算机进行交互。
操作系统负责协调和管理计算机系统的各个部分,包括硬件设备、文件系统、网络通信等。
1.操作系统的基本功能操作系统具有以下基本功能:(1)进程管理:操作系统负责管理运行在计算机上的各个进程,包括进程的创建、调度、同步和通信等。
(2)内存管理:操作系统负责管理计算机的内存资源,包括内存的分配、回收和地址映射等。
(3)文件系统:操作系统负责管理计算机系统中的文件,包括文件的存储、访问和保护等。
(4)设备管理:操作系统负责管理计算机的硬件设备,包括设备的驱动、分配和调度等。
(5)用户接口:操作系统提供了用户与计算机系统交互的接口,包括命令行界面和图形界面等。
2.常见的操作系统目前,常见的操作系统主要有以下几种:(1)Windows操作系统:由微软公司开发的操作系统,广泛应用于个人电脑和服务器领域。
(2)Linux操作系统:一种开源的操作系统,具有良好的稳定性和扩展性,广泛应用于服务器和嵌入式系统领域。
(3)Mac OS操作系统:由苹果公司开发的操作系统,主要应用于苹果的个人电脑和移动设备。
(4)Android操作系统:由谷歌和开放手机联盟共同开发的操作系统,主要应用于移动设备领域。
二、存储管理存储管理是操作系统中的一个重要功能模块,它负责管理计算机系统中的内存和磁盘空间。
存储管理的目标是提高内存和磁盘的利用率,保证程序能够正常运行,并提供良好的系统性能。
1.内存管理内存是计算机系统中最重要的资源之一,操作系统需要有效地管理内存资源,以满足不同进程的内存需求。
2021年操作系统2002--存储管理(1).pptx

最先适应算法
空闲分区按其在内存中位置的顺序从低地址到高地址链接在一起, 即每个后继空闲区的起始地址总是比前面的大。系统在查找空闲分区时, 按照空闲区的链的顺序,依次查询,直到找到第一个满足要求的空闲区 为止。其实质是,尽可能利用存储器的低地址部分,尽量保存高地址部 分的空闲区。
优点:当需要一个较大的分区时,容易得到满足。
所谓可变分区是指,系统并不预先 划分几个固定分区。分区的建立是在作 业的处理过程中进行的,其大小随作业 的主存需求量而决定。在这种管理方式 下,系统中任一时刻分区的大小及个数, 都是不固定而可改变的。
可变分区管理的数据结构
0 400k 1000k
操作系统 J1
2000k J3
2300k 2560k
处理机不能直接访问的存储器。用来存放用 户的各种信息,存取速度相对内存而言要慢得多 ,但它可用来长期保存用户信息。在文件系统中 介绍。
信息的二级存储
指导思想:利用辅存(如磁盘、磁带等)提 供的大容量存储空间,存放准备运行的程序 和数据,当需要时或主存空间允许时,随时 将它们读入主存储器。
CPU
主存
限长
CPU
是 <
逻辑地址 否
地址越界
基址
+
内存
物理地址
例题:在可变分区管理中,有那些分区分配算法?各有何优缺点?
最优适应算法
空闲分区按空间大小的顺序从小到大链接在一起。系统在查找空 闲分区时,总是从最小的一个开始。其实质是,在系统中寻找与要 求大小最接近的空闲分区。
优点:如果存在有在正好满足所要求大小的空闲分区,则必然被选 中,或者只对比要求稍大的空闲分区进行划分,而绝不会划分一个 更大的空闲分区。
144k
256k
深入了解计算机操作系统的存储管理

深入了解计算机操作系统的存储管理计算机操作系统是计算机系统的核心组成部分,为计算机软件和硬件的协调运行提供支持。
计算机内存是计算机硬件中的重要组成部分,是计算机系统运行的基础。
在计算机操作系统中,存储管理是最基本的操作之一。
本文将深入探讨计算机操作系统中的存储管理。
一、存储管理概述在计算机操作系统中,存储管理主要包括内存分配和内存回收两个方面。
内存分配是指在计算机系统启动时,将内存分为多个块,并为进程和线程分配所需的内存,以保证它们可以正常运行;内存回收是指在进程和线程退出时,将分配给它们的内存释放给系统,以便供其他进程和线程使用。
二、内存分配技术为了更好地满足进程和线程的内存需求,计算机操作系统采用了多种内存分配技术,包括动态内存分配和静态内存分配两种。
1、动态内存分配动态内存分配是指在进程和线程运行时,根据其实际内存需求进行内存分配。
操作系统通常采用分区技术对内存进行分配,可以分为固定分区和动态分区两种。
(1) 固定分区固定分区是指将内存分为若干个固定大小的分区,每个分区只能分配给一个进程或线程使用。
由于分区大小固定,因此容易产生“内存碎片”的问题,如果分区大小过小会浪费内存,如果分区大小过大则会导致分配不均。
因此,固定分区在实际应用中并不常用。
(2) 动态分区动态分区是指将内存分为若干个不固定大小的分区,每个分区可以根据进程或线程的实际内存需求进行分配。
动态分区主要解决了固定分区的一些问题,但也会产生“内存碎片”问题。
2、静态内存分配静态内存分配是指在编译时就将内存分配给进程或线程,并在运行时不再进行内存分配。
静态内存分配主要用于一些固定的程序或数据结构上,通常不适用于通用操作系统中。
三、内存回收技术在进程或线程退出时,需要将其占用的内存释放,并返还给系统。
内存回收主要包括两种技术,分别为手动回收和自动回收。
1、手动回收手动回收是指在编写程序时,由程序员手动释放所分配的内存。
手动回收需要注意内存泄漏和悬挂指针等问题,需要程序员自己负责管理内存。
操作系统存储管理

操作系统存储管理在计算机的世界里,操作系统就像是一位有条不紊的大管家,而存储管理则是它手中的一项关键任务。
存储管理的职责是有效地管理计算机的内存和外存资源,以确保程序能够顺利运行,数据能够安全存储和快速访问。
想象一下,如果计算机的存储系统是一个杂乱无章的仓库,程序和数据随意堆放,那么计算机的运行效率将会变得极其低下,甚至可能会出现错误。
因此,操作系统的存储管理就显得尤为重要。
首先,我们来谈谈内存管理。
内存是计算机中程序运行时直接使用的存储空间,它的速度快但容量相对较小。
内存管理的主要任务之一就是合理地分配内存给各个程序,确保它们能够正常运行,同时避免内存的浪费和冲突。
当一个程序需要运行时,操作系统会为它分配一块足够的连续内存空间。
这就像是在一个有限的房间里为客人安排合适的座位一样。
为了实现高效的内存分配,操作系统采用了多种策略,比如分区分配法、分页存储管理和分段存储管理等。
分区分配法是将内存划分为若干个固定大小或可变大小的分区,然后将程序分配到合适的分区中。
这种方法简单直观,但容易产生内存碎片,即一些无法被利用的小空闲区域。
分页存储管理则将内存划分为固定大小的页,程序也被分成同样大小的页。
这样,操作系统可以更灵活地分配内存,减少了内存碎片的产生。
但它也有缺点,比如页表的维护会带来一定的开销。
分段存储管理则是根据程序的逻辑结构将其分成不同的段,比如代码段、数据段等。
这种方式更符合程序的逻辑,但也需要更复杂的管理机制。
除了内存分配,内存保护也是内存管理的重要任务。
操作系统要确保一个程序只能访问自己被分配的内存区域,不能越界访问其他程序的内存,以保证系统的安全性和稳定性。
接下来,我们说说外存管理。
外存,比如硬盘,具有大容量但速度较慢的特点。
外存管理主要涉及文件系统和存储设备的管理。
文件系统就像是一个图书馆的分类系统,它将外存中的数据组织成文件和目录的形式,方便用户查找和使用。
文件系统需要考虑文件的命名、存储位置、访问权限等诸多方面,以提供高效、可靠的文件存储和访问服务。
操作系统_存储管理

操作系统_存储管理在计算机系统中,操作系统的存储管理是一项至关重要的任务。
它就像是一个精明的管家,负责合理地安排和管理计算机的存储空间,以确保各个程序和数据能够高效、安全地存储和访问。
想象一下,计算机的存储空间就像是一个巨大的仓库,而存储管理的任务就是决定哪些货物(数据和程序)应该放在哪个货架(存储区域)上,以及如何快速准确地找到它们。
如果没有有效的存储管理,这个仓库就会变得混乱不堪,导致程序运行缓慢、数据丢失甚至系统崩溃。
存储管理主要包括内存管理和外存管理两个方面。
内存管理是存储管理的核心,因为内存是计算机运行程序时直接使用的存储区域,其速度快但容量有限。
外存管理则主要负责长期存储数据和程序,如硬盘、U盘等,其容量大但速度相对较慢。
内存管理的首要任务是分配内存。
当一个程序需要运行时,操作系统必须为其分配足够的内存空间。
这可不是一件简单的事情,因为内存空间是有限的,而且不同的程序对内存的需求也各不相同。
为了解决这个问题,操作系统采用了多种内存分配策略,如连续分配和离散分配。
连续分配就像是把一块完整的土地分给一个家庭,这种方式简单直观,但容易造成内存碎片,降低内存的利用率。
离散分配则更加灵活,它将内存分成小块,根据程序的需求进行分配,就像把一个大房子分成多个小房间出租一样。
离散分配又分为分页存储管理和分段存储管理。
分页存储管理将内存空间划分成固定大小的页,程序也被分成同样大小的页。
这样,操作系统可以根据页的使用情况来分配和回收内存,提高了内存的利用率。
但分页管理可能会导致一个程序的页分散在不同的物理内存位置,增加了访问的时间。
分段存储管理则是根据程序的逻辑结构将其分成不同的段,如代码段、数据段等。
每个段有不同的访问权限和存储特点,这样更符合程序的逻辑结构,方便程序的编写和调试。
除了分配内存,内存管理还需要进行内存保护。
这就像是给每个房间都安装了门锁,只有拥有合法权限的程序才能访问相应的内存区域,防止一个程序误操作或恶意修改其他程序的内存数据,保障了系统的安全性和稳定性。
操作系统存储管理实验报告

操作系统存储管理实验报告一、实验目的操作系统的存储管理是计算机系统中非常重要的组成部分,它直接影响着系统的性能和资源利用率。
本次实验的目的在于深入理解操作系统中存储管理的基本原理和方法,通过实际操作和观察,掌握存储分配、回收、地址转换等关键技术,并对不同存储管理策略的性能进行分析和比较。
二、实验环境本次实验在 Windows 10 操作系统下进行,使用 Visual Studio 2019 作为编程环境,编程语言为 C++。
三、实验内容(一)固定分区存储管理1、原理固定分区存储管理将内存空间划分为若干个固定大小的分区,每个分区只能装入一道作业。
分区的大小可以相等,也可以不等。
2、实现创建一个固定大小的内存空间数组,模拟内存分区。
为每个分区设置状态标志(已分配或空闲),并实现作业的分配和回收算法。
3、实验结果与分析通过输入不同大小的作业请求,观察内存的分配和回收情况。
分析固定分区存储管理的优缺点,如内存利用率低、存在内部碎片等。
(二)可变分区存储管理1、原理可变分区存储管理根据作业的实际需求动态地划分内存空间,分区的大小和数量是可变的。
2、实现使用链表或数组来管理内存空间,记录每个分区的起始地址、大小和状态。
实现首次适应、最佳适应和最坏适应等分配算法,以及分区的合并和回收算法。
3、实验结果与分析比较不同分配算法的性能,如分配时间、内存利用率等。
观察内存碎片的产生和处理情况,分析可变分区存储管理的优缺点。
(三)页式存储管理1、原理页式存储管理将内存空间和作业都划分为固定大小的页,通过页表将逻辑地址转换为物理地址。
2、实现设计页表结构,实现逻辑地址到物理地址的转换算法。
模拟页面的调入和调出过程,处理缺页中断。
3、实验结果与分析测量页式存储管理的页面置换算法(如先进先出、最近最少使用等)的命中率,分析其对系统性能的影响。
探讨页大小的选择对存储管理的影响。
(四)段式存储管理1、原理段式存储管理将作业按照逻辑结构划分为若干个段,每个段有自己的名字和长度。
操作系统的存储管理

操作系统的存储管理操作系统是计算机系统中最核心的软件之一,负责管理计算机系统中的各种资源。
其中,存储管理是操作系统的重要功能之一。
存储管理的主要任务是为进程提供必要的存储空间,并合理地管理和调度这些空间,以提高计算机系统的性能和效率。
本文将介绍操作系统的存储管理的主要内容和方法。
一、存储器的层次结构在计算机系统中,存储器被划分为不同的层次,从高速缓存到主存再到辅助存储器。
每一层次的存储器在性能、容量和价格方面都不同,因此在存储管理中需要根据不同层次的特点进行合理的调度和利用。
1. 高速缓存高速缓存是存放在CPU芯片上的一种特殊存储器,它的访问速度比主存更快。
高速缓存一般分为一级缓存和二级缓存,一级缓存位于CPU内部,二级缓存则位于CPU外部但距离CPU很近。
高速缓存的存在可以提高CPU对存储器访问的效率。
2. 主存主存是计算机系统中用于存放程序和数据的地方,它的容量相对较大,但访问速度相对较慢。
主存的管理是操作系统中存储管理的重要内容之一。
3. 辅助存储器辅助存储器是计算机系统中存储容量最大的部分,一般采用硬盘、磁带等形式。
辅助存储器的访问速度相对较慢,但它能够长时间保存数据。
在计算机系统中,辅助存储器主要用于存放操作系统和用户程序、数据等。
二、内存管理内存管理是操作系统存储管理的核心内容之一。
在操作系统中,内存被划分为若干个固定大小的存储块,每个存储块被称为一页。
内存管理的主要任务是为进程提供所需的内存空间,并合理分配和回收这些内存空间。
1. 内存分配在操作系统中,内存分配的方式有多种,常见的有静态分配和动态分配。
静态分配是指在程序执行之前就确定了每个进程所需的内存空间大小,然后将其分配给相应的进程。
动态分配则是在程序执行过程中动态地分配内存空间,根据进程的需要进行动态调整。
2. 内存回收在进程执行完毕或者由于其他原因不再需要占用内存空间时,操作系统需要及时回收这些空闲的内存空间以供其他进程使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 分区分配中的数据结构
(1) 分区分配表(见图 4-3-5) (2) 空闲分区链
图 4-3-4 空闲链结构
分区分配表:
0K 15K
38K 48K
68K 80K
110K 120K
图 4-3-5分区分配表
空闲区表
始址 15K 48K 80K
长度 23K 20K 30K
已分配区表
始址
长度
0K
15K
存储器的层次结构
2.各种存储器
• 高速缓存Cache: 少量的、非常快速、昂贵、易变的
• 内存RAM: 若干兆字节、中等速度、中等价格、易
变的 • 磁盘:
数百兆或数千兆字节、低速、价廉、不 易变的
• 由操作系统协调这些存储器的使用
4.1.2 存储管理的目的
1)主存的分配和管理:当用户需要内存时, 系统为之分配相应的存储空间;不需要时, 及时回收,以供其它用户使用。
编译 连接
data1 3456
200
BA=1000
Load A 200
地址映射
Load A 200
3456
1200
3456 。 。
图4-1名空间、地址空间、存储空间
7.逻辑地址与物理地址
• 逻辑地址(相对地址,虚地址) : 用户的程序经过汇编或编译后形成目标 代码,目标代码通常采用相对地址的形 式,其首地址为0,其余指令中的地址 都相对于首地址而编址。 不能用逻辑地址在内存中读取信息
2)提高主存储器的利用率:不仅能使多道 程序动态地共享主存,提高主存利用率, 最好还能共享主存中某个区域的信息。
存储管理的目的(续)
3)“扩充”主存容量:为用户提供比主存物 理空间大得多的地址空间,以至使用户感 觉他的作业是在这样一个大的存储器中运 行。
4)存储保护:确保多道程序都在各自分配 到存储区域内操作,互不干扰,防止一道 程序破坏其它作业或系统文件的信息。
• 物理地址(绝对地址,实地址) 内存中存储单元的地址,可直接寻址
ቤተ መጻሕፍቲ ባይዱ
8.存储共享
• 内存共享:两个或多个进程共用内 存中相同区域
• 目的:节省内存空间,提高内存利 用率
• 实现进程通信(数据共享) • 共享内容:
代码共享,要求代码为纯代码 数据共享
9.存储保护与安全
保护目的:
为多个程序共享内存提供保障, 使在内存中的各道程序, 只能访问 它自己的区域,避免各道程序间相 互干拢,特别是当一道程序发生错 误时, 不致于影响其他程序的运 行。通常由硬件完成保护功能,由 软件辅助实现。(特权指令不能完 成存储保护。)
(1) 便于修改和更新。 (2) 便于实现对目标模块的共享。
• (1) 便于修改和更新。对于经静态链接装配在一起的装入 模块,如果要修改或更新其中的某个目标模块,则要求重 新打开装入模块。这不仅是低效的,而且有时是不可能的。 若采用动态链接方式,由于各目标模块是分开存放的,所 以要修改或更新各目标模块是件非常容易的事。
• 单用户系统在一段时间内,只有一个进程在内存, 故内存分配管理十分简单,内存利用率低。内存 分为两个区域,一个供操作系统使用,一个供用 户使用
工作流程
单一连续区分配采用静态分配和 静态重定位方式,亦即作业或进程 一旦进入主存,就一直等到它运行 结束后才能释放主存。如下图所示 的主存分配与回收法。并且由装入 程序检查其绝对地址是否超越,即 可达到保护系统的目的。
第四章 存储器管理
4.1 存储器的层次结构 4.2 程序的装入和链接 4.3 连续分配方式
第四章 存储器管理
4.1 存储器的层次结构
4.1.1 存储器的层次结构
1. 存储器的层次结构 在现代计算机系统
中,存储器是信息外理 的来源与归宿,占据重 要位置。但是,在现有 技术条件下,任何一种 存储装置,都无法同时 从速度与容量两方面, 满足用户的需求。实际 上它们组成了一个速度 由快到慢,容量由小到 大的存储装置层次。
2. 可重定位装入方式
图 4-2-2 作业装入内存时的情况
3. 动态运行时装入方式
动态运行时的装入程序,在把装入模 块装入内存后,并不立即把装入模块中 的相对地址转换为绝对地址,而是把这 种地址转换推迟到程序真正要执行时才 进行。因此, 装入内存后的所有地址都 仍是相对地址。
4.2.2 程序的链接
工作流程(续)
单用户系统缺点
• 不支持多道。 • 主存利用率不高。 • 程序的运行受主存容量限制。
4.3.2 固定分区分配
分区式管理是满足多道程序的最 简单的存储管理方案。它的基本思 想是将内存划分成若干个连续区域, 称为分区。每个分区只能存储一个 程序,而且程序也只能在它所驻留 的分区中运行。
10.内存“扩充”
通过虚拟存储技术实现
• 用户在编制程序时,不应该受内存容 量限制,所以要采用一定技术来“扩 充”内存的容量,使用户得到比实际 内存容量大的多的内存空间
• 具体实现是在硬件支持下,软硬件相 互协作,将内存和外存结合起来统一 使用。通过这种方法把内存扩充,使 用户在编制程序时不受内存限制
该算法是由首次适应算法演变而成的。在为进程分配 内存空间时,不再是每次都从链首开始查找,而是从上次 找到的空闲分区的下一个空闲分区开始查找,直至找到一 个能满足要求的空闲分区,从中划出一块与请求大小相等 的内存空间分配给作业。
该算法能使内存中的空闲分区分布得更均匀,从而减少了 查找空闲分区时的开销,但这样会缺乏大的空闲分区。
1.静态链接方式
图 4-2-3 程序链接示意图
2. 装入时动态链接
用户源程序经编译后所得的目标模块,是在装入内存时 边装入边链接的,即在装入一个目标模块时,若发生一 个外部模块调用事件,将引起装入程序去找出相应的外 部目标模块,并将它装入内存,还要修改目标模块中的 相对地址。
装入时动态链接方式有以下优点:
符号指令 数据说明 I/O说明
地址空间及存储空间
5.地址空间 • 程序用来访问信息所用地址单元的集
合 • 逻辑(相对)地址的集合 • 由编译程序生成 6.存储空间 • 主存中物理单元的集合 • 物理(绝对)地址的集合 • 由装配程序等生成
源程序
逻辑地址空间
0
物理地址空间
Load A data1
100
2)动态重定位
2) 动态重定位
在程序运行过程中要访问数据时再进 行地址变换。由地址变换机构进行的地址 变换,硬件上需要重定位寄存器的支持。
2.动态重定位的实现方式
• 重定位寄存器:在执行一条指令取操 作数时,要将指令给出的有效地址 (500)与重定位寄存器中的内容(1000) 相加,得访问地址(1500),从而实 现了地址动态修改。
4.1.3. 基本概念
1.定位(存储分配):为具体的程序和数 据等分配存储单元或存储区工作。
2.映射:把逻辑地址转换为相应的物理地 址的过程。
3.隔离:按存取权限把合法区与非法区分 隔,实现存储保护。
4.名空间
• 程序员在程序中定义的标识符 • 程序符号集合 • 由程序员自定义 • 没有地址的概念
• 映象方式:采用页表来描述虚、实页 面的对应关系 。
第四章 存储器管理
4.3 连续分配存储管理
4.3.1 单用户存储管理
• 在单道环境下,不管是单用户系统还是单道批处 理系统,进程(作业)执行时除了系统占用一部 分主存外,剩下的主存区域全部归它占用。主存 可以划分为三部分: 系统区、用户区、空闲区。 用户占用区是一个连续的存储区所以又称单一连 续区存储管理。
38K
10K
68K
12K
110K
10K
标志 未分配 未分配 未分配
空 空
标志 J1 J2 J3 J4 空 空
0K 15K
38K 48K
68K
80K 85K 98K 110K 120K
空闲区表
始址 15K 48K 98K
长度 23K 20K 12K
已分配区表
始址 0K 38K 68K 110K 80K 85K
4.2.3 重定位
把作业地址空间中使用的逻辑地址变换成 内存空间中的物理地址的过程。又称地址映射。 如下图,作业i经过重定位,把地址集合映射到 以1000为始址的内存中,作为作业i的存储空间。
1. 重定位的类型
1)静态重定位:当用户程序被装入内存时, 一次性实现逻辑地址到物理地址的转换, 以后不再转换(一般在装入内存时由软 件完成)作业i在执行前一次变址,直 到该作业完成退出内存为止。
该算法优先利用内存中低址部分的空闲分区,从而保留了高址 部分的大空闲区。这给为以后到达的大作业分配大的内存空间 创造了条件。
缺点是低址部分不断被划分,会留下许多难以利用的、很小的 空闲分区,而每次查找又都是从低址部分开始,这无疑会增加 查找可用空闲分区时的开销。
2) 循环首次适应算法(next fit)
• (2) 便于实现对目标模块的共享。在采用静态链接方式时, 每个应用模块都必须含有其目标模块的拷贝,无法实现对 目标模块的共享。但采用装入时动态链接方式,OS则很 容易将一个目标模块链接到几个应用模块上,实现多个应 用程序对该模块的共享。
3. 运行时动态链接
这种链接方式是将对某些模块的链接推迟 到执行时才执行,即,在执行过程中,当发现一 个被调用模块尚未装入内存时,立即由OS去找到 该模块并将之装入内存, 把它链接到调用者模块 上。凡在执行过程中未被用到的目标模块,都不 会被调入内存和被链接到装入模块上,这样不仅 可加快程序的装入过程,而且可节省大量的内存 空间。
长度 15K 10K 12K 10K 5K 13K
标志 未分配 未分配 未分配
空 空
标志 J1 J2 J3 J4 J5 J6
2. 分区分配操作