段式存储管理

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

段页式存储管理中的逻辑地址
0 第0页 4KB 第1页 段MAIN 8KB 第2页 12KB 14KB 16KB 第3页 段号s 段内页号p 段内位移d 页内位移w 第2页 段SUBP 第1页 第0页 段DATA 第1页 第0页
用户逻辑地址空间中的地址结构将由上图所示的三个部分组成: 段号s,段内页号p,页内位移w。 (其中,段内页号p和页内位移w是由段内位移d分解而成。) 如: (0,1,100)
内容回顾:将逻辑地址转换为物理地址

从逻辑地址算出页号和页内偏移量 从页表中找出页号对应块号 物理地址: 块号×页大小+偏移量
内容回顾: 逻辑地址:由页号和页内偏移量两部分组 成。
逻辑地址 0 :第0页,页内偏移量0 (5x4)+0=20物理地址 逻辑地址 10 :第2页,页内偏移量2 (1x4)+2=6 物理地址 逻辑地址 13 :第3页,页内偏移量1 (2x4)+1=9 物理地址
进程B的数据段
进程A的程序段 进程B的堆栈段
0 25286 43062 1 2 3
进程B的程序段
页式存储管理和段式存储管理的主要区别



页是信息的物理单位,分页是为实现离散分配方式,以消 减内存的零头,提高内存的利用率;或者说,分页仅仅是 由于系统管理的需要,而不是用户的需要。 段是信息的逻辑单位,它含有一组其意义相对完整的信息。 分段的目的是为了能更好地满足用户的需要。 页的大小固定且由系统确定,把逻辑地址划分为页号和页 内地址两部分,是由机器硬件实现的,因而一个系统只能 有一种大小的页面。 段的长度却不固定,取决于用户所编写的程序,通常由 编辑程序在对源程序进行编辑时,根据信息的性质来划分。 分页的作业地址空间是唯一的,即单一的线性空间,程序 员只须利用一个记忆符,即可表示一个地址。 分段的作业地址空间是二维的,程序员在标识一个地址时, 既需给出段名,又需给出段内地址。
段号 段内位移量

用户通过数对:[段名,段内位移量]指定某段指令 的地址。于是,用户的逻辑地址空间是二维的。
分段式存储管理中的内存分配


在段式存储管理方式中,以段为单位分配内存,每一 个段在内存中占据连续空间(内存随机分割,需要多 少分配多少),但各段之间可以不连续存放 系统中为每个作业建立一个段映射表,称为“段表”。
段表
段号 0 1 2 段首址 100K 50K 120K 段长度 10K 15K 25K
段表记录了段号,段的首(地)址和长度之 间的关系 每一个程序设置一个段表,放在内存
0
Main 50K Sub1 65K 100K Main Sub2 110K 120K 145K
10k 0 Sub1
段号 始址 0 100KB 1 50K 12KB 段表

用户作业逻辑地址空间的划分:

页号 0 1 2
物理块号 2 3 8
页号 0 1 2
物理块号 1 4 5
进程1页表
进程2页表
页表: 系统为每个进程建立一个页表, 页表给出逻辑页号和具体内存块号相应的关系。
内容回顾: 逻辑地址:由页号和页内偏移量两部分组成。
页大小:4 逻辑地址 0 :第0页,页内偏移量0 逻辑地址 10 :10=4*2+2 第2页,页内偏移量2 逻辑地址 13 : 13=4*3+1 第3页,页内偏移量1
绝对 地址

访问内存中的段表(从段表控制寄存器读取段表起始地址) 根据段表查找该段对应的页表(页表起始地址),访问内存中的页表 根据页表中的页号找到块号,结合页内位移w,求出对应的物理地址
虚拟存储管理

阅读课本P71-72 问题:

什么是虚拟存储器? 虚拟存储管理中,大作业能否在小内存中运行?
段式存储管理存储保护与共享

在段式存储管理中很容易实现段的共享,只需在作 业的段表中都增加一个表项,让该段的基址指向共 享段在内存中的起始地址即可。
进程A的逻辑地址空间 文本 段 0 编辑程序 段1 段2 程序段 数据段 进程A的段表 段号 段长 基址 43062 内 存 操作系统 进程A的数据段 文本编辑程序
实现虚拟存储器技术

请求页式存储管理 请求段式存储管理 请求段页式存储管理
请求页式存储存储管理

基本思想:阅读P72 问题:

与一般页式存储管理相同和不同之处
请求页式存储管理的基本思想

与分页式相同处 :

把内存划分成尺寸相同、位置固定的块。然后按照内存块的 大小,把作业的虚拟地址空间(即以前的相对地址空间)划 分成页。由于页的尺寸与块一样,因此虚拟地址空间中的一 页,可以装入到内存中的任何一块中。 作业全部进入辅存。 运行时,只装入要用的若干页,其他页仍在辅存。 运行过程中,虚拟地址被转换成数对:(页号,页内位移)。 由页号查页表,若该页在内存,运行就进行下去;若该页不 在内存,表明“缺页”,运行无法继续。这时,就根据页号把 该页从辅存调入内存。 所谓“请求分页式”,即是当运行中需要某页时,再把它从辅 存调入内存使用的意思
. . .
12345 数组[A]
子程序段[X]
0 F L 0
K
. . . CALL [A] 116 . . .
主程序段[M]
CALL [Y] [F]
. . .
S
子程序段[Y]
工作区段[B]
分段式存储管理的基本思想概念

