段式虚拟存储管理

合集下载

操作系统-存储管理(4)段页式虚拟存储

操作系统-存储管理(4)段页式虚拟存储

操作系统-存储管理(4)段页式虚拟存储物理地址:⼜称绝对地址,即程序执⾏所使⽤的地址空间(处理器执⾏指令时按照物理地址进⾏)逻辑地址:⼜称相对地址,即⽤户编程所使⽤的地址空间,从0开始编号,有两种形式:⼀维逻辑地址(地址)⼆维逻辑地址(段号:段内地址)主存储器空间的分配与去配:分配:进程装⼊主存时,存储管理软件进⾏具体的主存分配操作,并设置⼀个表格记录主存空间的分配情况去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占⽤的全部或者部分存储空间,调整主存分配表信息主存储器空间的共享:多个进程共享主存储器资源:多道程序设计技术使若⼲个程序同时进⼊主存储器,各⾃占⽤⼀定数量的存储空间,共同使⽤⼀个主存储器多个进程共享主存储器的某些区域:若⼲个协作进程有共同的主存程序块或者主存数据块多道程序设计需要复⽤主存:按照分区复⽤:主存划分为多个固定/可变尺⼨的分区,⼀个程序/程序段占⽤⼀个分区按照页架复⽤:主存划分成多个固定⼤⼩的页架,⼀个程序/程序段占⽤多个页架装载程序/加载器(loader)把可执⾏程序装⼊内存的⽅式有:绝对装载可重定位装载动态运⾏时装载地址转换:⼜称重定位,即把可执⾏程序逻辑地址转换成绝对地址,可分为:静态地址重定位:由装载程序实现装载代码模块的加载和地址转换(⽆需硬件⽀持),把它装⼊分配给进程的内存指定区域,其中所有指令代码和数据的逻辑地址在执⾏前⼀次全部修改为内存物理地址。

早期单任务单⽤户OS使⽤。

动态地址重地位:由装载程序实现装载代码模块的加载,把它装⼊进程的内存在指定区域,但对链接程序处理过的应⽤程序逻辑地址不做修改,程序内存起始地址被置⼊重定位寄存器(基址寄存器)。

程序执⾏过程中每当CPU访问程序和数据引⽤内存地址时,由硬件地址转换机构截取此逻辑地址并加上重定位寄存器的值。

运⾏时链接地址重定位存储保护:为避免主存中的多个进程相互⼲扰,必须对主存中的程序和数据进⾏保护。

页式、段式、段页式存储优缺点总结

页式、段式、段页式存储优缺点总结

页式、段式、段页式存储优缺点总结内存管理⽅式主要分为:页式管理、段式管理和段页式管理。

页式管理的基本原理是将各进程的虚拟空间划分为若⼲个长度相等的页。

把内存空间按页的⼤⼩划分为⽚或者页⾯,然后把页式虚拟地址与内存地址建⽴⼀⼀对应的页表,并⽤相应的硬件地址转换机构来解决离散地址变换问题。

页式管理采⽤请求调页和预调页技术来实现内外存存储器的统⼀管理。

优点:没有外碎⽚,每个内碎⽚不超过页的⼤⼩。

缺点:程序全部装⼊内存,要求有相应的硬件⽀持,如地址变换机构缺页中断的产⽣和选择淘汰页⾯等都要求有相应的硬件⽀持。

增加了机器成本和系统开销。

段式管理的基本思想是把程序按内容或过程函数关系分成段,每段有⾃⼰的名字。

⼀个⽤户作业或者进程所包含的段对应⼀个⼆维线性虚拟空间,也就是⼀个⼆维虚拟存储器。

段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存物理地址。

优点:可以分别编写和编译,可以针对不同类型的段采取不同的保护,可以按段为单位来进⾏共享,包括通过动态链接进⾏代码共享。

缺点:会产⽣碎⽚。

段页式管理,系统必须为每个作业或者进程建⽴⼀张段表以管理内存分配与释放、缺段处理等。

另外由于⼀个段⼜被划分为若⼲个页,每个段必须建⽴⼀张页表以把段中的虚页变换为内存中的实际页⾯。

显然与页式管理时相同,页表也要有相应的实现缺页中断处理和页⾯保护等功能的表项。

