经典:南邮操作系统教程CH-04-存储管理
合集下载
106275-操作系统(第5版)-CH4-4.1存储器工作原理4.2连续存储管理
越界中断
多对基址/限长寄存器
重定位寄存器1 限长寄存器1
进程A 私有空间
共享区
重定位寄存器2 限长寄存器2
进程A虚CPU
重定位寄存器1
限长寄存器1
进程B 私有空间
物理内存
重定位寄存器2
限长寄存器2
进程B虚CPU
多对重定位寄存器支持内存共享
4.2.3内存不足的存储管理技术
1.移动技术
操作系统 作业1 空闲区 作业2 空闲区 作业3 空闲区
• 链接需要解析内部和外部符号表,把对符号名字引 用转换为数值引用,要转换每个涉及名字地址的程 序入口点和数据引用点成为数值地址。
• 装入时根据指定的内存块首地址,再次修改和调整 被装载模块中的每个逻辑地址,将逻辑地址绑定到 物理地址。
编译、链接、装载(2)
• 链接程序(linker)的作用是根据目标模块之间的调 用和依赖关系,将主调模块、被调模块、以及所用到 的库函数装配和链接成一个完整的可装载执行模块。
4.1 存储器工作原理
4.1.1存储器层次 4.1.2地址转换与存储保护
4.1.1 存储器层次
寄存器 高速缓存 内存储器 磁盘缓存 固定磁盘 可移动存储介质
各级存储器性能
4.1.2 地址转换与存储保护(1)
程序的编译、链接、装载和执行
编译
源程序模块1
源程序模块2 …
源程序模块n
程序名字空间
链接
3. 覆盖技术
• 覆盖的作用 • 覆盖的实现技术 • 覆盖技术的不足
• (3)动态运行时装载。为提高内存利用率,装入内存的程 序可换出到磁盘上,适当时候再换入到内存中,对换前后 程序在内存中的位置可能不同,即允许进程的内存映像在 不同时候处于不同位置,此时模块内使用的地址必为相对 地址。
CH4 存储管理
第2段 …
…
段表
作业名 段表始址 表段长度
A XXX XX
B
XXX
XX
…
…
…
作业表
分段式存储管理的基本原理(3)
段控制寄存器
段表始址 段表长度
越界?
段号s 位移d
段长 基址
段表
物理地址
4.4.3段的共享
• 多对基址/限长寄存器
• 段的共享,是通过不同作业段表 中的项指向同一个段基址来实现。
• 几道作业共享的例行程序就可放 在一个段中,只要让各道作业的 共享部分有相同的基址/限长值。
可变分区地址转换与存储保护
限长寄存器 基址寄存器
限长
基址
操作系统区
空闲分区1
CPU
逻辑地址
< 限长
用户作业1 绝对地址 空闲分区2
越界中断
多对基址/限长寄存器
• 允许一个进程占用两个或多个分区。 规定某对基址/限长寄存器的区域是 共享的,用来存放共享的程序和常 数,对共享区域的信息只能读出不 能写入。
低存储空间的利用率; •计算机的外围设备利用率不高。
动态重定位单连续存储管理
定位寄存器 界限地址
操作系统区 用户区
CPU 逻辑地址
绝对地址
4.2.2 固定分区存储管理
• 分区存储管理的基本思想:
给进入主存的用户进程划分一块连 续存储区域,把进程装入该连续存 储区域,使各进程能并发执行,这是 能满足多道程序设计需要的最简单 的存储管理技术。
SUN SPARC计算机三级分页 结构
上下文号
索引1(8) 索引2(6)
索引3(6)
偏移(12)
上下文表
0
ch04-存储器与存储管理
主要性能指标
容量(b,B的区别 的区别) 容量 的区别 读写周期 从地址有效,到数据稳定的时间,加恢复时间。 从地址有效,到数据稳定的时间,加恢复时间。 存取速度必须尽可能接近CPU的要求,目前的趋势, 的要求, 存取速度必须尽可能接近 的要求 目前的趋势, CPU速度始终高于存储器。 速度始终高于存储器。 速度始终高于存储器 先进微处理器中设置Cache(高速缓冲存储器 高速缓冲存储器) 先进微处理器中设置 高速缓冲存储器 功耗 移动设备对功耗十分敏感。存储器功耗是设备功耗的一 移动设备对功耗十分敏感。 部分。 部分。 存取速度有关,速度高,功耗越大。 存取速度有关,速度高,功耗越大。 低电压器件(3.3V和1.8V)。 低电压器件 和 。 高电平与低电平区分度变小,工业环境下需要抗干扰。 高电平与低电平区分度变小,工业环境下需要抗干扰。 其它(可靠性 工作寿命) 可靠性, 其它 可靠性,工作寿命
第4章 存储器与存储管理
信息存储介质(Media) 信息存储介质
信息是指程序代码、待处理的各种数据、文字、 信息是指程序代码、待处理的各种数据、文字、图 像、…的编码 的编码
与计算机技术匹配的存储器件: 与计算机技术匹配的存储器件:
半导体、磁记录、光盘 半导体、磁记录、
内存: 内存 CPU能通过总线直接访问的存储体 能通过总线直接访问的存储体
内存单元的编址和内容
内存包含有很多存储单元(每个内存单元包含 内存包含有很多存储单元 每个内存单元包含8bit),为区 每个内存单元包含 , 分不同的内存单元,计算机对每个内存单元进行编号, 分不同的内存单元,计算机对每个内存单元进行编号, 内存单元的编号就称为内存单元的地址。 内存单元的编号就称为内存单元的地址。
内存通过地址线、数据线和控制线 内存通过地址线、数据线和控制线CPU连接 连接
操作系统os04存储管理课件
4.7 请求分页存储管理方式
4.7.1 请求分页中的硬件支持 1.页表机制 ➢ 状态位P:用于指示该页是否已调入内存。
• 供程序访问时参考。 ➢ 访问字段A:供选择换出页面时参考。 • 用于记录本页在一段时间内被访问的次数,或记录本
页最近已有多长时间未被访问。
页号
物理块号
状态位 P 访问字段 A
操作系统os04存储管理
2) 按比例分配算法
➢ 根据进程的大小按比例分配物理块的算法。
3) 考虑优先权的分配算法
➢ 把内存中可供分配的所有物理块分成两部分:
• 一部分按比例地分配给各进程;
• 另一部分则根据各进程的优先权,适当地增加其相应
份额后,分配给各进程。
操作系统os04存储管理
10
4.7.3 调页策略
➢ 预调页策略 ➢ 可采用一种以预测为基础的预调页策略
• 若将n位寄存器的数看做是一整数,那么,具有最小数值 的寄存器所对应的页面,就是最近最久未使用的页面。
R7 R6 R5 R4 R3 R2 R1 R0 0 10 0 0 0 0 0 0 0
1
0 操0作系统os004存储管0理 0
0
0
0 17
LRU算法实现:栈
47071012126
2126 最
新
1011212 被
23 21 524 5 32 52
22
22
4
2
3
33
3
3
最
15
5
5
新 LRU 发生了4次页面置换,缺页次数=7;缺页率=7/12
被
访 23 21 5 2 4 532 5 2
问 的
2 3 2 1 5 2 45 3 2 5
4.7.1 请求分页中的硬件支持 1.页表机制 ➢ 状态位P:用于指示该页是否已调入内存。
• 供程序访问时参考。 ➢ 访问字段A:供选择换出页面时参考。 • 用于记录本页在一段时间内被访问的次数,或记录本
页最近已有多长时间未被访问。
页号
物理块号
状态位 P 访问字段 A
操作系统os04存储管理
2) 按比例分配算法
➢ 根据进程的大小按比例分配物理块的算法。
3) 考虑优先权的分配算法
➢ 把内存中可供分配的所有物理块分成两部分:
• 一部分按比例地分配给各进程;
• 另一部分则根据各进程的优先权,适当地增加其相应
份额后,分配给各进程。
操作系统os04存储管理
10
4.7.3 调页策略
➢ 预调页策略 ➢ 可采用一种以预测为基础的预调页策略
• 若将n位寄存器的数看做是一整数,那么,具有最小数值 的寄存器所对应的页面,就是最近最久未使用的页面。
R7 R6 R5 R4 R3 R2 R1 R0 0 10 0 0 0 0 0 0 0
1
0 操0作系统os004存储管0理 0
0
0
0 17
LRU算法实现:栈
47071012126
2126 最
新
1011212 被
23 21 524 5 32 52
22
22
4
2
3
33
3
3
最
15
5
5
新 LRU 发生了4次页面置换,缺页次数=7;缺页率=7/12
被
访 23 21 5 2 4 532 5 2
问 的
2 3 2 1 5 2 45 3 2 5
第4章存储管理ppt课件计算机操作系统第三版
第4章 存储管理
4.2.1 单一连续分区存储管理 单一连续分区存储管理把整个内存空间的最低端
和最高端作为操作系统区,中间作为用户程序区。在 DOS操作系统中就采用了这种方法,如图4.7所示。
第4章 存储管理
0xFFF… 操作系统
0xFFF… ROM中 的 设 备
驱动程序
分配给用户 作业的空间
用户程序
动态地址再定位的优点是:程序在执行期间可以换 入和换出内存,这样可以缓解内存紧张的矛盾;可以把 内存中的碎片集中起来,以充分利用空间;不必给程序 分配连续的内存空间,可以较好地利用较小的内存块; 若干用户可以共享同一程序。
动态地址再定位的缺点:需要附加的硬件支持, 而且实现存储管理的软件算法比较复杂。
未用 0
用户程序
位 于 RAM中 的 操作系统 0
图4.7 单一连续分区存储管理的分配方式
第4章 存储管理
这种存储分配思想将内存分为两个区域:系统区 和用户区。应用程序装入到用户区,可使用用户区全 部空间。
单一连续分区的优点是:简单,适用于单用户、 单任务的操作系统(比如CP/M和DOS操作系统),不需 要复杂的硬件支持。
静态重定位示意图
0
0
100 LOAD 1,500
5 000
500 12 345
5 100LOAD 1,5 500
700 程 序 A的 地 址 空 间
5 500
12 345
5 700
程 序 A的 存 储 空 间
第4章 存储管理
静态地址再定位的优点是:无需硬件地址变化机 构支持,容易实现;无需硬件支持,它只要求程序本 身是可再定位的;它只对那些要修改的地址部分做出 某种标识,再由专门设计的程序来完成。在早期的操 作系统中大多数都采用这种方法。
第4章存储管理PPT课件
装入方式汇总
• 绝对装入方式 • 可重定位装入方式 • 动态运行时装入方式
简单分析比较 ——
4.1.2 程序的链接
源程序经过编译后,可能会得到一组目标模块,各个模块都有 自己的独立空间,从执行的角度看这些模块又是一个整体,各 个模块所涉及的地址最终都要合并为统一的地址。
链接分类
静态链接 动态链接
4.1 程序的装入和链接的有关概念
用高级、汇编语言上机步骤:编译、链接、装入。
编辑:得到如test.cpp ,a.asm等源文件
编译:从每个源文件得到对应的目标文件(PC机系统后缀为OBJ 的文件)
链接:将若干有关目标文件(在VC++环境中为一个workspace中 的文件)及有关系统支撑的库目标文件进行链接,得到相应的可 执行文件(PC机系统后缀为EXE的文件或动态连接文件DLL)
4.2.2 固定分区分配
1、把内存划分为若干个固定的连续分区。 • 分区大小相等:只适合于多个相同程序的并发执行(处理 多个类型相同的对象)。 • 分区大小不等:多个小分区、适量的中等分区、少量的大 分区。根据程序的大小,分配当前空闲的、适当大小的分区。
分配策略: •当作业到达时,选择适合作业要求的最小空闲区分给作业,若 该分区不空,让其在该分区队列中等待。 • 为了充分利用存储器,系统只维持一个等待存贮器的队列。 任何时候,只要有一个分区变为空闲,队列中的一个作业就可 装入运行。
第4章_存储管理
所以,即使是现代的计算机系统,存储容量极大,速度 也飞快,内存管理的重要性丝毫没有削弱。
对于一个单用户、单任务的操作系统的实现相对非常简单, 支撑这种系统甚至不需要任何存储保护的硬件。在最严重的情 况下即使内存崩溃也不会引起严重后果。
《操作系统》 4存储管理课件
.
.
. . .
(3) 动态重定位方式 若将地址定位的时间推迟到程序执行时进行,那么称其为地址的“动 态重定位”方式。 对程序实行动态重定位需要硬件支持:一个地址转换机构。它由地址 转换线路和一个“定位寄存器”(也称“基址寄存器”)组成。这时,用户程序不做任 何修改地装入到分配给它的内存空间中。当调度到程序运行时,就把它所在物理空间的 起始地址加载到定位寄存器中。CPU每执行一条指令,就把指令中的相对地址与定位寄 存器中的值相“加”,得到绝对地址。然后按这绝对地址去执行指令,访问所需要的存 内存 储位置。 (4) 静态重定位和动态重定位的比较 定位寄存器 0 用户程序A的 操作系统 静态重定位在程序运行之前完成地 22KB 20KB 相对地址空间 址转换;动态重定位则是将地址转换的 22528 0 22KB 时刻推迟到指令执行时进行。 100 xxxxxx 22KB+100 xxxxxx 22628 静态重定位由软件完成地址转换; 1KB 动态重定位由硬件地址转换机构完成。 23KB 静态重定位在装入时一次性集中 100 2KB 把程序指令中所有地址全部加以重定 24KB 位;动态重定位则是每执行一条指令 3000 call 100 22KB+3000 call 100 时,才其地址加以重定位。 3KB 25KB 静态重定位时原来的指令地址被修 (a) 改了;实行动态重定位,不对指令本身做修改。 (b)
.
1. 链接的含义
.
.
2. 静态链接和动态链接
接编辑程序将一个个程序段的相对地址空间链接成为一个大的、统一的相对地址空间。 由于这样的工作是在程序运行之前,因此称为是“静态链接”。 在程序执行过程中,有些程序段不一定会用到。比如,考虑到程序执行过程中可能 出现错误,于是编写了有关出错处理的程序段。如果程序执行中没有出错,那么静态链 接时为链接出错处理程序段所付出的花销就白费了。 可把对程序段的链接编辑工作推迟到程序执行时进行:遇到外部引用时,才对所涉 及的程序段进行链接编辑工作,才将这段程序纳入到统一的地址空间中。由于这样的链 接编辑工作是在程序运行时根据需要进行的,因此称为“动态链接”。 动态链接的实现要复杂许多,它需要得到软、硬件的支持。这将在下一章请求段式 存储管理中介绍。
ch4 存储管理
不做地址映射的工作,这样节省了CPU的时间 。 重定位寄存器的内容由操作系统用特权指令来设置,比较
(bǐjiào)灵活。 实现动态地址映射必须有硬件的支持,并有一定的执行时间
延迟。现代计算机系统中都采用动态地址映射技术。
精品文档
2. 地址 重定位 (dìzhǐ)
精品文档
2. 地址 重定位 (dìzhǐ)
MBT在系统分区占用一个连续的内存空间
大小 8K 8K 16K 16K 32K 128K
位置 300K 308K 316K 332K 348K 380K
精品文档
状态 正使用 未使用 正使用 正使用 未使用 正使用
4.2.1 固定(gùdìng)分区存储管理
地址(dìzhǐ)转换和存储保护
下限寄存器
代码和数据共享
地址空间访问权限(读、写、执行)
存储器扩充: 解决用户对内存容量要求与内存实际容量之间的矛盾 ,使运行的程序不受主存大小(dàxiǎo)的限制。 由应用程序控制:覆盖; 由OS控制:交换(整个进程空间),虚拟存储的请求调入和
预调入(部分进程空间)
精品文档
4.1 存储器工作 原理 (gōngzuò)
精品文档
Operating System
8M 8M
8M 8M
Operating System 8M 2M 4M 6M
8M
8M
8M
12 M
固定(gùdìng)分区(大小相同)
精品文档
固定分区(fēn qū)(多种大小)
4.2.1 固定(gùdìng)分区存储管理
3、存储分块表(MBT)
当分区大小不等时,系统需要对每个分区的信息 进行记录,以便管理。
精品文档
3. 存储保护
(bǐjiào)灵活。 实现动态地址映射必须有硬件的支持,并有一定的执行时间
延迟。现代计算机系统中都采用动态地址映射技术。
精品文档
2. 地址 重定位 (dìzhǐ)
精品文档
2. 地址 重定位 (dìzhǐ)
MBT在系统分区占用一个连续的内存空间
大小 8K 8K 16K 16K 32K 128K
位置 300K 308K 316K 332K 348K 380K
精品文档
状态 正使用 未使用 正使用 正使用 未使用 正使用
4.2.1 固定(gùdìng)分区存储管理
地址(dìzhǐ)转换和存储保护
下限寄存器
代码和数据共享
地址空间访问权限(读、写、执行)
存储器扩充: 解决用户对内存容量要求与内存实际容量之间的矛盾 ,使运行的程序不受主存大小(dàxiǎo)的限制。 由应用程序控制:覆盖; 由OS控制:交换(整个进程空间),虚拟存储的请求调入和
预调入(部分进程空间)
精品文档
4.1 存储器工作 原理 (gōngzuò)
精品文档
Operating System
8M 8M
8M 8M
Operating System 8M 2M 4M 6M
8M
8M
8M
12 M
固定(gùdìng)分区(大小相同)
精品文档
固定分区(fēn qū)(多种大小)
4.2.1 固定(gùdìng)分区存储管理
3、存储分块表(MBT)
当分区大小不等时,系统需要对每个分区的信息 进行记录,以便管理。
精品文档
3. 存储保护
《操作系统》第4章 存储管理1
2
4.4.1 存储器的层次
三级存储器结构 高速缓存(cache)—内存(primary storage)—外存 (secondary storage)
3
4.1.2 存储管理的功能
1.内存分配和回收 内存的利用率与内存分配的技术、方式和策略有直接关 系。 2.内存保护 内存保护就是确保多个进程都在各自分配到内存区域内 操作,互不干扰,防止一个进程破坏其他进程的信息。 3.内存扩充 内存“扩充”包含了存储器利用的提高和扩充两方面的 内容。为用户提供比内存物理空间大得多的地址空间。 比较典型的内存扩充是虚拟存储器。 4.地址映射 地址映射就是将进程的逻辑地址变换为内存中的物理地 址。我们需要实现从逻辑地址到物理地址的变换,即实 现从虚地址到实地址的变换。这种变换就是重定位。
22
4.3 分页存储管理方式
分页存储管理允许进程的存储空间是离散 的,把进程逻辑地址空间与实际存储空间 分离,增加存储管理的灵活性。将一个进 程分散存储到许多不连续的空间,就可以 避免内存碎片。根据分配时所采用的基本 单位的不同,可将离散分配方式分为以下 三种:分页存储管理、分段存储管理和段 页式存储管理,其中段页式存储管理是前 两种管理方法结合的产物。
5
4.1.4 重定位
为使程序正确执行。一个程 序装入内存,要进行逻辑地 址到物理地址的重定位,实 现从逻辑地址到物理地址的 变换,重定位可分为静态重 定位和动态重定位。 ①静态重定位 进程装入内存时,由装入程 序对进程中的指令和数据的 地址进行修改,将程序中的 逻辑地址变换成物理地址。 即物理地址=基址+逻辑地 址。
4
几个重要的概念
4.4.1 存储器的层次
三级存储器结构 高速缓存(cache)—内存(primary storage)—外存 (secondary storage)
3
4.1.2 存储管理的功能
1.内存分配和回收 内存的利用率与内存分配的技术、方式和策略有直接关 系。 2.内存保护 内存保护就是确保多个进程都在各自分配到内存区域内 操作,互不干扰,防止一个进程破坏其他进程的信息。 3.内存扩充 内存“扩充”包含了存储器利用的提高和扩充两方面的 内容。为用户提供比内存物理空间大得多的地址空间。 比较典型的内存扩充是虚拟存储器。 4.地址映射 地址映射就是将进程的逻辑地址变换为内存中的物理地 址。我们需要实现从逻辑地址到物理地址的变换,即实 现从虚地址到实地址的变换。这种变换就是重定位。
22
4.3 分页存储管理方式
分页存储管理允许进程的存储空间是离散 的,把进程逻辑地址空间与实际存储空间 分离,增加存储管理的灵活性。将一个进 程分散存储到许多不连续的空间,就可以 避免内存碎片。根据分配时所采用的基本 单位的不同,可将离散分配方式分为以下 三种:分页存储管理、分段存储管理和段 页式存储管理,其中段页式存储管理是前 两种管理方法结合的产物。
5
4.1.4 重定位
为使程序正确执行。一个程 序装入内存,要进行逻辑地 址到物理地址的重定位,实 现从逻辑地址到物理地址的 变换,重定位可分为静态重 定位和动态重定位。 ①静态重定位 进程装入内存时,由装入程 序对进程中的指令和数据的 地址进行修改,将程序中的 逻辑地址变换成物理地址。 即物理地址=基址+逻辑地 址。
4
几个重要的概念
操作系统原理-第4章-存储管理-段式存储管理PPT课件
2. 请求分段系统 请求分段系统是在分段系统的基础上,增加了请求调 段和分段置换功能所形成的段式虚拟存储系统。
1)需要硬件支持:
① 请求分段的段表机制:用于请求分段的段表数据结构;
② 缺段中断机构:产生缺段中断,以请求OS将所缺段调入 内存;
③ 地址变换机构:实现段逻辑地址到物理地址的变换
2)实现请求分段的软件:在硬件的支持下,还需实现请求 调段功能的软件和实现分段置换功能的软件。
2
15K
120K
3
10K
150K
段表示意图
2021
7
段表的存储和隶属关系:
进程拥有一个段表;并在进程PCB 记录段表的始址和段表长度;
目的:实现段的地址映射。
2021
8
作业 空间 (MAIN)= 0 0
30K
(X)= 1
0
20K (D)= 2
0 160 80 1 40 380
2021
…
80 editor
240 data 1
280 380 data 2 420
17
共享节省的内存空间分析
非共享时,每一进程需要分配160+40=200KB,而40个 进程需要200*40=8000KB;
分页存储管理方式共享Editor时,40个进程需要内存 空间为:40*40+160=1760KB;每个进程的页表长度为 50;
① 请求分页的页表机制:用于请求分页的数据结构;
② 缺页中断机构:产生缺页中断,以请求OS将所缺的页调
入内存;
③ 地址变换机构:实现逻辑地址到物理地址的变换(类似
分页系统)
2)实现请求分页的软件:在硬件的支持下,还需实现请求
osch4存储器管理
(6) 虚拟存储管理
掌握各种存储管理方案的内存分配回收、数据结 构、地址转换、存储保护、主要技术、优缺点。
23
4.3 连续分配方式
4.3.1 单一连续分配
内存分为两个区域:系统区,用户区。 应用程序装入到用户区,可使用用户区 全部空间。
最简单,适用于单用户、单任务的OS。 优点:易于管理。 缺点:对要求内存空间少的程序,造成
优点:没有内碎片。
缺点:有外碎片;如果大小不是任意的,也可 能出现内碎片。
43
2. 动态重定位的实现
0 100
LOAD1,2500
2500 365
相对地址 2500
重定位寄存器 10000
10000 10100 LOAD1,2500
+
12500 365
5000
作业J
15000
处理机一侧 存储器一侧
0 模块 A
JSR“ L” L- 1 Return;
L 模块 B
JSR “ L+ M” L+ M- 1 Return;
L+ M 模块 C
L+ M+ N- 1 Return;
(b) 装入模块
20
2.装入时动态链接
在目标模块装入到内存时边装入边链接。 装入时动态链接方式有以下优点: (1) 便于修改和更新。 (2) 便于实现对目标模块的共享
1) 分配内存
检索 完否?
N m .si z e > u .siz e ?
Y m .si z e - u .siz e ≤ siz e ?
N 从该 分区中 划出 u.siz e 大 小 的 分 区
Y
返回
N
继续 检索下 一个表项
Y
将该 分区从 链中移出
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ch4.10
固定分区存储管理
存储分配:系统维护一张主存分配表,里面记载了
内存的分区划分和使用状态。分配主存时总选择那 些分区占用标志为0且长度小于等于进程所需空间 的分区块。回收只要相应分区占用位置0即可。
分区号 1 2 3 4 5 6
起始地址 8K 16K 32K 48K 64K 96K
长度 8K 16K 16K 16K 32K 32K
目标程序地址叫逻辑地址(相对地址),被限制从0开 始编址,一个用户程序的逻辑地址集合称为该程序 的逻辑地址空间。
地址转换(重定位、地址映射):将程序的逻辑地址 转成物理地址的过程。
静态转换 动态转换
ch4.4
程序执行步骤(地址转换时机)
执行步骤:
源代码
编译 链接/装载
编译器
执行
中间代码 0… 1… 2… 3… …
对各进程/线程在内存中的数据要加以保护,如何实 施?
为了更好地利用CPU,就应该让更多的进程/线程并 发执行,如果内存不够用了怎么办?
虚拟存储器
ch4.2
源代码的伪中间代码
int demo(){ int a = 0;
while(a<2){ a++;
} return 0; }
代码执行时,这些行 号需要改变吗?
下限寄存器
B
操作系统区 用户分区1
越界!!
用户分区2
CPU
+
逻辑地址 绝对地址
< B+L2
用户分区3 用户分区4Fra bibliotek上限寄存器 B + L2
用户分区5 用户分区6
ch4.12
可变分区存储管理
存储分配:
系统维护两张表,一张记录尚未分配的内存状态,另 一张记录已分配的情况。
初始状态已分配表为空,未分配表仅有一条记录,整 个用户区就是空闲区。系统总是从空闲中选择一个足 够容纳进程的分区分配,并将分配情况记在已分配表 中,剩余的分区空间记录进未分配表。
50K
内存
1 2
0 50K 100K 180K 230K …
其它 目标模块
目标模块 链接器
装载模块 装载器
内存可执行二进制
ch4.5
静态地址转换
静态转换:当用户程序被装入内存时,一次性实现 逻辑地址到物理地址的转换,以后不再转换。一般 在装入内存时由软件完成。若编译时完成则需要程 序员事先知道要装载的地址。
最坏适应
查找整个分区表,分配最大的足够大的分区 总是产生最大剩余分区,它可能比最优适应产生的剩
第四章 存储管理
4.1 概述 4.2 连续存储管理 4.3 分页式存储管理 4.4 分段式存储管理 4.5 虚拟存储
ch4.1
学习目标
虚拟设备
多个进程和线程可以共享一个CPU 多个进程和线程应该可以共享一个存储器 多个进程和线程还可以共享一个IO设备(第5章)
如何共享一个存储器?
各进程/线程自己的数据有自己的执行区域,程序变 成进程时是如何映射到那个区域去的?
回收:将已分配表的标志改为“空”,再将其加入 未分配表中。
ch4.13
某一时刻的分配状态
0K
P1
15K
38K
P2
48K
68K
P3
80K
110K
P4
120K
始址 1155KK 48K 80K
空闲区表
长度 5233KK 20K 30K
标志
未未分分配配 未分配
未分配
始址 0K 38K 68K 110K
已分配区表
长度 15K 10K 12K 10K
标志 P1 P2 P3 P4
ch4.14
可变分区分配算法
首次适应
分配第一个足够大的分区,可以从头开始查找,也可 以从上次分配结束的地点开始查找
最优适应
查找整个分区表,分配最小的足够大的分区 总是产生最小剩余分区,不浪费一个更大的空间,但
会导致剩余分区太小难被再利用
占用标志 0 P1 0 0 P2 0
0k
OS (8K)
8k
分区1 (8K)
16k 分区2 (16K)
32k 分区3 (16K)
48k 分区4 (16K)
64k 分区5 (32K)
96k 分区6 (32K)
ch4.11
固定分区的地址转换和存储保护
静态转换:装入时检查绝对地址是否落在分区内 动态转换:执行时检查,如下图所示。
两个问题
内存中的进程如何交互? 内核模式和用户模式如何切换?
ch4.9
连续存储管理
所谓连续,是指进程在主存里占用一块连续的空间。 如果系统事先把内存用户区划分为若干分区,分区
大小可以相等,也可以不等,一个进程占据一个分 区。我们称其为固定分区存储管理。 若内存不预先划分好,而是等进程装入时,根据进 程的需求和内存空间的使用情况来决定是否分配。 我们称其为可变分区存储管理。
Operating System
进程
0xFFFFFFFF Limit=0x10000 Base=0x20000
0x00000000
Base
逻辑地址
CPU
+
DRAM
Limit
<?
出错!
ch4.8
看管好用户进程
策略: 将用户进程关在一个内存区域
它不能自己切换到内核模式 它不可以直接改变基址和限长寄存器的值 它不可以随意更改中断控制 它不可以访问其它进程的内存空间数据
0 demo: 1 int a = 0 2 loop: 3 temp = a – 2 4 if (temp>0) goto do7ne 5 a++ 6 goto lo2op
7 done: 8 return 0
ch4.3
存储地址及地址转换
存储器使用的地址叫物理地址(绝对地址),其空间 是由存储器地址总线扫描出来的空间,其大小取决 于实际安装的主存容量。
100 goto 200
200
a++
1100 goto 200
BR
+
1000
1200 a++
300
1300
ch4.7
存储保护
使在内存中的各道进程,只能访问它自己的区域, 避免进程内存空间重叠,特别是不能访问OS的内存 空间。
通常需要两个硬件支持(不需要转换地址):
基址寄存器(Base Register):存放装载的起始地址 限长寄存器(Limit Register):存放的最大逻辑地址
逻辑地址空间 0
物理地址空间 1000
100 goto 200
1100 goto 1200
200
a++
1200 a++
300
1300
ch4.6
动态地址转换
动态转换:在程序执行过程中要访问数据时再进行 地址变换,需要额外的硬件来记录程序装载的内存 基址。
逻辑地址空间 0
物理地址空间 1000
CPU goto 200
固定分区存储管理
存储分配:系统维护一张主存分配表,里面记载了
内存的分区划分和使用状态。分配主存时总选择那 些分区占用标志为0且长度小于等于进程所需空间 的分区块。回收只要相应分区占用位置0即可。
分区号 1 2 3 4 5 6
起始地址 8K 16K 32K 48K 64K 96K
长度 8K 16K 16K 16K 32K 32K
目标程序地址叫逻辑地址(相对地址),被限制从0开 始编址,一个用户程序的逻辑地址集合称为该程序 的逻辑地址空间。
地址转换(重定位、地址映射):将程序的逻辑地址 转成物理地址的过程。
静态转换 动态转换
ch4.4
程序执行步骤(地址转换时机)
执行步骤:
源代码
编译 链接/装载
编译器
执行
中间代码 0… 1… 2… 3… …
对各进程/线程在内存中的数据要加以保护,如何实 施?
为了更好地利用CPU,就应该让更多的进程/线程并 发执行,如果内存不够用了怎么办?
虚拟存储器
ch4.2
源代码的伪中间代码
int demo(){ int a = 0;
while(a<2){ a++;
} return 0; }
代码执行时,这些行 号需要改变吗?
下限寄存器
B
操作系统区 用户分区1
越界!!
用户分区2
CPU
+
逻辑地址 绝对地址
< B+L2
用户分区3 用户分区4Fra bibliotek上限寄存器 B + L2
用户分区5 用户分区6
ch4.12
可变分区存储管理
存储分配:
系统维护两张表,一张记录尚未分配的内存状态,另 一张记录已分配的情况。
初始状态已分配表为空,未分配表仅有一条记录,整 个用户区就是空闲区。系统总是从空闲中选择一个足 够容纳进程的分区分配,并将分配情况记在已分配表 中,剩余的分区空间记录进未分配表。
50K
内存
1 2
0 50K 100K 180K 230K …
其它 目标模块
目标模块 链接器
装载模块 装载器
内存可执行二进制
ch4.5
静态地址转换
静态转换:当用户程序被装入内存时,一次性实现 逻辑地址到物理地址的转换,以后不再转换。一般 在装入内存时由软件完成。若编译时完成则需要程 序员事先知道要装载的地址。
最坏适应
查找整个分区表,分配最大的足够大的分区 总是产生最大剩余分区,它可能比最优适应产生的剩
第四章 存储管理
4.1 概述 4.2 连续存储管理 4.3 分页式存储管理 4.4 分段式存储管理 4.5 虚拟存储
ch4.1
学习目标
虚拟设备
多个进程和线程可以共享一个CPU 多个进程和线程应该可以共享一个存储器 多个进程和线程还可以共享一个IO设备(第5章)
如何共享一个存储器?
各进程/线程自己的数据有自己的执行区域,程序变 成进程时是如何映射到那个区域去的?
回收:将已分配表的标志改为“空”,再将其加入 未分配表中。
ch4.13
某一时刻的分配状态
0K
P1
15K
38K
P2
48K
68K
P3
80K
110K
P4
120K
始址 1155KK 48K 80K
空闲区表
长度 5233KK 20K 30K
标志
未未分分配配 未分配
未分配
始址 0K 38K 68K 110K
已分配区表
长度 15K 10K 12K 10K
标志 P1 P2 P3 P4
ch4.14
可变分区分配算法
首次适应
分配第一个足够大的分区,可以从头开始查找,也可 以从上次分配结束的地点开始查找
最优适应
查找整个分区表,分配最小的足够大的分区 总是产生最小剩余分区,不浪费一个更大的空间,但
会导致剩余分区太小难被再利用
占用标志 0 P1 0 0 P2 0
0k
OS (8K)
8k
分区1 (8K)
16k 分区2 (16K)
32k 分区3 (16K)
48k 分区4 (16K)
64k 分区5 (32K)
96k 分区6 (32K)
ch4.11
固定分区的地址转换和存储保护
静态转换:装入时检查绝对地址是否落在分区内 动态转换:执行时检查,如下图所示。
两个问题
内存中的进程如何交互? 内核模式和用户模式如何切换?
ch4.9
连续存储管理
所谓连续,是指进程在主存里占用一块连续的空间。 如果系统事先把内存用户区划分为若干分区,分区
大小可以相等,也可以不等,一个进程占据一个分 区。我们称其为固定分区存储管理。 若内存不预先划分好,而是等进程装入时,根据进 程的需求和内存空间的使用情况来决定是否分配。 我们称其为可变分区存储管理。
Operating System
进程
0xFFFFFFFF Limit=0x10000 Base=0x20000
0x00000000
Base
逻辑地址
CPU
+
DRAM
Limit
<?
出错!
ch4.8
看管好用户进程
策略: 将用户进程关在一个内存区域
它不能自己切换到内核模式 它不可以直接改变基址和限长寄存器的值 它不可以随意更改中断控制 它不可以访问其它进程的内存空间数据
0 demo: 1 int a = 0 2 loop: 3 temp = a – 2 4 if (temp>0) goto do7ne 5 a++ 6 goto lo2op
7 done: 8 return 0
ch4.3
存储地址及地址转换
存储器使用的地址叫物理地址(绝对地址),其空间 是由存储器地址总线扫描出来的空间,其大小取决 于实际安装的主存容量。
100 goto 200
200
a++
1100 goto 200
BR
+
1000
1200 a++
300
1300
ch4.7
存储保护
使在内存中的各道进程,只能访问它自己的区域, 避免进程内存空间重叠,特别是不能访问OS的内存 空间。
通常需要两个硬件支持(不需要转换地址):
基址寄存器(Base Register):存放装载的起始地址 限长寄存器(Limit Register):存放的最大逻辑地址
逻辑地址空间 0
物理地址空间 1000
100 goto 200
1100 goto 1200
200
a++
1200 a++
300
1300
ch4.6
动态地址转换
动态转换:在程序执行过程中要访问数据时再进行 地址变换,需要额外的硬件来记录程序装载的内存 基址。
逻辑地址空间 0
物理地址空间 1000
CPU goto 200