分段存储管理中的逻辑地址空间


用户程序的划分:按程序自身的逻辑关系划分为若 干个程序段,例如主程序段(MAIN)、子程序段、 数据段、堆栈段等,每个程序段都有一个段名,且 有一个段号。段号从0开始,每一段也从0开始编址, 段内地址是连续的 逻辑地址

与分页式不同处:


请求页式存储管理示意图
段页式存储管理的地址转换过程及硬件实现
段表控制寄存器 段表起址 段表长度 越界中断 ≥ 相对地址 段号s 段内页号p 页内位移w 内存 操作系统
s
段表 段号 页表长度 页表起址 0 1 2 3
p
第0段的页表 0 1 2 第1段的页表 0 1 2 3 1段0页
w w
1段1页 段1 1段2页 1段3页
使用快表的硬件模式
页表控制寄存器 长度 起始地址 相对地址 页号 页内位移 命中 没有 命中 快表 绝对地址 块号 页内位移 内存储器 操作系统
页表
内容回顾:分页式存储管理的优缺点


优点: 没有外碎片,每个内碎片不超过页大小。 一个程序不必连续存放。 程序占用空间可动态增长。即随着程序运行而动态生成的数 据增多,地址空间可相应增长。 缺点: 作业虽然不占据连续的存储区,但每次仍要求一次全部进入 内存。因此,如果作业很大,其存储需求大于内存,那么还 是存在小内存不能运行大作业的问题。 存在内碎片:平均每一个作业要浪费半页大小的存储块。 不能实现真正意义上的共享 内存访问速度慢(取一次数据或指令至少要访问内存两次以上)
分段式存储管理

用户程序的二维结构

用户的程序结构不是一维的,多由主程序及一些子 程序、过程、函数或模块构成,还包括各种数据结 构,如堆栈、表格、变量等。即程序多由程序段和 数据段组成。
0 0
. . .
CALL [X] [E]
E P
. . .
. . . . . . . . . . . .
0 116 N
长度 10K 15KB 25K
15k 0 Sub2
2
25k 作业分段 地址空间
内存
分段式存储管理中的地址映射

为了实现从进程的逻辑地址到物理地址的变换功能, 在系统中设置了段表寄存器,用于存放段表在内存中 的开始地址和段表的长度。 分段地址转换过程如下:

根据段表寄存器找到该作业段表在内存中位置。 通过查询有效地址中的段号得到该段在主存中 的起始地址。 将该段的主存地址和有效地址中的位移量相加, 就得到所要访问的主存的物理地址。

课本P68
段式存储管理存储保护与共享



分段系统易于实现段的共享,即允许若干个进程 共享一个或多个段,而且对段的保护也十分简单 易行。 段式存储可以规定各段的存取权限,实现段的保 护。在段表表项中增加权限位:E代表可执行,不 可读写;R代表允许读,不允许写;W代表允许写, 而不允许读操作。 当用户违反了存取权限时,就会发生保护中断。
段页式存储管理
引入: 实行页式可以避免内存产生外部碎片,实行段式 可以避免内存产生内部碎片。这表明分页和分段 各有所长。若将分页和分段技术结合起来形成所 谓的“段页式存储管理”,就必定能够取长补短, 获得更好的存储管理效果。
段页式存储管理的基本思想



内存划分成大小相等的块 用户的作业地址空间按分段来管理(这与段式管理类同), 系统在内部将该空间中的每一段按内存块的尺寸划分成固 定大小的页(这与分页式管理类同)。 在这样的管理模式下,任何一个作业有一个段表,作业中 的每个段有一个页表。 段表:记录了每一段对应页表在内存中的始址和页表长度 页表:记录了逻辑页号与内存块号的对应关系(每一段有 一个,一个程序可能有多个页表)
百度文库

逻辑地址被分为两部分:段号S和段内位移d。 物理地址=段始址+d
段式存储管理的硬件实现及存储保护
段表控制寄存器 段表起址 段表长度 越界中断 ≥ 段号s 相对地址 段内位移d 越界中断 段表 段号 段长 0 1 2 3 段3 段0 基址 绝对地址 ≥ 内存 操作系统
d
段2
段1
例:段式存储管理中由逻辑地址求物理地址
操作系统 第16课 存储管理
今日内容

分段式存储管理 段页式存储管理 虚拟存储管理
内容回顾:分页式存储管理的基本思想

内存的划分:

把整个内存储器划分成大小相等的许多分区, 每个分区称为“块” 。比如把内存储器划分成n 个分区,编号为0,1,2,…,n-1。块是存储分配的 单位。 操作系统按照内存块的尺寸对用户地址空间进 行划分,每一个分区被称为“页”,编号从0开始。
比如进程A和B要对 文本编辑程序进行共 享,那么可把文本编 辑程序作为它们地址 空间中的段0。 若文本编辑程序存 放在内存43062起始的 连续分区里,那么在 所对应的各段表中, 段号为0的表项的基址 都是43062,从而可共 享该文本编辑程序。

0 25286 43062 1 2
进程B的逻辑地址空间 文本 段 0 编辑程序 段1 段2 段3 程序段 数据段 堆栈段 进程B的段表 段号 段长 基址
相关文档
最新文档