段页式管理是段式管理和页式管理相结合⽽成,具有两者的优点。

由于管理软件的增加,复杂性和开销也增加。

另外需要的硬件以及占⽤的内存也有所增加,使得执⾏速度下降。

————————————————————————————————————————————————⾸先看⼀下“基本的存储分配⽅式”种类:1. 离散分配⽅式的出现 由于连续分配⽅式会形成许多内存碎⽚,虽可通过“紧凑”功能将碎⽚合并,但会付出很⼤开销。

于是出现离散分配⽅式:将⼀个进程直接分散地装⼊到许多不相邻的内存分区中。

计算机中的段式虚拟存储器和段页式虚拟存储器

计算机中的段式虚拟存储器和段页式虚拟存储器

计算机中的段式虚拟存储器和段页式虚拟存储器段式虚拟存储器:段式虚拟存储器的基本思想是:按照程序的逻辑结构划分段,!主存以段为单位进⾏分配。

由于段是按照程序的⾃然边界划分的,因此每个段的长度各不相同,并且程序员通常还会把不同类型的数据划分到不同的段中。

与页式虚拟存储器类似,通过段表对每道程序进⾏管理,段表保存在主存中。

每个程序段在段表中有⼀个表项,主要包括以下内容:1:有效位,指明该段是否已经调⼊主存。

2:段起始地址:指明该段在实存中的⾸地址。

3:段长记录该段的实际长度,主要⽤于进⾏程序段的保护。

段表的起始地址由段表基址寄存器给出。

段式虚拟存储管理中虚实地址变换主要包括两步,从段表基址寄存器读出《段表的基地址》,将其与《虚拟地址》中的《段号》“相加+“即可得到程序段在《段表》中的地址。

其次,访问段表,得到《程序段》对应段的起始地址和段长和有效位。

如果有效位为“1”则表⽰程序段已经调⼊主存,这时将段起始地址与虚拟地址中的段内地址“相加”即可得到主存的物理地址。

!如果有效位为“0”则表⽰程序段不在主存中。

这时需要使⽤外部地址变换进⾏地址转换,并将对应段调⼊主存。

在段式虚存管理⽅式中,由于段的边界与程序的边界⼀致,程序的模块化好,便于程序的调度和保护,也有利于多道程序的共享。

但由于段的长度不⼀致,容易在主存空间留下碎⽚。

同时,由于段长通常不是2的整数次幂,因此地址变换需要较长的时间,需要更多的硬件⽀持。

《7》段页式虚拟存储器:段页式虚拟存储器的基本思想是将上⾯两种⽅式结合起来,以结合页式和段式两者的优点。

在段页式虚拟存储器中,!主存的物理空间被等分成页,!程序则先按逻辑结构分段,每段在分成与物理空间页同样⼤⼩的页⾯,程序以页为单位进⾏调⼊和调出操作,但以段为单位进⾏编程和保护与共享。

在段页式虚拟存储系统中,!通过⼀个段表和⼀组页表来进⾏管理。

段表中的每个表项对应⼀个段,每个表项主要包括《该段的页表起始地址,页表长度》。

计算机操作系统实验三存储器管理

计算机操作系统实验三存储器管理

计算机操作系统实验三存储器管理引言存储器管理是计算机操作系统中非常重要的一部分。

它负责管理计算机中的存储器资源,以便有效地分配和管理内存。

在操作系统的设计和实现中,存储器管理的性能和效率对整个系统的稳定性和性能有着重要的影响。

本文档将介绍计算机操作系统实验三中的存储器管理的实验内容及相关的知识点。

我们将从内存分区管理、页式存储管理和段式存储管理三个方面进行讨论。

内存分区管理内存分区管理是一种常见的存储器管理方法,旨在将物理内存分成若干个不同大小的区域,以便为不同的进程分配内存。

在实验三中,我们将学习和实现两种内存分区管理算法:首次适应算法和最佳适应算法。

首次适应算法是一种简单直观的算法,它从内存的起始位置开始查找第一个满足要求的空闲分区。

而最佳适应算法则是通过遍历整个内存空间,选择最合适的空闲分区来满足进程的内存需求。

通过实验,我们将学习如何实现这两种算法,并通过比较它们的性能和效果来深入理解内存分区管理的原理和实现。

