精华内容
下载资源
问答
  • 段页式存储器管理 段页式存储器管理 段页式存储器管理 段页式存储器管理
  • 页式存储: ...段页式存储: 先查段表,通过段号确定页表地址。找到页表之后,通过页号确定内存块号地址(页框)因为每个段大小不一样,要判断页号是否越界。然后通过偏移地址在块内找到要找到信息。 ...

    页式存储:
    在这里插入图片描述
    带块表的页式存储:
    在这里插入图片描述
    注意: 命中块表1次访存,未命中2次

    二级页表:
    在这里插入图片描述
    段表:
    在这里插入图片描述
    在这里插入图片描述
    注意: 比页表多了段长。命中块表1次访存,未命中2次

    分段、分页优缺点:
    在这里插入图片描述
    段页式存储:
    先查段表,通过段号确定页表地址。找到页表之后,通过页号确定内存块号地址(页框)因为每个段大小不一样,要判断页号是否越界。然后通过偏移地址在块内找到要找到信息。
    在这里插入图片描述
    请求页式管理:
    与基本页(段)式管理的最大区别在于,前者都在内存,后者有一部分在外存。当命中时通过内存块号和偏移地址生成物理地址,当未命中,根据外存地址 去调入页面。
    **状态位:**有没有在内存
    **访问字段:**被访问过几次(用于置换)
    **修改位:**是否被修改(写回法)
    在这里插入图片描述
    **注意:**若状态位为0,引发缺页中断,去外存调入页面

    展开全文
  • 段页式存贮

    2018-06-19 22:42:21
    段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S,表示未越界,于是利用段表始址和段号来求出该段所对应的...
  •  所谓段页式划分,就是先把存储空间分成若干个大小相等的页,然后根据需要由若干个页再组成段。换句话说,就是把存储空间划分成由页组成的若干个段。于是,其地址结构就由段号、段内页码和页内偏移量三部分组成。 ...
  • Windows内存管理方式主要分为:页式管理、段式管理和段页式管理 首先看一下“基本的存储分配方式”种类:   1. 离散分配方式的出现  由于连续分配方式会形成许多内存碎片,虽可通过“紧凑”功能...

    内部碎片:已经被分配出去的内存空间>请求所需的内存空间。(分出去的没用完)

    页式内存管理。页的大小大于实际进程所需要的空间,但是该剩余部分不能够被其他进程使用。分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号,从0开始,如第0页、第1页等。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),也同样为它们加以编号,如0#块、1#块等等。在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。

    外部碎片:还没有分配出去,但是由于太小而无法分配给申请空间的新金正的内存空间空闲块。

    外部碎片是处于任何两个已经分配区域之间的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但由于他们的地址不连续或者其他原因,是的系统无法满足当前申请。

    Windows内存管理方式主要分为:页式管理、段式管理和段页式管理

    首先看一下“基本的存储分配方式”种类:


          



    1.  离散分配方式的出现


      由于连续分配方式会形成许多内存碎片,虽可通过“紧凑”功能将碎片合并,但会付出很大开销。于是出现离散分配方式:将一个进程直接分散地装入到许多不相邻的内存分区中。

           下面主要介绍“离散分配”三种方式的基本原理以及步骤:


    2.  基本分页存储


    2.1.       步骤


    ³ 逻辑空间等分为页;并从0开始编号

    ³ 内存空间等分为块,与页面大小相同;从0开始编号

    分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中

    用户程序的逻辑地址空间被划分成若干固定大小的区域,称为“页”或者“页面”,相应地,内存物理空间也分成相对应的若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。

    2.2.       地址结构


           分两部分:页号、位移量(业内地址)


         地址长度为32位,其中0~11位为页内地址,即每页大小为4KB;12~32位为页号,地址空间最多允许有220页。

      逻辑地址=页号&位移量(&号是连接符号,是将页号作为逻辑地址的最高位)


    2.3.       地址映射(逻辑地址--->物理地址)


      (物理地址=块号&块内地址)

      因为块的大小=页的大小,所以块内位移量=页内位移量,所以只需求出块号即可:


    页表:

    为了便于在内存中找到进程的每个页面所对应的物理块,系统为每个进程建立一张页表,记录页面在内存中对应的物理块号,页表一般存放在内存中。

    在配置了页表后,进程执行时,通过查找该表,即可找到每页在内存中的物理块号。可见页表作用是实现从页号到物理块号的地址映射,如下图所示:



    给定一个逻辑地址和页面大小,如何计算物理地址?

    1)       根据页面大小可计算出页内地址的位数

    2)       页内地址位数结合逻辑地址计算出页内地址(即,块内地址)和页号

    3)       页号结合页表,即可得出块号

    4)       块号&块内地址即可得出物理地址

    【例子】若页面大小为1K字节,页号2对应的物理快为b=8,计算逻辑地址A=2500的物理地址E。

     逻辑地址:2500/1K=2 余数252,页号为2,页内地址=252

    物理块号 8,块内地址252, 所以 物理地址=8*1K+252=8644

    CPU每次存取一个数据的时候需要访问2次内存第一次访问页表,根据自己的页号找到相应的内存块的地址,第二才是真正的访问那块内存,读写数据,(为了解决这个问题,可以建立一个快表,用寄存器实现速度块,可以把常用的页表项放进去,这样一般访问一次内存即可,访问寄存器的速度超快,基本跟上指令执行,不用担心)页表是一维的,只需要页号就能访问内存, 但是现在内存大了,既有可能表项庞大,这一个页表就占了很大内存,这时提出了二级页表,第一张表的没一项存放一个页表的地址,所以第一张表是多张页表的索引


    2.4.       地址变换原理及步骤



     



    请看上图,给出逻辑地址的页号和页内地址,开始进行地址变换:

    1)       在被调进程的PCB中取出页表始址和页表大小,装入页表寄存器

    2)       页号与页表寄存器的页表长度比较,若页号大于等于页表长度,发生地址越界中断,停止调用,否则继续

    3)       由页号结合页表始址求出块号

    4)       块号&页内地址,即得物理地址

     优点:没有外碎片,内碎片大小不超过页的大小

    缺点:整个程序要全部装入内存,要求有响应的硬件支持。

     

    3.   基本分段存储


    3.1.       步骤

    将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。

    ³ 逻辑空间分为若干个段,每个段定义了一组有完整逻辑意义的信息(如主程序Main()),如:




      内存空间为每个段分配一个连续的分区

      段的长度由相应的逻辑信息组的长度决定,因而各段长度不等,引入分段存储管理方式的目的主要是为了满足用户(程序员)在编程和使用上多方面的要求。

      要注重理解,完整的逻辑意义信息,就是说将程序分页时,页的大小是固定的,只根据页面大小大小死生生的将程序切割开;而分段时比较灵活,只有一段程序有了完整的意义才将这一段切割开。

     

    3.2.       地址结构


           分两部分:段号、位移量(段内地址)




    ³  段内地址的位数可以决定段的大小

    ³  逻辑地址=段号&段内地址(&号是连接符号,是将段号作为逻辑地址的最高位)

    图中段的大小为2^16  即64K。段号范围为0~2^64

    3.3.       地址映射(逻辑地址--->物理地址)


    物理地址=基址+段内地址注意为+号,而不是&号


    段表:根据段号求出基址




     

      求基址的过程与页式存储中求块号的过程原理相同,这里需要注意的是,物理地址是基址+段内地址,而不是基址&段内地址,由逻辑地址得到段号、段内地址,再根据段号和段表求出基址,再由基址+段内地址即可得物理地址。

    分页的目的主要是提高内存利用率,从操作系统的角度来看的,那么为了满足用户多方面的需要,提出分段的概念,分段的大小是不固定的,,所以在分段系统中,要访问一块内存,需要两个信息,基址,段长, 而分页的页长是固定的,因而找的一个页只需要页号即可, 所以页表地址空间是一维的,分段地址空间是二维的,同样段表也放在内存中,读写内存的时候,需要访问两次内存,同样的可以用快表的思想来解决

     

    3.4.       地址变换原理及步骤





    请看上图,给出逻辑地址的段号和段内地址,开始进行地址变换:

    1)       在被调进程的PCB中取出段表始址和段表长度,装入控制寄存器

    2)       段号与控制寄存器的页表长度比较,若页号大于等于段表长度,发生地址越界中断,停止调用,否则继续

    3)       由段号结合段表始址求出基址

    4)       基址+段内地址,即得物理地址


     

    分页和分段的主要区别:



    4.  基本段页式存储


    4.1.       步骤



    ³ 用户程序先分段,每个段内部再分页(内部原理同基本的分页、分段相同)





    4.2.       地址结构



           分三部分:段号、段内页号、页内地址




    4.3.       地址映射(逻辑地址--->物理地址)



    ³ 逻辑地址----- >段号、段内页号、业内地址

    ³ 段表寄存器--- >段表始址

    ³ 段号+段表始址---- >页表始址

    ³ 页表始址+段内页号----->存储块号

    ³ 块号+页内地址------>物理地址


     

    先分段,段内在分页,因此需要读写数据时候,访问3次内存,第一次通过段号找页号,第二次通过页号找物理地址,第三次才是真正的读写数据同样的可以用寄存器搞两个缓冲区,实现一次访问内存


    4.4.       地址变换原理及步骤




    请看上图,给出逻辑地址的段号、页号、页内地址,开始进行地址变换:

    1)       在被调进程的PCB中取出段表始址和段表长度,装入段表寄存器

    2)       段号与控制寄存器的页表长度比较,若页号大于等于段表长度,发生地址越界中断,停止调用,否则继续

    3)       由段号结合段表始址求出页表始址和页表大小

    4)       页号与段表的页表大小比较,若页号大于等于页表大小,发生地址越界中断,停止调用,否则继续

    5)       由页表始址结合段内页号求出存储块号

    6)       存储块号&页内地址,即得物理地址

     

     

    5.  比较


    页式、段式存储管理中,为获得一条指令或数据,须两次访问内存;而段页式则须三次访问内存

    页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页。把内存空间按页的大小划分为块,然后把页式虚拟地址与内存地址建立一一对应的页表,并用相应的硬件地址转换机构来解决离散地址变换问题。页式管理采用请求调页和预调页技术来实现内外存存储器的统一管理。

    优点:没有外碎片,每个内碎片不超过页的大小

    缺点:程序全部装入内存,要求有相应的硬件支持,如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。增加了机器成本和系统开销。

    段式管理的基本思想是把程序按照逻辑分段,每段有自己的名字。一个用户作业或者进程所包含的段对应一个二维线性虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存物理地址。

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

    缺点:会产生碎片

    段页式管理,系统必须为每个作业或者进程建立一张段表以管理内存分配与释放、缺段处理等。另外由于一个段又被划分为若干个页,每个段必须建立一张页表以把段中的虚页变换为内存中的实际页面。显然与页式管理时相同,页表也要有相应的实现缺页中断处理和页面保护等功能的表项。

    段页式管理是段式管理和页式管理相结合而成,具有两者的优点。由于管理软件的增加,复杂性和开销也增加。另外需要的硬件以及占用的内存也有所增加,使得执行速度下降。



    参考:http://blog.csdn.net/wang379275614/article/details/13765599

    展开全文
  • 段式存储、页式存储及段页式存储   转载▼   分段式存储方式 [百度百科同名词条,下同] 段式管理(segmentation),是指把一个程序分成若干个段(segment)进行存储,每个段都...

    段式存储、页式存储及段页式存储

     
      分段式存储方式

    [百度百科同名词条,下同]

    段式管理(segmentation),是指把一个程序分成若干个段(segment)进行存储,每个段都是一个逻辑实体(logical entity),程序员需要知道并使用它。它的产生是与程序的模块化直接有关的。段式管理是通过段表进行的,它包括段号或段名、段起点、装入位、段的长度等。此外还需要主存占用区域表、主存可用区域表。

     

    段式管理原理:

    为了进行段式管理,每道程序在系统中都有一个段(映象)表来存放该道程序各段装入主存的状况信息。段表中的每一项(对应表中的每一行)描述该道程序一个段的基本状况,由若干个字段提供。段名字段用于存放段的名称,段名一般是有其逻辑意义的,也可以转换成用段号指明。由于段号从0开始顺序编号,正好与段表中的行号对应,如2段必是段表中的第3行,这样,段表中就可不设段号(名)字段。装入位字段用来指示该段是否已经调入主存,“1”表示已装入,“0”表示未装入。在程序的执行过程中,各段的装入位随该段是否活跃而动态变化。当装入位为“1”时,地址字段用于表示该段装入主存中起始(绝对)地址,当装入位为“0”时,则无效(有时机器用它表示该段在辅存中的起始地址)。段长字段指明该段的大小,一般以字数或字节数为单位,取决于所用的编址方式。段长字段是用来判断所访问的地址是否越出段界的界限保护检查用的。访问方式字段用来标记该段允许的访问方式,如只读、可写、只能执行等,以提供段的访问方式保护。除此之外,段表中还可以根据需要设置其它的字段。段表本身也是一个段,一般常驻在主存中,也可以存在辅存中,需要时再调入主存。假设系统在主存中最多可同时有N道程序,可设N个段表基址寄存器。对应于每道程序,由基号(程序号)指明使用哪个段表基址寄存器。段表基址寄存器中的段表基址字段指向该道程序的段表在主存中的起始地址。段表长度字段指明该道程序所用段表的行数,即程序的段数。

     

    段式管理怎么执行命令:

    由系统赋给某道程序(用户、进程)一个基号,并在调入调出过程中对有关段表基址寄存器和段表的内容进行记录和修改,所以这些都不用用户程序员来管。某道活跃的程序在执行过程中产生的指令或操作数地址只要与基号组合成系统的程序地址,即可通过查表自动转换成主存的物理地址。分段方法能使大程序分模块编制,从而可以多个程序员并行编程,缩短编程时间,在执行或编译过程中对不断变化的可变长段也便于处理。各个段的修改、增添并不影响其它各段的编制,各用户以段的连接形成的程序空间可以与主存的实际容量无关。分段还便于几道程序共用已在主存内的程序和数据,如编译程序、各种子程序、各种数据和装入程序等。不必在主存中重复存储,只需把它们按段存储,并在几道程序的段表中有公用段的名称及同样的基址值即可。由于各段是按其逻辑特点组合的,容易以段为单位实现存储保护。例如,可以安排成常数段只能读不能写;操作数段只能读或写,不能作为指令执行;子程序段只能执行,不能修改;有的过程段只能执行,不能读也不能写,如此等等。一旦违反规定就中断,这对发现程序设计错误和非法使用是很有用的。段式管理的虚拟存储器由于各个段的长度完全取决于段自身,当然不会恰好如下图那样是1K的整数倍,段在主存中的起点也会是随意的,这就给高效地调入段分配主存区域带来困难。

     

    进行段式管理

    为了进行段式管理,除了系统需要为每道程序分别设置段映象表外,还得由操作系统为整个主存系统建立一个实主存管理表,它包括占用区域表和可用区域表两部分。占用区域表的每一项(行)用来指明主存中哪些区域已被占用,被哪道程序的哪个段占用以及该段在主存的起点和长度。此外,还可以设置诸如该段是否进入主存后被改写过的字段,以便该段由主存中释放时,决定是否还要将其写回到辅存中原先的位置来减少辅助操作。可用区域表的每一项(行)则指明每一个未被占用的基地址和区域大小。当一个段从辅存装入主存时,操作系统就在占用区域表中增加一项,并修改可用区域表。而当一个段从主存中退出时,就将其在占用区域表的项(行)移入可用区域表中,并进行有关它是否可与其它可用区归并的处理,修改可用区域表。当某道程序全部执行结束或者是被优先级更高的程序所取代时,也应将该道程序的全部段的项从占用区域表移入可用区域表并作相应的处理。

     

     

    分页式存储管理

    页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。

     

    基本原理:

    将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。

    段式存储、页式存储及段页式存储


    段式存储、页式存储及段页式存储

    静态页式管理:

    内存页面分配与回收

    段式存储、页式存储及段页式存储
    段式存储、页式存储及段页式存储

    静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过存储页面表、请求表以及页表来完成内存的分配工作。

    页表:内存中的一块固定存储区。页式管理时每个进程至少有一个页表。

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

    存储页面表:整个系统有一个存储页面表,其描述了物理内存空间的分配使用状况。

    存储页面表有两种构成方法:

    1、位示图法

    2、空闲页面链表发

    分配算法

    段式存储、页式存储及段页式存储

     

     

    首先,请求表给出进程或作业要求的页面数。然后,由存储页面表检查是否有足够的空闲页面,如果没有,则本次无法分配。如果有则首先分配设置页表,并请求表中的相应表项后,按一定的查找算法搜索出所要求的空闲页面,并将对应的页好填入页表中。

     

    地址变换:

    首先,需要有一个装置页表始址和页表长度用的控制寄存器。系统所调度执行的进程页表始址和长度从请求表中取出送入控制寄存器中。然后,由控制寄存器页表始址可以找到页表所在位置。

    静态页式管理解决了分区管理时的碎片问题。但是,由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,该作业或进程只好等待。而且作业和进程的大小仍受内存可用页面数的限制。

     

    动态页式管理:

    段式存储、页式存储及段页式存储

    动态页式管理是在静态页式管理的基础上发展起来的。它分为请求页式管理和预调入页式管理。

    请求页式管理和预调入页式管理在作业或进程开始执行之前,都不把作业或进程的程序段和数据段一次性地全部装入内存,而只装入被认为是经常反复执行和调用的工作区部分。其它部分则在执行过程中动态装入。请求页式管理与预调入页式管理的主要区别在它们的调入方式上。请求页式管理的调入方式是,当需要执行某条指令而又发现它不在内存时或当执行某条指令需要访问其它的数据或指令时.这些指令和数据不在内存中,从而发生缺页中断,系统将外存中相应的页面调入内存。

    预调入方式是,系统对那些在外存中的页进行调入顺序计算。估计出这些页中指令和数据的执行和被访问的顺序,并按此顺序将它们顺次调入和调出内存。除了在调入方式上请求页式管理和预调入管理有些区别之外,其它方面这两种方式基本相同。因此,下面我们主要介绍请求页式管理。

    请求页式管理的地址变换过程与静态页式管理时的相同,也是通过页表查出相应的页面号之后,由页面号与页内相对地址相加而得到实际物理地址,但是,由于请求页式管理只让进程或作业的部分程序和数据驻留在内存中,因此,在执行过程中,不可避免地会出现某些虚页不在内存中的问题。怎样发现这些不在内存中虚页以及怎样处理这种情况.是请求页式管理必须解决的两个基本问题。

    第一个问题可以用扩充页表的方法解决。即与每个虚页号相对应,除了页面号之外,再增设该页是否在内存的中断位以及该页在外存中的副本起始地址。

    段式存储、页式存储及段页式存储

    关于虚页不在内存时的处理,涉及到两个问题。第一,采用何种方式把所缺的页调入内存。第二,如果内存中没有空闲页面时,把调进来的页放在什么地方。也就是说,采用什么样的策略来淘汰已占据内存的页。还有,如果在内存中的某一页被淘汰,且该页曾因程序的执行而被修改,则显然该页是应该重新写到外存上加以保存的。而那些未被访问修改的页、因为外存已保留有相同的副本,写回外存是没有必要的。因此,在页表中还应增加一项以记录该页是否曾被改变。

    在动态页管理的流程中,有关地址变换部分是由硬件自动完成的。当硬件变换机构发现所要求的页不在内存时,产生缺页中断信号,由中断处理程序做出相应的处理。中断处理程序是由软件实现的。除了在没有空闲页面时要按照置换算法选择出被淘汰页面之外,还要从外存读入所需要的虚页。这个过程要启动相应的外存和涉及到文件系统。因此,请求页式管理是一个十分复杂的处理过程,内存的利用率的提高是以牺牲系统开销的代价换来的。

     

    请求页式管理中的置换算法:

    功能:需要调入页面时,选择内存中哪个物理页面被置换。称为replacement policy。

    出发点:把未来不再使用的或短期内较少使用的页面调出,通常只能在局部性原理指导下依据过去的统计数据进行预测。

    页面锁定(frame locking):用于描述必须常驻内存的操作系统的关键部分或时间关键(time-critical)的应用进程。实现方法为在页表中加上锁定标志位(lock bit)。

     

    随机淘汰算法:

    随机淘汰算法(random golongram):在系统设计人员认为无法确定哪些页被访问的概率较低时,随机地选择某个用户的页面并将其换出将是一种明智的作法。

    轮转法和先进先出算法:

    轮转法(RR,round robin)和先进先出算法(FIFO,first in first out):轮转法循回换出内存可用区内一个可以被换出的页,无论该页是刚被换进或已换进内存很长时间。FIFO算法总是选择在内存驻留时间最长的一员将其淘汰。

    FIFO算法认为先调入内存的页不再被访问的可能性要比其它页大,因而选择最先调入内存的页换出。实现FIFO算法需要把各个已分配页面按分配时间顺序链接起来,组成FIFO队列,并设置一置换指针指向FIFO队列的队首页面。这样,当要进行置换时,只需把置换指针所指的FIFO队列前头的页顺次换出,而把换入的页链接在FIFO队尾即可。

    由实验和测试发现FIPO算法和RR算法的内存利用率不高。这是因为,这两种算法都是基于CPU按线性顺序访问地址空间这一假设。事实上,许多时候.CPU不是按线性顺序访问地址空间的。

    Belady现象:一般来说,对于任一作业或进程,如果给它分配的内存页面数越接近于它所要求的页面数,则发生缺页的次数会越少。在极限情况下,这个推论是成立的。因为如果给一个进程分配了它所要求的全部页面,则不会发生缺页现象。但是,使用FIFO算法时,在未给进程或作业分配足它所要求的页面数时,有时会出现分配的页面数增多,缺页次数反而增加的奇怪现象。这种现象称为Belady现象。

    最近最久未使用页面置换算法:

    最近最久未使用页面置换算法(LRU, Least Recently Used):

    选择内存中最久未使用的页面被置换。这是局部性原理的合理近似,性能接近最佳算法。但由于需要记录页面使用时间的先后关系,硬件开销太大。硬件机构如:

    (1) 一个特殊的栈:把被访问的页面移到栈顶,于是栈底的是最久未使用页面。

    (2) 每个页面设立移位寄存器:被访问时左边最高位置1,定期右移并且最高位补0,于是寄存器数值最小的是最久未使用页面。

    比较常用的近似算法有:

    (a) 最不经常使用页面淘汰算法(LFU, Least Frequently Used)

    (b) 最近没有使用页面淘汰(NRU, Not Recently Used)

    理想型淘汰算法:

    理想型淘汰算法(OPT,Optimal Replacement Algorithm)

    该算法淘汰在访问串中将来再也不出现的或是离当前最远的位置上出现的页。它是一种理想化的算法,性能最好,但在实际上难于实现。

     

    存储保护:

    页式管理可以为内存提供两种方式的保护。一种是地址越界保护,另一种是通过页表控制对内存信息的操作方式以提供保护。

    地址越界保护可由地址变换机构中的控制寄存器的值一一页表长度和所要访问的虑地址相比较完成。

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

     

    页式管理的优缺点:

    优点:

    1、由于它不要求作业或进程的程序段和数据在内存中连续存放,从而有效地解决了碎片问题。

    2、动态页式管理提供了内存和外存统一管理的虚存实现方式,使用户可以利用的存储空间大大增加。这既提高了主存的利用纽,又有利于组织多道程序执行。

    缺点:

    1、要求有相应的硬件支持。例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本。

    2、增加了系统开销,例如缺页中断处理机,

    3、请求调页的算法如选择不当,有可能产生抖动现象。

    4、虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用果页面较大,则这一部分的损失仍然较大。

     

     

    段页式存储管理方式:

    基本原理

    段页式系统的基本原理,是基本分段存储管理方式和基本分页存储管理方式原理的结合,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。下图示出了一个作业的地址空间和地址结构。

    段式存储、页式存储及段页式存储

    该作业有三个段,页面大小为4 KB。在段页式系统中,其地址结构由段号、段内页号及页内地址三部分所组成,如下图所示。 

    段式存储、页式存储及段页式存储

      

    地址变换过程:

    在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S

    段式存储、页式存储及段页式存储

    在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。

    显然,这使访问内存的次数增加了近两倍。为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。

     

     

    区别及优缺点

    虚拟存储器可以分为两类:页式和段式。页式虚拟存储器把空间划分为大小相同的块,称为页面。而段式虚拟存储器则把空间划分为可变长的块,称为段。页面是对空间的机械划分,而段则往往是按程序的逻辑意义进行划分。
      页式存储管理的优点是页表对程序员来说是透明的,地址变换快,调入操作简单;缺点是各页不是程序的独立模块,不便于实现程序和数据的保护。
      段式存储管理的优点是消除了内存零头,易于实现存储保护,便于程序动态装配;缺点是调入操作复杂,地址变换速度慢于页式存储管理。

    展开全文
  • 段页式内存管理

    千次阅读 2019-03-18 20:23:54
    一、段页式内存管理的概念   页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享。如果将这两种存储管理方法结合起来,就形成了段页式存储管理方式。   段页式管理就是将...

    一、段页式内存管理的概念

      页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享。如果将这两种存储管理方法结合起来,就形成了段页式存储管理方式。

      段页式管理就是将程序分为多个逻辑段,在每个段里面又进行分页,即将分段和分页组合起来使用。这样做的目的就是想同时获得分段和分页的好处,但又避免了单独分段或单独分页的缺陷。

      如果我们将每个段看做一个单独的程序,则逻辑分段就相当于同时加载多个程序。
    在这里插入图片描述

    二、段页式内存管理的实现

      在段页式系统中,作业的逻辑地址分为三部分:段号、页号和页内偏移量,如图所示。
    在这里插入图片描述
      为了实现地址变换,系统为每个进程建立一张段表,而每个分段有一张页表(在一个进程中,段表只有一个,而页表可能有多个)。段表表项中至少包括段号、页表长度和页表起始地址,页表表项中至少包括页号和块号。此外,系统中还应有一个段表寄存器,指出作业的段表起始地址和段表长度。

      在进行地址变换时,首先通过段表查到页表起始地址,然后通过页表找到页帧号,最后形成物理地址。如图所示,进行一次访问实际需要三次访问主存,这里同样可以使用快表以加快查找速度,其关键字由段号、页号组成,值是对应的页帧号和保护码。
    在这里插入图片描述
    在这里插入图片描述

    参考:https://www.cnblogs.com/peterYong/p/6556619.html
    https://www.cnblogs.com/edisonchou/p/5115242.html

    展开全文
  • 内存管理的三个离散方式:页式(分页)、段式(分段)、段页式(页段联动) 目录页式基本原理实现优点缺点段式管理基本原理实现优点缺点段页式管理基本原理实现优点缺点 页式 基本原理 将各进程的虚拟空间划分为若干...
  • 存储管理之页式、段式、段页式存储 以及 优缺点

    万次阅读 多人点赞 2018-09-14 18:08:44
    内存管理方式主要分为:页式管理、段式管理和段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页。把内存空间按页的大小划分为片或者页面,然后把页式虚拟地址与内存地址建立一一对应的...
  • 段页式存储管理地址转换 广工操作系统实验三
  • 段页式存储管理

    千次阅读 2019-08-22 13:53:16
    分段存储管理 在分段存储管理方式中,每个进程的地址空间被分为若干个地址连续的段。每个段是一个完整的逻辑信息单元,故而分段式存储管理能更加轻易实现共享...段页式系统是先将进程地址空间分为若干段,然后在段内...
  • 目录页式存储管理段式存储管理分页和分段存储管理的主要区别段页式存储管理 页式存储管理 1. 基本原理 页式存储管理是把主存储器划分成大小相等的若干区域,每个区域称为一块,并对它们加以顺序编号,如0#块、1#块...
  •   操作系统虚拟内存调度方式有分页式、段式、段页式3种。 页式调度   页式调度是将逻辑和物理地址空间都分成固定大小的页。主存按页顺序编号,而每个独立编址的程序空间有自己的页号顺序,通过调度辅存中程序的...
  • 段页式的存储管理模拟系统 包含段页存储 页面置换算法 内外存虚拟存储器等内容
  • Window内存管理方式主要分为:页式管理、段式管理、段页式管理。 1、页式管理 用户程序的逻辑地址空间被划分成若干固定大小的页,相应地,内存物理空间也分成相对应的若干个物理块,页和块的大小相等。可将用户...
  • 分页式、分段式、段页式

    千次阅读 2020-08-16 15:51:14
    分页式:页号+页内偏移,通过页号找到块号,通过块号,算出块...段页式:段号+页号+页内偏移 先通过段号找到页的起始地址,通过页表当中的页号找到对应的块号,再通过块号计算出起始地址,块的起始地址+页内偏移 ...
  • 文章目录目录前文列表页式管理快表多级页表基于页表的虚实地址转换原理应用 TLB 快表提升虚实地址转换速度页式虚拟存储器工作的全过程缺页中断段式管理段页式管理 前文列表 页式管理 页式存储管理是一种把主存按页...
  • 段页式虚拟存储管理

    2013-05-31 18:12:51
    程序完成段页式虚拟存储管理存储分配、地址重定位和缺页中断处理  为一个进程的内存申请(多少个段,每个段多大)分配内存,当一个进程(完成)结束时回收内存;  (2)对一个给定逻辑地址,判断其是否缺段、缺页...
  • 页式,段式,段页式存储的虚拟地址空间维数问题

    千次阅读 多人点赞 2018-07-28 01:11:46
    页式存储是一维的,段式存储是二维的,段页式存储也是二维的。 其次,要注意的是: 这是由存储管理方式的特点决定的,跟逻辑地址的结构没有关系。   站在程序员的角度,你想操作一个内存地址, (1)页式存储...
  • 分段+分页=段页式管理段页式管理的逻辑地址结构段页式存储的段表、页表3.段页式管理的地址转换过程 0.思维导图 1.分页、分段的优缺点分析 2.分段+分页=段页式管理 段页式管理的逻辑地址结构 段页式存储的段表...
  • 王道的说法 ...段页式存储,3次: 第一次:访问内存中的段表查到页表的起始地址 第二次:访问内存中的页表找到页帧号,形成物理地址 第三次:得到物理地址后,再一次访问内存,存取指令或者数...
  • 离散的存储管理方式:页式、段式、段页式,为获得一条指令或数据,分别需要访问内存二次,二次,三次。 页式:逻辑空间分页,内存空间分块,页的大小=块的大小,地址空间一维 逻辑地址=页号&偏移量(&是连接符...
  • 4.5 段页式存储管理 分段与分页的对比 (1) 用户地址空间的区别 页式系统中用户地址空间 一维地址空间 段式系统中用户地址空间 二维地址空间 (2) 分段和分页 分段 信息的逻辑划分 段长是可变的 分页 信息的物理划分 ...
  • [操作系统] 内存管理策略:页式、段式、段页式

    千次阅读 多人点赞 2018-04-16 19:44:11
    本文内容参考自《操作系统概念第七版》、《操作系统精髓与设计原理 原书第六版》前言为了解决外部碎片问题,一种可行的方案是允许物理地址空间为非连续的,具体的实现技术包括:分页、分段以及两者的合并段页式管理...
  • 操作系统段页式存储器管理课程设计,很好的可以运行
  • 存储管理的基本模式: 1.单连续存储管理:一维逻辑...4.段页式存储管理:段式二维逻辑地址空间的程序占用多个主存页架区:   虚拟存储器的基本思想:  存储管理把进程全部信息放在辅存中,执行时先将其中一部...
  • 段页式存储管理方式详解

    千次阅读 2020-05-12 15:34:32
    段页式存储管理方式详解分段存储方式引入目的:基本原理分段段表地址变换机构信息保护信息共享分页与分段的主要区别:段页式存储管理方式引入原因:基本原理段表与页表地址变换机构 分段存储方式 引入目的: 满足用户在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,741
精华内容 106,296
关键字:

段页式