版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章实存管理技术存储器是计算机最重要的资源之一,内存管理一直是操作系统最主要的功能之一。内存容量一直是计算机硬件资源中最紧张的资源,特别在多道程序设计技术条件下,一方面要充分利用内存容量,另一方面必须保证多个程序在内存中互不干扰即保证内存安全。存储器管理技术分实存管理和虚存管理。基本的存储管理方法是分区法、覆盖技术、交换技术、分页法、分段法、段页法。第七章实存管理技术7.1存储管理的基本概念7.2连续分配存储管理方式7.3离散分配存储管理方式7.4交换技术7.5覆盖技术7.1存储管理的基本概念7.1.1存储管理要解决的问题7.1.2存储管理的分类7.1.3地址映射(重定位)7.1.1存储管理要解决的问题早期计算机系统中,内存是最紧张的资源之一。为了在小内存中运行大程序,人们先发明了覆盖技术。当发明虚存管理技术后,才真正解决了在小内存中运行大程序的问题。为了有效管理计算机内存资源,操作系统的存储管理要具备以下功能:1.内存空间分配与回收根据某种分配方式,遵循某种分配算法,为进程分配内存,当进程结束时再回收内存。2.地址映射设计地址变换机构,静态和动态地址变换的方法。3.内存保护怎样让内存中各个进程互不干扰,怎样保证内存中程序、数据的安全。4.内存扩充怎样从逻辑上扩充内存。这属于虚存管理的范畴。7.1.2存储管理的分类从分配方式上按进程在内存中是否连续,可以把存储管理分成连续分配方式和离散分配方式两类。1.连续分配方式必须为进程在内存分配一片连续的空间。2.离散分配方式允许将一个进程分散地装入内存的多个不相邻的区域。从进程是整体装入还是局部装入内存可以把存储管理分成实存管理和虚存管理两类。1.实存管理必须把进程完整地装入内存。2.虚存管理允许将一个进程局部地装入内存。7.1.3地址映射(重定位)1.地址空间和存储空间源程序经过编译或汇编产生目标文件,目标文件经过连接和装配产生可以执行的文件。在连接装配时,语言系统并不知道将来这个执行文件会放在内存的哪个位置,为了方便地将执行文件装入内存,把执行文件中第一条指令的地址设为0。其他指令的地址都以它做参照。执行文件中指令的地址称相对地址或逻辑地址。而相对地址的集合称相对地址空间,简称地址空间。内存每个字节都有一个地址,这是物理地址是真实的地址,也称绝对地址。绝对地址空间也叫物理地址空间,简称存储空间。一个程序的逻辑地址和它在内存中的地址是不同的,显然必须先将逻辑地址变成物理地址后程序才能正确运行。2.静态重定位
静态重定位是由专门设计的重定位装配程序来完成的,是在目标程序装入到内存区时由装配程序来完成地址转换。优点:无需增加地址转换机构
缺点:不能实现重新分配内存
用户必须事先确定所需的存储量
每个用户进程需各自使用一个独立的副本。
Load#1,450…………35000100450……Load#1,2450……3500………………2100操作系统20002450逻辑地址物理地址图7-2静态地址映射3.动态重定位动态重定位是在目标程序执行过程中,在CPU访问内存之前,由硬件地址映射机构来完成将要访问的指令或数据的逻辑地址向内存的物理地址的转换。优点:内存的使用更加灵活有效;几个作业共享一程序段的单个副本比较容易;无需用户干预,由系统来负责全部的存储管理。缺点:需附加硬件支持;实现存储器管理的软件比较复杂。Load#1,450…………35000100450……Load#1,450……3500………………2100操作系统20002450逻辑地址物理地址图7-3动态地址映射基址寄存器2000+7.2连续分配方式7.2.1单一连续分配方式7.2.2固定分区内存管理方式7.2.3可变分区内存管理方式7.2.1单一连续分配方式在单任务的操作系统条件下,让用户占用计算机所有资源,内存管理采用单一连续分配方式。内存被分成两个区1.系统区供操作系统使用2.用户区供用户放一个程序操作系统区用户区……7.2.2固定分区内存管理方式分区管理是满足多道程序设计的一种最早采用的存储管理方法。其基本原理是给每一个进程在内存中划分一块可用的存储区,连续存储各进程的程序和数据,使各进程能并发进行。
内存分配算法:(1)首次适应法空闲分区按物理地址为升序排列,在内存现有空闲分区中,找到第一个可用的分区就分配。(2)最佳适应法在内存现有的空闲分区中,找一个浪费最小的分区分配。
(3)最坏适应法在现有内存空闲区中,找一个浪费最大的分区分配。(4)唯一最佳分配法作业按长度分类排队,一个分区对应一个队,使这个队中每个作业的长度小于等于分区的长度,使分配后内存浪费最小。从整体上看,这个算法也不是最佳的。
固定分区法
固定分区法就是把内存固定划分为若干个不等的区域,划分的原则由系统决定。在整个执行过程中保持分区长度和分区个数不变。操作系统为每个用户作业分配一个分区。
内存管理
:分区号起始地址长度状态进程名管理数据结构:设置内存分配表内存分配:每个区分配一个进程内存回收:简单缺点:内存利用率不高如何记录系统的状况呢?分配策略
分区4分区3分区2分区1操作系统0100K200K400K700K1300K多个输入队列分区4分区3分区2分区1操作系统0100K200K400K700K1300K单个输入队列(a)唯一最佳分配算法(b)其他分配算法固定分区
操作系统建立一个内存分区管理表(分区号、分区长度、分区首址和分区状态),所有分区按物理地址升序排列,每个分区占表中一行。操作系统为作业分配内存时,按(1)、(2)、(4)中某个分配算法查表,有合适的分区就分配,否则就不分配。固定分区法管理方式虽然简单,但是存在大量内碎片(在分区内存在空余的空间,这就称为内碎片),内存利用率不高。
分区号分区长度分区首址分区状态
120KB20KB已分配
232KB40KB已分配
364KB72KB已分配
4128KB138KB未分配内存分区管理表地址映射对于固定分区,可以采用静态地址映射也可以采用动态地址映射。内存保护可以采用界限寄存器法,用两个寄存器分别放用户区的首地址和用户的长度。用户程序访问内存的地址必须在这个范围内,否则就是地址越界。7.2.3可变分区内存管理方式
可变分区法
动态分区分配是根据进程的实际需要,动态地为它分配连续的内存空间,各个分区是在相应进程装入内存时建立的,其大小恰好等于进程的大小。
为了实现内存分配,系统中设置了相应的数据结构来记录内存的使用情况,常用的数据结构形式有空闲分区链。内存分配数据结构,可以用空闲区链表,节点中包含空闲区的首址、长度、链指针。在进程PCB中包含进程的内存首址、长度、访问权限等项目。分配算法:首次适应法、最佳适应法、最坏适应法。分配时,操作系统填写PCB中进程的内存首址、长度、访问权限。内存回收为了最大限度的利用内存资源,就要不断将分散的小碎片拼接成一个大的空闲区,这里有个拼接的时机问题,可以在分配时拼接,也可以在回收时拼接。拼接意味着要求进程能在内存中移动,例如现在进程的首址是a,将它向地址增大方向移动b个字节,进程的首址变成a+b。进程长度不变。地址映射为了实现内存拼接,必须用动态地址映射CPU提供基址寄存器、限长寄存器、地址运算器。进程切换时,操作系统把PCB中的内存信息(进程的首址、长度)写入基址寄存器和限长寄存器同时将进程PCB中的现场信息写入CPU的寄存器集合。动态重定位的实现过程内存保护利用基址寄存器和限长寄存器,一个进程只能访问自己的内存区,只有操作系统进程可以访问全部的内存区。除了地址界限保护外,为了进程间共享数据还需要访问权限保护,进程可以给另一个进程赋予访问权限,允许在访问权限范围内访问。动态分区举例外碎片进程外的内存空间碎片化能用压缩方法解决OS移动进程使进程和进程相连。消耗CPU时间OS(8M)P1(20M)P2(14M)P3(18M)Empty(56M)Empty(4M)P4(8M)Empty(6M)P2(14M)Empty(6M)RefertoFigure7.4
例:现在有三个作业A(20KB),B(80KB),C(50KB),内存有两个空闲区F1(110KB),F2(60KB)。首次适应法(设F1的首址<F2的首址)
A(占20KB)
B(占80KB)
C(占50KB)F1(100KB,10KB
)F2(50KB,10KB
)
首次适应法(设F1的首址>F2的首址)
A(20KB)
B(80KB)最坏适应法
A(20KB)
B(80KB)
C(50KB)F2(20KB,40KB)F1(80KB,30KB)F1(100KB,10KB
)F2(50KB,10KB
)
最佳适应法
A(20KB)
B(80KB)可变分区分配采用最佳适应算法,结果不一定是最佳的;采用最坏程序算法,结果不一定是最差的。F2(20KB,40KB
)F1(80KB,30KB
)伙伴系统全部可用空间被分成一个长度是2U的块如请求分配长度s符合2U-1<s<=2U全部空间分配给它否则块被分成两个相等的伙伴。这个过程一直持续直到找到符合长度<=s的伙伴伙伴系统举例伙伴系统树型表示7.3离散分配存储管理方式固定分区和可变分区都是连续分配内存的技术,把一个进程装入一个分区,使用这种方法会造成许多碎片,降低了内存的利用率。产生碎片的根本原因就是要求把一个进程连续地放在一个内存区。虽然可变分区技术使用内存拼接技术把分散的空闲分区集中成较大的分区,但要增加系统的开销。人们考虑能否化整为零提高内存的利用率。7.3.1分页式存储管理方式7.3.2分段式存储管理方式7.3.3段页式存储管理方式7.3.1分页式存储管理方式可变分区方式除了产生大量的外碎片,还有一个缺点,就是进程动态增长不方便。分页管理是解决碎片问题的一种有效办法,它允许进程在内存空间里是不连续的;还便于进程动态增长。分页管理技术原理(1)操作系统按一个2的整数次幂为长度,把内存用户区分成若干存储区,称为块,每个块的容量都是相同的,每个块按物理地址值由小到大顺序从0开始编号,称为块号。000000000000000001000000010000000…000000111000001000000001001000001…000001111………111111000111111001111111010111111…111111111
块号块内地址#0#1#63假设每块的容量是23个字节物理地址被分成两部分,高位部分称为块号,低位部分称为块内地址。假设内存共有64个块,每块有8个字节。块号是从物理地址中截出来,是物理地址固有的。物理地址=(块号,块内地址)=(B,d)内存块的起始地址等于内存块号乘以块长。
物理地址(2)用户进程的逻辑空间也按内存块的大小分页,每页也按逻辑地址由小到大编号称为页号。假设一个进程有61个字节,以每页8个字节分页,分成8页,如图所示:000000000000000001000000010000000…000000111000001000000001001000001…000001111………000111000000111001000111010000111101
页号页内地址#0#1#7每页的容量是23逻辑地址被分成两部分,高位部分称为页号,低位部分称为页内地址。逻辑地址=(p,d)程序共有8页,每页有8个字节。页号是从逻辑地址中截出来的。为程序的每一页分配一个内存块,这就得出程序任何一页装入内存后,它的页内地址就等于块内地址。
逻辑地址………
物理地址(块号,块内地址)用(B,d)表示,逻辑地址(页号,页内地址)用(p,d)表示,设逻辑地址是A,页长是L,从数学角度描述:
p=AdivLd=AmodL
因为L=2m,所以p是A逻辑右移m位后的结果,d是A逻辑右移m位时,移出去的m位值。用汇编语言整数除法指令很容易描述,以A作为被除数,以L作为除数,商就是页号,余数就是页内地址。其实不用对逻辑地址移位,也不用对逻辑地址做除法,在工程上直接根据页长的位数,将逻辑地址一分为二,高位部分是页号,低位部分是页内地址(页内偏移)。
内存空间分配与回收
页式管理以块为单位给进程分配内存,操作系统必须随时掌握内存块的状态(已分配、未分配、当前空闲块的总数)。下面建立内存空间分配与回收的数学模型:首先看数据的性质,内存块具有哪些属性? 内存块的起始地址、内存块的状态(已分配或空闲),内存块的总数是固定的。这个模型要能反映内存块的地址和状态信息。并且内存块的总数是不变的。从数据结构和程序语言角度讲,一个数组元素具备两个特性,能否用一个数组元素代表一个内存块?用数组元素的值代表内存块的状态,元素的下标值代表内存块的地址。因为一个内存块的状态不是已分配就是未分配,可以用一个二进制位表示,0表示未分配,1表示已分配。进程和页架A.0A.1A.2A.3B.0B.1B.2C.0C.1C.2C.3D.0D.1D.2D.3D.4
假定系统有m*n个内存块(m行n列),用m*n的位图表示:
0
1
2
3
4
5...3031323334353637...6263646566676869...949596979899100101…126127128129130131132133…158159160161162163164165…190191192193194195196197…222223224225226227228229…254255
012345...3031
01234567
在程序语言中用二维数组表示这个位图,每个元素的长度是一个二进制位,用一个数组元素表示一个内存块。 数组元素值表示对应的内存块的状态(空闲或占用)数组元素的下标映射内存块的起始地址。 从分页原理可知,内存块的起始地址等于内存块号乘以页长,在此页长是个常数,用元素的下标值映射内存块号。块号左移就可获得块的起始地址。假设i和j分别代表数组元素的行、列下标。
B=i*n+j例:n=32,m=8,i=3,j=5B=i*n+j=3*32+5=101分配时遍历数组,找到元素值是0的元素,再根据该元素的下标计算内存块块号B。分配后,将该元素值更改为1。
分配原则:设系统有m个空闲内存块,进程申请n块,如m>=n就分配,即要求进程一次性的装入内存,不论这些块在内存中是否连续。一个进程装入内存后,可以离散分布在各个内存块中,进程不需要操作系统为它分配一个连续的内存区。这正是分页管理与分区管理的根本区别。
设k是系统当前的空闲块数,n是进程的页数,分配算法可以用N-S流程图表示为:TTFF
k>=n
nx;q=&a[0][0];B=0;当x>0*q==0(未分配)分配*q=1,填写页表记录块号B,x--,k--修改q++;B++不分配
进程结束后,要回收进程占用的所有内存块,这时要根据内存块号计算它在位图中的位置(即行下标和列下标)
i=Bdivnj=Bmodn
例:B=197,n=32i=Bdivn=197div32=6j=Bmodn=197mod32=5计算出内存块对应的行和列下标后,就可以访问数组,把该元素的值修改为0,系统空闲内存块数自增1,这个内存块就被系统收回;进程如占有n块,就把这个过程重复n次。地址映射地址映射是将逻辑地址转换成真实的物理地址。由于内存的一块恰好装入一页,页内地址与块内地址一一对应。逻辑地址是(p,d)物理地址是(B,d)现在的问题是已知p,求B。因为进程的一页可以装入内存的任何一块中,p和B之间不存
在一种可计算的线性函数。但是存在每页对应一个内存块的关系。一个显而易见的方法是建立一张表(页表),表中每行代表一页,每行的序号代表页号,通过这张表描述页号与块号的关系。地址映射的工作是用页号p查表,找到对应的块号B,再用B与页内地址d计算物理地址。为了提高地址映射的效率,需要硬件的支持。在CPU中设立页表控制寄存器(其中包含页表长度L和页表起始地址a)。页表每个进程都有自己的一张页表,页表的起始地址和长度记录在PCB中。当进程由就绪态变成执行态时,由操作系统根据进程的PCB将进程页表的起始地址和页表长度填入CPU页表控制寄存器。pdLap<L
BBdp+ap+a越界中断nya逻辑地址页表寄存器页表物理地址由于页表是驻留在内存的某个固定区域中,而取数据或指令又必须经过页表变换才能得到实际物理地址。因此,取一个数据或指令至少要访问内存两次以上。一次访问页表以确定所取数据或指令的物理地址,另一次是根据地址取数据或指令。这比通常执行指令的速度慢了一倍。
提高查找速度一个最快的办法就是把页表放在寄存器中而不是内存中,但由于寄存器价格太贵,这样做是不可取的。另一种办法是在地址变换机构中加入一个高速联想存储器,构成一张快表。在快表中,存入那些当前执行进程中最常用的页号与所对应的块号,从而以提高查找速度。(2)快表的地址转换由于在某段时间内执行程序时,是在一个范围内逐条顺序执行指令;数组一类数据结构在内存占据一片连续存储空间,访问数组时也是在数组范围内访问,所以快表的命中率可达到80%到90%。CPU存取一个数据的平均时间为:T=命中率×(访内时间+访cache时间)+非命中率×(2×访内时间+访cache时间)例:访内时间是100ns,访cache时间是20ns,访cache命中率是85%计算CPU存取一个数据的平均时间。T=0.85*(100+20)+0.15*(200+20)=135ns
页的共享和保护
分页存储管理技术使每个进程分别存储在内存的不连续的存储块中,这种灵活性允许两个和多个进程共享程序库中的例程或公共数据段的同一副本,共享的方法是使这些相关进程的逻辑空间中的页指向相同的内存块。 共享页面是有条件的,故实现信息共享的前提是提供附加的保护措施,对共享信息加以保护。
页共享与保护进程1页表1ed1ed2…ed40data1data10…ed1ed2…ed40data1data10…2122…606170…2122…607180…进程2页表2ed1ed2…ed40data1data10…主存data1data10……212260617007180分页系统中共享editor示意图7.3.2分段式存储管理方式其实程序在逻辑上是分成不同段的,每个段具有其独特的性质,例如一个代码段是只执行的,一个数据段只允许读,另一个数据段可允许读和写。显然,如以段作为内存分配的最小单位,这便于对各个段实施控制和保护。这些段的长度可以不同,段和段在内存中也可以不连续。每个段在内存占据一片连续的空间。分段基本原理内存分配与回收分段管理中,内存的最小分配对象是段,特别地是为每个段分配各自的连续空间,在内存里段和段之间可以不连续。分配算法与可变分区的分配算法相似,可以采用最佳适应法、最坏适应法和首次适应法等分配算法。显然仍然要解决外碎片的问题。分段基本原理内存分配的数据结构要采用空闲区链表,为了提高内存的利用率,必须实施内存碎片拼接的方案,内存碎片拼接的时机可以在分配时刻或回收时刻。可以理解分段管理技术继承了可变分区管理技术,但管理上要比可变分区更复杂。例如可变分区管理以进程为内存分配的最小对象,为一个进程只进行一次分配工作;而分段管理以段为内存分配的最小对象,为一个进程的每个段要进行一次分配工作。分段基本原理地址映射从前面论述中,知道进程被分成若干个逻辑段,每个段在内存中占据一片连续的空间,内存分配可以按可变分区的算法,必须进行外碎片拼接。那么采用静态地址映射还是动态地址映射呢?答案显然是必须采用动态地址映射。否则无法实施外碎片拼接。
地址映射是将逻辑地址转换为物理地址,先研究逻辑地址的构成。
分段基本原理进程的逻辑地址空间在分段存储管理方式中,段是一组相关的逻辑信息的集合。每个段都有自己的名字和长度,通常用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间,段的长度由相应的逻辑信息组的长度决定。分段系统中的逻辑地址由段号s和段内地址d组成,是一个二维地址(s,d)。是程序员负责安排的地址。由于分段的进程逻辑地址空间是二维的,所以分段的地址映射在于如何把二维段地址结构动态地变成一维的内存地址结构。内存分配时,是为任何一个段分配一个连续的内存片,一个段内的所有逻辑地址在该内存片中的顺序仍然不变。假设段的物理起始地址是a,由于段的起始逻辑地址是0,逻辑地址中作为偏移地址,加上段物理起始地址就是所求的物理地址。所以逻辑地址为x的单元其物理地址为a+x
。现在已知逻辑地址(s,d),怎样计算它在内存的物理地址?与分页管理的分析一样,关键是找到逻辑地址与物理地址之间的映射关系。由于每个段在内存是连续的,可以将段的物理地址看成是由基址和偏移地址(a,d)组成,根据前面分析,偏移地址又等于段内地址,关键要找s和a的联系。分配内存时,是随机为一个段分配空间,所以s和a之间不会存在某种线性函数关系,即不可能用数值计算的方法求解。但是段号s和段物理起始地址a之间确实存在着一一对应的关系,可以用一个表(段表)保存这个关系,根据表的起始地址和s找该段的起始物理地址a。然后计算a+d
得到所要的物理地址。操作系统每个进程建立一个表,保存其段号s和段物理起始地址a之间的关系,称为段表。在查表中仍然要防止地址越界的问题。所以表中除了段物理起始地址外,还要保存段的长度值。硬件上要提供相应的段表控制寄存器,当进程切换时,操作系统把新进程PCB中的段表起始地址和段表长度值写入段表控制寄存器中,进程访问内存时,按照段表控制寄存器找段表,通过查表找段的物理起始地址。地址映射
段号段内地址段表始址逻辑地址(2,100)>=段号越界中断
+1K5002006000123基址段号段长物理地址8292段式存储的地址变换机构2100+6K8K9K4Kyn>=yn段内地址越界段表长度4段的共享和保护
段的共享段的共享是指两个以上的进程,使用同一个子程序或数据段,而在内存中只保留该信息的一个副本。具体地说,只需在每个进程的段表中,用相应的表项装入共享段在内存的起始地址即可。内存保护分段管理优点之一就是方便内存保护。前面看到怎样进行地址越界保护,它只是内存保护的一部分,为了实施访问权限保护,在段表中再增加访问权限字段,每个进程访问该段时还要进行访问权限检查,符合的才允许访问,否则拒绝访问。段的共享与保护
例子:有一个多用户系统,可以容纳40个用户,他们都执行一个文本编辑程序,如果文本编辑程序有160K的代码和40K的数据区,则需要: (160+40)*40=8M的内存空间,如果160K的代码是可重入的,则在内存中只保存一个副本就可以了,则需要:160+40*40=1760K内存空间。段的共享与保护进程1页表ed1ed2…ed40data1data10…ed1ed2…ed40data1data10…2122…606170…2122…607180…进程2页表ed1ed2…ed40data1data10…主存editordata1data1data10……212260617007180editordata1段长16016040基址8080380editordata1data140240…80420240280380进程1进程2段表(a)分页系统中共享editor示意图(b)分段系统中共享editor示意图分页与分段分配方式共享代码段的比较进程1页表ed1ed2…ed40data1data10…ed1ed2…ed40data1data10…2122…606170…2122…607180…进程2页表ed1ed2…ed40data1data10…主存data1data10……212260617007180引入分段的理由:逻辑上的完整动态链接信息共享信息保护分页和分段的区别:页的大小是固定的,页的长度是由内存块长度决定的。段的长度是可变的,段的长度是由信息的长度决定的;分页的逻辑地址空间是一维的,分段的逻辑地址空间是二维的;分页存在内碎片,分段存在外碎片;逻辑地址分页分段7.3.3段页式存储管理方式分页存储管理能有效地提高内存的利用率,分段存储管理能很好地满足用户的需要,段页式存储管理则是分页和分段两种存储管理方式的结合,它同时具备了两者的优点。也继承了两者的缺点。
分段和分页都有各自的优势。分页对程序员来说是透明的,它消除了外部碎片,因而可以更有效地使用主存。它具有处理不断增长的数据的能力。分段是由程序员决定的,对段的共享及保护操作容易,支持动态链接等优势。把它们二者的优点结合起来,就形成了非常具有优势的“段页式存储管理”方式。7.3.3.1段页式管理原理程序员仍然按分段编程,逻辑地址是二维地址(段号,段内地址)。操作系统仍对内存用户区实施分块,物理地址由块号和块内地址组成(块号,块内地址)。操作系统对进程以段为单位进行分页,一个段被分成若干页,每一页刚好占一个内存块,内存里段和段之间可以不连续,一个段内的页和页之间也可以不连续。7.3.3.1段页式管理原理内存分配和回收虽然名叫段页式,其实内存并没有段的影子只有大小相同的块,块长度决定了页的长度。所以内存分配和回收与分页式管理是一样的。内存分配和回收操作简单,内存的利用率比分页式稍低一些,因为每一段的最后一页会有内碎片。这是继承了分页式的优点。7.3.3.1段页式管理原理地址映射首先研究逻辑地址在段页式中的变化。程序员编程时仍然是分段编程,所以逻辑地址仍是二维的,即段号和段内地址。操作系统以段为单位分页,就把段内地址分成两部分,即页号和页内地址,这样,逻辑地址变成(段号,页号,页内地址)。再来看物理地址,物理地址是(块号,块内地址),因为一块正好装入一页,所以,页7.3.3.1段页式管理原理内地址就等于块内地址。下面就要考虑段号和页号与块号之间的联系。因为以段为单位分页,所以每个段都要一个页表,页表每项装入对应的块号;每个进程分多个段,一个进程设置一个段表。段表项目内容与分段式中的段表内容不同,为了检查地址越界,一个段表项至少包括页表的长度和页表的起始地址。7.3.3.1段页式管理原理
主程序段04K8K12K15K16K子程序段04K8K数据段04K8K12K10K(a)一个进程地址空间的结构段号(s)段内页号(p)页内偏移量(d)(b)段页式地址结构的组成图7.2进程地址空间和地址结构段页式分配的地址变换图解
>=越界中断
+段页式存储的地址变换机构0123基址段号2页表长度页表+B1块号页号0123>=块内地址块号段号2页号2页内地址d段表地址段表长度段内地址YNYN7.3.3.1段页式管理原理从地址映射看到,为了计算内存物理地址需要两次访问内存(段表,页表),显然增加执行一条指令的时间,使进程执行时间延长,这是段页式管理天生缺陷,为了提高访问内存的速度,可以用增加快表的方法,利用高速缓冲内存存放段表和页表的子集,缩短计算物理地址的时间。7.3.3.1段页式管理原理内存共享和保护段页式管理吸取了分段式管理和分页式管理的优点,可以说在内存分配回收方面吸取了分页管理的优点,在内存共
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版牛粪有机肥生产加工合同规范4篇
- 二零二五年度新型农村电商服务合同规范文本4篇
- 二零二五年度美容美发产品研发及成果转化合同3篇
- 二零二五年度城市更新改造项目投资合同6篇
- 二零二五年度出国劳务派遣与职业技能提升培训合同3篇
- 房贷合同范本(2篇)
- 承包牛羊合同(2篇)
- 2025年度幕墙工程材料供应与配送合同4篇
- 2025年度农机维修服务网点加盟管理合同4篇
- 2025年欧派橱柜出口贸易合同4篇
- (正式版)CB∕T 4552-2024 船舶行业企业安全生产文件编制和管理规定
- JBT 14588-2023 激光加工镜头 (正式版)
- 2024年四川省成都市树德实验中学物理八年级下册期末质量检测试题含解析
- 九型人格与领导力讲义
- 廉洁应征承诺书
- 2023年四川省成都市中考物理试卷真题(含答案)
- 泵车述职报告
- 2024年山西文旅集团招聘笔试参考题库含答案解析
- 恢复中华人民共和国国籍申请表
- 管理期货的趋势跟踪策略 寻找危机阿尔法
- 沥青化学分析试验作业指导书
评论
0/150
提交评论