页式存储管理页式存储管理是一种将物理内存分成固定大小的页框(page frame)和逻辑地址分成固定大小的页面(page)的管理方法。

在操作系统中,虚拟内存通过将进程的地址空间划分成大小相等的页面,并与物理内存中的页框相对应,实现了大容量的存储管理和地址空间共享。

在实验三中,我们将学习和实现页式存储管理的基本原理和算法。

我们将了解页表的结构和作用,以及如何通过页表将逻辑地址转换为物理地址。

此外,我们还将学习页面置换算法,用于处理内存不足时的页面置换问题。

段式存储管理段式存储管理是一种将逻辑地址分成不同大小的段并与物理内存中的段相对应的管理方法。

在操作系统的设计中,段式存储管理可以提供更灵活的地址空间管理和内存分配。

实验三将介绍段式存储管理的基本原理和实现方法。

我们将学习段表的结构和作用,以及如何通过段表将逻辑地址转换为物理地址。

同时,我们还将探讨段的分配和释放过程,并学习如何处理外部碎片的问题。

自考操作系统名词解释总结

自考操作系统名词解释总结

1、操作系统具有层次结构层次结构最大特点是整体问题局部化来优化系统,提高系统的正确性、高效性使系统可维护、可移植。

主要优点是有利于系统设计和调试;主要困难在于层次的划分和安排。

2、多道程序设计系统“多道程序设计系统” 简称“多道系统”,即多个作业可同时装入主存储器进行运行的系统。

在多道系统中一点必须的是系统须能进行程序浮动。

所谓程序浮动是指程序可以随机地从主存的一个区域移动到另一个区域,程序被移动后仍不影响它的执行。

多道系统的好处在于提高了处理器的利用率;充分利用外围设备资源;发挥了处理器与外围设备以及外围设备之间的并行工作能力。

可以有效地提高系统中资源的利用率,增加单位时间内的算题量,从而提高了吞吐率。

3、程序浮动若作业执行时,被改变的有效区域依然能正确执行,则称程序是可浮动的。

4、进程进程是一个程序在一个数据集上的一次执行。

由定义知进程关键组成是程序、数据集。

进程通过一个控制块来被系统所指挥,因此进程由程序、数据集和进程控制块三部分组成。

进程控制块是进程存在的唯一标志 .进程是要执行的,据这点可分将进程的状态分为等待态然后是就绪态最后是运行态。

进程的基本队列也就是就绪队列和等待队列,因为进程运行了,也就用不上排队了,也就没有运行队列了。

5、重定位重定位即把逻辑地址转换成绝对地址。

重定位的方式有“静态重定位”和“动态重定位”两种。

(1)静态重定位在装入一个作业时,把作业中的指令地址和数据地址全部转换成绝对地址。

这种转换工作是在作业开始前集中完成的,在作业执行过程中无需再进行地址转换。

所以称为“静态重定位”。

(2)动态重定位在装入一个作业时,不进行地址转换,而是直接把作业装到分配的主区域中。

在作业执行过程中,每当执行一条指令时都由硬件的地址转换机构转换成绝对地址。

这种方式的地址转换是在作业执行时动态完成的,所以称为动态重定位。

动态重定位由软件(操作系统)和硬件(地址转换机构)相互配合来实现。

动态重定位的系统支持“程序浮动”,而静态重定位则不能。

14存储管理3分段段页式管理

14存储管理3分段段页式管理

段号 状态 页表大小 页表始址 0 1 1 1 2 1 3 0 4 1 段表
页表 主存
图4-22 利用段表和页表实现地址映射
2.地址变换过程


在段页式系统中,为了便于实现地址变换,须配 置一个段表寄存器,其中存放段表始址和段表长TL。 进行地址变换时,首先利用段号S,将它与段表长TL进 行比较。若S<TL,表示未越界,于是利用段表始址和 段号来求出该段所对应的段表项在段表中的位置,从 中得到该段的页表始址,并利用逻辑地址中的段内页 号P来获得对应页的页表项位置,从中读出该页所在的 物理块号b,再利用块号b和页内地址来构成物理地址。 图4-23示出了段页式系统中的地址变换机构。
2.页表




列出了作业的逻辑地址与其在主存中的 物理地址间的对应关系。 一个页表中包含若干个表目,表目的自 然序号对应于用户程序中的页号,表目 中的块号是该页对应的物理块号。 页表的每一个表目除了包含指向页框的 指针外,还包括一个存取控制字段。 表目也称为页描述子。
分页管理中页与页框的对应 关系示意图
段表寄存器 段表始址 + 段表 0 1 2 3 页表长度 + 0 1 2 3 b 块号 b 块内地址 页表 段表长度 > 段超长 段号S 页号P 页内地址
页表始址
图4-23
段页式系统中的地址变换机构


在段页式系统中,为了获得一条指令或数据,须 三次访问内存。第一次访问是访问内存中的段表,从 中取得页表始址;第二次访问是访问内存中的页表, 从中取出该页所在的物理块号,并将该块号与页内地 址一起形成指令或数据的物理地址;第三次访问才是 真正从第二次访问所得的地址中,取出指令或数据。 显然,这使访问内存的次数增加了近两倍。为了 提高执行速度,在地址变换机构中增设一个高速缓冲 寄存器。每次访问它时,都须同时利用段号和页号去 检索高速缓存,若找到匹配的表项,便可从中得到相 应页的物理块号,用来与页内地址一起形成物理地址; 若未找到匹配表项,则仍须再三次访问内存。

虚拟存储的实现方法

虚拟存储的实现方法

虚拟存储的实现方法虚拟存储是计算机系统中的重要概念,它可以扩展系统的内存容量,使得计算机可以运行更大规模的程序。

虚拟存储的实现方法涉及到硬件和操作系统的协同工作,下面我们将详细介绍虚拟存储的实现方法。

一、虚拟存储的基本原理虚拟存储的基本原理是利用硬盘空间作为辅助存储器,将物理内存和磁盘空间结合起来,形成一种逻辑上连续的地址空间,从而使得程序可以访问比实际内存更大的地址空间。

在虚拟存储系统中,每个进程都有自己的虚拟地址空间,这样每个进程都认为自己在独占内存,而实际上多个进程共享物理内存和磁盘空间。

当一个进程需要访问某个虚拟地址空间中的数据时,操作系统会根据存储管理的算法将数据从磁盘加载到内存中,从而实现了虚拟存储的基本原理。

二、虚拟存储的实现方法1. 分页式虚拟存储分页式虚拟存储是一种常见的虚拟存储实现方法。

在这种方法中,虚拟地址空间和物理地址空间都被划分为固定大小的页,通常是4KB或者4MB。

当进程需要访问某个虚拟地址空间中的数据时,操作系统首先将虚拟地址转换成页号和页内偏移量,并根据页表将对应的物理页加载到内存中。

2. 分段式虚拟存储分段式虚拟存储是另一种常见的虚拟存储实现方法。

在这种方法中,虚拟地址空间被划分为多个段,每个段代表进程中的一个逻辑单元,比如代码段、数据段和堆栈段等。

每个段都有自己的段表,用来记录虚拟地址到物理地址的映射关系。

3. 页面与段式虚拟存储的结合在一些系统中,也可以将分页式和分段式虚拟存储结合起来。

这种方法将虚拟地址先转换成段号和页号,然后再根据段表和页表将数据加载到内存中。

这种方法既能够满足逻辑上连续的需求,又能够提高内存的利用率。

三、虚拟存储的管理虚拟存储的管理涉及到地址转换、页面置换、页面回收等问题。

地址转换是指将虚拟地址转换成物理地址的过程,通常通过页表或者段表来实现。

页面置换是指当内存中的页面不足时,选择哪些页面被换出到磁盘上,以便为新的页面腾出空间。

页面回收是指当一个进程结束时,释放其占用的内存空间,以便其他进程使用。

虚拟存储管理的基本原理

虚拟存储管理的基本原理

虚拟存储管理的基本原理虚拟存储管理是一种计算机内存管理技术,它允许操作系统将物理内存和磁盘空间组合使用,从而扩展了计算机的内存容量。

虚拟存储管理的基本原理是将进程所需的部分数据和指令存储在物理内存中,而将未使用的部分存储在磁盘上,以便在需要时进行交换。

这种技术可以提高计算机的性能和可靠性,同时也可以节省内存空间。

虚拟存储管理的主要内容包括以下几个方面:1. 虚拟地址空间虚拟地址空间是指进程所能访问的地址范围,它通常比物理内存的大小要大得多。

操作系统通过虚拟地址映射技术将进程所需的数据和指令从磁盘中加载到物理内存中,从而实现了虚拟存储管理。

2. 分页和分段分页和分段是虚拟存储管理的两种主要实现方式。

分页是将进程的虚拟地址空间划分为固定大小的页面,每个页面都可以独立地加载到物理内存中。

分段是将进程的虚拟地址空间划分为若干个逻辑段,每个段的大小可以不同,每个段都可以独立地加载到物理内存中。

3. 页面置换算法当物理内存不足时,操作系统需要将一部分页面从物理内存中换出到磁盘上,以便为新的页面腾出空间。

页面置换算法是用来决定哪些页面应该被置换出去的算法,常见的算法包括最近最少使用算法、先进先出算法、时钟算法等。

4. 页面调度算法当进程需要访问一个不在物理内存中的页面时,操作系统需要将该页面从磁盘中加载到物理内存中。

页面调度算法是用来决定哪些页面应该被加载到物理内存中的算法,常见的算法包括最优页面置换算法、先进先出页面置换算法、最近最少使用页面置换算法等。

5. 页面大小和页面表页面大小是指将虚拟地址空间划分为固定大小的页面时,每个页面的大小。

页面表是用来记录每个页面在物理内存中的位置和状态的数据结构,它通常由操作系统维护。

虚拟存储管理是一种复杂的技术,它需要操作系统对内存管理、文件系统、进程调度等方面进行综合考虑和优化。

通过合理地使用虚拟存储管理技术,可以提高计算机的性能和可靠性,同时也可以节省内存空间,为用户提供更好的使用体验。

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

学号:课程设计题目段页式虚拟存储管理学院计算机科学与技术专业班级姓名指导教师吴利军2013 年 1 月16 日课程设计任务书学生姓名:指导教师:吴利军工作单位:计算机科学与技术学院题目: 模拟设计段页式虚拟存储管理中地址转换初始条件:1.预备内容:阅读操作系统的内存管理章节内容,理解段页式存储管理的思想及相应的分配主存的过程。

2.实践准备:掌握一种计算机高级语言的使用。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.实现段页式存储管理中逻辑地址到物理地址的转换。

能够处理以下的情形:⑴能指定内存的大小,内存块的大小,进程的个数,每个进程的段数及段内页的个数;⑵能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。

2.设计报告内容应说明:⑴需求分析;⑵功能设计(数据结构及模块说明);⑶开发平台及源程序的主要部分;⑷测试用例,运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他方法(如果有,简要说明该方法);时间安排:设计安排一周:周1、周2:完成程序分析及设计。

周2、周3:完成程序调试及测试。

周4、周5:验收、撰写课程设计报告。

(注意事项:严禁抄袭,一旦发现,一律按0分记)指导教师签名:年月日系主任(或责任教师)签名:年月日一、需求分析:页式管理基本原理:各个进程的虚拟空间被划分成若干个长度相等的页。

页长的划分和内存与外存之间的数据传输速度及内存大小等有关。

一般每个页长大约为1----4K,经过页划分之后,进程的虚拟地址变为页号p与页内地址w所组成。

除了将进程的虚拟空间划分为大小相等的页之外,页式管理还把内存空间也按页的大小划分为片或者页面。

这些页面为系统中的任一进程所共享。

从而与分区管理不一样,分页管理时,用户进程在内存空间内除了在每个页面内地址连续之外,每个页面之间不再连续。

第一是实现了内存中碎片的减少,因为任意碎片都会小于一个页面。

第二是实现了由连续存储到非连续存储的这个飞跃,为在内存中局部地、动态地存储那些反复执行或即将执行的程序和数据段打下了基础。

怎样由页式虚拟地址转变为内存页面物理地址?页式管理把页式虚拟地址与内存页面物理地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。

静态页面管理:静态页面管理方法是在作业或进程开始执行之前,把该作业或进程的程序段和数据全部装入内存的各个页面,并通过页表和硬件地址变换机构实现虚拟地址到内存物理地址的地址映射。

1、内存页面的分配与回收静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。

系统依靠存储页面表、请求页面表以及页表来完成内存的分配。

(1)页表最简单的页表由页号与页面号组成,页表在内存中占有一块固定的存储区。

页表的大小有进程或作业的长度决定。

每个进程至少要拥有一个页表。

(2)请求表用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置。

系统必须知道每个作业或进程的页表起始地址和长度,以进行内存的分配和地址变换,另外请求表中还应包括每个作业或进程所要求的页面数。

(3)存储页面存储页面表也是整个系统一张,存储页面表指出内存各个页面是否已被分配出去,以及未被分配页面总数。

存储页面表也有两种构成方法,一种是在内存中划分一块固定区域,每个单元的每个比特代表一个页面,如果该页面已被分配,则对应比特位置置1,否则置0。

另一种方法空闲页面链,不占内存空间。

2、分配算法3、地址变换在程序执行过程中,执行的是虚拟空间中的代码,代码中的指令是相对于虚拟空间的,需要到内存的实际空间中寻找对应的要执行的指令。

静态页式管理的缺陷:虽然解决了分区管理时的碎片问题,但是由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,改作业或进程只好等待。

而且,作业或进程的大小仍受内存可用空间的限制。

动态页式管理:动态页式管理是在静态页式管理的基础上发展起来的。

它分为请求页式管理和与调入页式管理(调入方式上)。

请求页式管理和预调入页式管理在作业或进程开始执行之前都不把作业或进程的程序段和数据段一次性的调入内存,而是只装入被认为是经常反复执行和调用的工作区部分。

其他部分都在执行过程中动态的装入。

请求式页式管理:当需要执行某条指令或某些数据时而又发现他不在内存中时,从而发生缺页中断,系统将相应的页面调入内存。

预调入:系统对于那些在外存中的页进行调入顺序计算,估计出这些页中指令和数据的执行和被访问的顺序,并按此顺序将他们顺次调入和调出内存。

请求页式管理的地址变换与静态页式相同,也是通过页表查出相应的页面号,由页面号与页内相对地址相加而得到实际物理地址。

由于只有进程或程序的部分存在内存中因此怎样发现这些不在内存中的虚页以及怎样处理这种情况是必须解决的两个基本问题。

怎样发现这些不在内存中的虚页:扩充页表的方法。

即与每个虚页号相对应,除了页面号之外,再增设该页是否在内存中的中断位以及该页在外存中的副本起始地址。

(1)采用何种方法将所缺的页调入内存。

(2)如果内存中没有空闲页面时,把调进来的页面放在什么地方。

即采用什么策略淘汰已占据内存的页。

还有就是如果内存中的也被淘汰,但该页被修改过,显然该页应当被重新写到外存加以保存。

所以还要增加一项记录是否该页已经被改变。

常见的置换算法:(1)随机淘汰(2)轮转法和先进先出法(3)最近最久未使用内存保护:页式管理提供两种方式的内存保护:一是:地址越界保护。

二是:通过页表控制对内存信息的存取操作方式以提供保护。

地址越界保护:由地址变换机构中的控制存储器的值——页表长度和所要访问的虚地址相比较来完成。

存取控制保护的实现则是在页表中增加相应的保护位即可。

段式管理:分区式管理和页式管理时的进程的地址空间结构都是线性的,这要求对源程序进行编译连接时,把源程序中的主程序、子程序、数据区等按线性空间的一维地址顺序排列起来。

共享子程序和数据变得很困难,再者从链接的角度来看,分区管理和页式管理只能采用静态链接。

段式存储管理是基于为用户提供一个方便的灵活的程序设计环境而提出来的。

段式管理的基本思想是:把程序按内容或过程(函数)关系分成段,每段都有自己的名字。

一个用户进程或作业所包含的段对应于一个二维线性虚拟空间,也就是二维虚拟存储器。

段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换成实际的内存物理地址。

和页式管理一样,段式管理也采用只把那些经常访问的段驻留内存,而把那些在将来一段时间内不被访问的段放在外存,待需要时自动调入的方法实现二维虚拟存储器。

段式管理把一个进程的虚拟空间设计成二维结构,即段号s与段内相对地址w。

与页式管理不一样的是,页式管理中,被划分的页号按顺序编号递增排列,属一维空间,而段式管理中段号与段号之间无顺序关系。

另外段的划分也不像页的划分那样具有相同的页长,段的长度是不固定的。

每个段定义一组逻辑上完整的程序或数据。

例如,一个进程中的程序和数据可划分为主程序段、子程序段、数据段与工作区段。

每个段是一个首地址为零的、连续的一维线性空间。

根据需要段长可以动态的增长。

对端式虚拟空间地址的访问包括两个部分:段名和段内地址。

段式管理中以端为单位分配内存,每段分配一个连续的内存区,由于各段长度不等,所以这些存储区的大小不一,而且统一进程所包含的各段之间不要求连续。

段式管理的内存分配与释放在作业或进程的执行过程中动态进行。

首先,段式管理程序为一个准备进入内存准备执行的进程或作业分配部分内存,以作为该进程的工作区和放置即将执行的程序段。

随着进程的执行,进程根据需要随时申请调入新段和释放老段。

进程对于内存区的申请和释放可分为两种情况。

一种是当进程要求调入某一段时,内存中有足够的空闲区满足该段的内存要求。

另一种是内存中没有足够的空闲区。

对于第一种情况,系统要用相应的表格或数据结构来管理内存空闲区,以便对用户进程或作业的有关程序段进行内存分配和回收。

事实上,可以采用和动态分区式管理相同的空闲区管理方式。

即把内存各空闲区按物理地址从低到高排列或按空闲区的大小从小到大或从大到小排列。

与这几种空闲区自由链相对应,分区式管理时所用的几种分配算法:最先适应算法、最佳适应算法、最坏适应法都可以用来进行空闲区分配。

当然分区式内存管理时用到的内存回收方法也可以用在段式管理中。

另一种内存管理的分配与回收方法是在内存中没有足够的空闲区满足调入段的内存时使用的。

这时段式管理程序根据给定的置换算法淘汰内存中在今后一段时间内不再被CPU 访问的段,也就是淘汰那些访问率最低的段。

不过任何一个段的长度都不允许超过内存的可用区长度。

除了段的初始分配之外,段的动态分配是在CPU所要访问的指令和数据不在内存时产生缺页中断的情况下发生的。

因此段的淘汰或置换算法实际上是缺页中断处理过程的一部分。

段式管理的地址变换:由于段式管理只存放部分用户信息副本在内存,而大部分信息在外存中,这必然引起CPU访问内存时发成所访问的段不在内存中的情况,CPU如何感知所要访问的段不在内存中而启动中断处理程序呢?还有,段式虚拟地址属于一个二维的虚拟空间。

一个二维空间虚拟地址怎样变为一个一维的线性物理地址呢。

(1)段表(2)段式管理程序在进行初始内存分配之前,首先根据用户要求的内存大小为一个作业或一个进程建立一个段表,以实现动态地址变换和缺页中断处理及存储保护等。

段式管理是通过段表来进行内存管理的。

(3)段号与用户指定的段名一一对应,始址和长度分别表示该段在内存或外存的物理地址和实际长度。

存取方式是用来对该段进行存取保护的。

只有处理机状态字中的存取控制位与段表中的存取方式一致时才能访问该段。

内外栏是指该段现在存储在外存还是内存中。

如果如果该栏目指出所访问段在外存的话,则发生缺页中断。

而访问位则是根据淘汰算法的需要而设的。

(4)(5)动态地址变换一般在内存中给出一块固定的区域放置段表。

当某进程开始执行的时候,管理程序首先把该进程的段表始址放入段表地址寄存器。

通过访问段表寄存器,管理程序得到该进程段表始址从而可以开始访问段表。

然后由虚拟地址中的段号s为索引,查段表。

若该段在内存中,则判断其存取方式是否有错。

如果存取方式正确,则从段表相应表目中查出该段在内存中的起始地址,并将其和段内相对地址w相加,从而得到实际内存地址。

如果该段不在内存,则产生缺页中断将CPU控制权交给内存分配程序。

内存分配程序首先检查空闲区链,以找到足够长度的空闲区来装入所需要的段。

如果可用的空闲区总数小于所要求的段长,检查段表中的访问位,以淘汰那些访问概率低的段并将所需要的段调入。

相关文档
最新文档