1、页表页表内存空间内存空间进程进程01p页号页号k0块号块号b0b1bp01m页号页号外部页表外部页表页表的页号页表的页号 块号块号 0 C0 1 C1 c0c1cm进程的页号进程的页号 块号块号 1.两级页表的引入两级页表的引入pbp0b01b1没装入内存之前的进程、页表、外部页表没装入内存之前的进程、页表、外部页表页表页表*离散存放在内存离散存放在内存C0、C1、等块中等块中.内存空间内存空间k0块号块号b0b1bp外部页表外部页表*连续存放在内连续存放在内存存K0 及后续块中及后续块中.页表的页号页表的页号 块号块号 0 C0 1 C1 1023 C1023c0c1cm内存中的进程、页表、
2、外部页表内存中的进程、页表、外部页表进程进程*离散存放在内存离散存放在内存b0、b1、等块中等块中.b0b1023b1024b2047b1设页大小为设页大小为4KB页表项大小为页表项大小为4B2.逻辑地址结构逻辑地址结构页号页号P页内地址页内地址d3112 110页内地址页内地址d外部页号外部页号P1外部页内地址外部页内地址P231222112 110CPU给出:给出:32位线性地址位线性地址进程地址空间分页:进程地址空间分页:进程页表分页:进程页表分页:设设:逻辑地址为逻辑地址为32位,页大小为位,页大小为4KB,每个页表项占,每个页表项占4B页表页表 表项序号表项序号 块号块号 b00pb
3、p外部页表外部页表 表项序号表项序号 块号块号 0 C0 p1 Cp1 bp内存空间内存空间块号块号Cp1bpp进程进程0页号页号LAp10页表页序号页表页序号01p2bp外部页号外部页号P1外部页内地址外部页内地址P231222112110页内地址页内地址d逻辑地址逻辑地址LA C0 Cp1 10231024第第p1个页表页个页表页表项表项序号序号11逻辑地址逻辑地址04K4K-1:3.地址变换过程:地址变换过程:外部页表外部页表外部页表外部页表寄存器寄存器物理地址物理地址外部页号外部页号P1外部页内地址外部页内地址P2页内地址页内地址d页表分页页表分页块号块号 块内地址块内地址外部外部块号
4、块号页号页号块号块号页号页号外部页表外部页表始址、长度始址、长度外部外部页号页号块块号号01122435外部页表外部页表10物理地址物理地址外部页号外部页号P1外部页内地址外部页内地址P2页内地址页内地址d块号块号 块内地址块内地址内存内存5#块块(页表(页表3#分页)分页)外部页表外部页表寄存器寄存器00000000110000000001000000001010页号页号块号块号3072 153073 164095 80016 外部页表始址外部页表始址 长度长度 基本分页总结基本分页总结 优点:优点: 存在页内碎片,但碎片相对较小,内存利用率较高存在页内碎片,但碎片相对较小,内存利用率较高
5、实现了离散分配,消除了程序移动;实现了离散分配,消除了程序移动; 缺点:缺点: 需要专门的硬件支持,尤其需要专门的硬件支持,尤其“快表快表”; 页面共享实现困难,不支持动态链接。页面共享实现困难,不支持动态链接。 主要是为了满足用户和程序员的下述需要:主要是为了满足用户和程序员的下述需要: (1)方便编程)方便编程 (2)方便信息共享与信息保护)方便信息共享与信息保护 (3)便于动态链接)便于动态链接 (4)便于动态增长)便于动态增长mainf1data内存内存1.作业分段作业分段 由编程人员或编译器由编程人员或编译器将程序按信息的逻辑含将程序按信息的逻辑含义分为若干段:义分为若干段: 每个段
6、有段名(段号);每个段有段名(段号); 每个段长度可以不同;每个段长度可以不同; 每个段在内存中连续存每个段在内存中连续存放,但段与段之间不必放,但段与段之间不必相邻。相邻。code(0)data (1)stack (2)代码代码数据数据堆栈堆栈 2.2.逻辑逻辑地址结构地址结构stack (2)code(0)data (1)3k-108k-10015k-1段号段号段内地址段内地址二维的逻辑地址二维的逻辑地址1000mov eax,(1:500)500-150mov指令的地址:指令的地址: 0:1000操作数的地址:操作数的地址: 1:500(1)每个段在段表中占一个表项;)每个段在段表中占一
7、个表项;(2)记录段在内存的基址、段长、存取权限等信息。)记录段在内存的基址、段长、存取权限等信息。第第1 1段段第第2 2段段第第0 0段段第第1 1段段第第2 2段段20k20k50k50k65k65k内存空间内存空间 段表段表段号段号段长段长 段基址段基址015k20k17k65k23k50k 3.3.段表段表第第0 0段段进程空间进程空间段号段号段长段长 段基址段基址 段表寄存器段表寄存器存放段表的起始地址和段表长度;存放段表的起始地址和段表长度; 越界检查越界检查逻辑地址的段号与段表长度比较;逻辑地址的段号与段表长度比较;段内地址与段表中保存的段长比较。段内地址与段表中保存的段长比较
8、。段表始址段表始址段表长度段表长度(3)段表寄存器段表寄存器段号段号 1段内地址段内地址500逻辑地址逻辑地址越界中断越界中断段表段表基址基址段长段长50K3k65K7k20K15k210段号段号67060物理地址物理地址内存内存 假如一个作业的段表如下。分别说明下面指令执假如一个作业的段表如下。分别说明下面指令执行时,地址转换的情况。行时,地址转换的情况。(1)STORE R1,0,70 ; (2)STORE R1, 1,20 (3)LOAD R1,3,100; (4)JMP 2,100段号段号内存内存始址始址段长段长存取存取控制控制0500 100RW1100030R23000 200E3
9、800080 R4500040RW:可写可写;R:可读可读;E:可执行。可执行。(1) 0,70 500+70=570(2) STORE R1, 1,20 :存取控制不符,硬件将存取控制不符,硬件将产生保护性中断信号。产生保护性中断信号。 (3) 3,100 :段内地址超:段内地址超过了段长,产生越界中过了段长,产生越界中断信号。断信号。(4)2,100 3000+100=3100 (1)页是信息的物理单位,段是信息的逻辑)页是信息的物理单位,段是信息的逻辑单位;单位;(2)页的大小固定,段的大小可变;)页的大小固定,段的大小可变;(3)分页系统中的逻辑地址空间是一维的,)分页系统中的逻辑地址
10、空间是一维的,分段系统中的是二维的。分段系统中的是二维的。 基本思想基本思想结合分页和分段技术,先分段后分页结合分页和分段技术,先分段后分页分页:有效提高内存利用率分页:有效提高内存利用率分段:很好的满足用户需求分段:很好的满足用户需求 原理原理对用户作业先分段,各段再分页;对用户作业先分段,各段再分页;对内存按页大小分成若干物理块对内存按页大小分成若干物理块/页框。页框。 地址结构与地址变换地址结构与地址变换二维的逻辑地址(段号、段内地址)二维的逻辑地址(段号、段内地址)段内地址可进一步划分为段内页号,页内地址段内地址可进一步划分为段内页号,页内地址每个进程一张段表和若干张页表每个进程一张段
11、表和若干张页表 1.1.作业分段作业分段:按信息的逻辑含义进行,每个段有段名。按信息的逻辑含义进行,每个段有段名。2. 段内分页段内分页3k-10stack (2)8k-10data (1)015k-1Main(0)00132103210Main(0段)段)015K-1100008K12K-11000001180840950段段2#页页3. 地址结构地址结构逻辑地址(逻辑地址(0,10000)0,10000)010000021808 二维地址结构二维地址结构3. 地址结构地址结构段号段号页内地址页内地址0151631段内页号段内页号12 11段号段号段内地址段内地址0151631段内分页段内分
12、页:4.4.段表及页表段表及页表进程地址空间进程地址空间11190 1段页表段页表 3段页表段页表12003k-10stack (2)页号页号01 23015k-1Main(0)108k-10data (1) 0段页表段页表622110块号块号页号页号83段表段表段段号号页表页表长度长度页表页表始址始址012032M0段段0页页0段段1页页1段段1页页0段段3页页0段段2页页1段段0页页2段段0页页8192块号块号01 2345678910111213内存空间内存空间421 5.5.地址转换机构地址转换机构段表寄存器段表寄存器逻辑地址逻辑地址(0,10000)块号块号 块内地址块内地址物理地址
13、物理地址越界中断越界中断0218081808 0段页表段页表211062块号块号页号页号83段表段表段段号号页表页表长度长度页表页表始址始址0412216内存内存(26384)访问一个数据需访问一个数据需3 3次访问内存。次访问内存。 5.5.地址转换机构地址转换机构段表寄存器段表寄存器逻辑地址逻辑地址(0,10000)块号块号 块内地址块内地址物理地址物理地址越界中断越界中断0218081808 0段页表段页表211062块号块号页号页号83段表段表段段号号页表页表长度长度页表页表始址始址0412216输入寄存器输入寄存器快表快表段段号号页页号号块块号号026038109 段页式存储管理的优
14、缺点段页式存储管理的优缺点 同时具备分段和分页管理的优点:分散存储,同时具备分段和分页管理的优点:分散存储,内存利用率较高;便于代码或数据共享,支持内存利用率较高;便于代码或数据共享,支持动态链接等。动态链接等。 访问效率下降:一次访问转换成了三次访问。访问效率下降:一次访问转换成了三次访问。 地址线为地址线为20根,即物理地址为根,即物理地址为20位;位; 内存空间不超过内存空间不超过1M; 字长为字长为16位;位; 分段存储管理方式:分段存储管理方式: 每段长度不超过每段长度不超过216B; 段表用寄存器的方式来实现:段表用寄存器的方式来实现:CS代码段内存基址代码段内存基址DS数据段内存
15、基址数据段内存基址SS堆栈段内存基址堆栈段内存基址DOS规定:段在内存的起始地址的低规定:段在内存的起始地址的低4位必须为位必须为0。内存内存datastackcode代码代码数据数据堆栈堆栈的高的高16位位的高的高16位位的高的高16位位 二维的逻辑地址二维的逻辑地址: seg:off 逻辑地址逻辑地址 seg24+off 物理地址物理地址ADOS系统,系统,C语言中地址语言中地址的两种表达方式:的两种表达方式: 指针指针 :如:如 char *p; 用两个无符号整数用两个无符号整数seg:off分别表示段内存基址的高分别表示段内存基址的高16位,和段内偏移位,和段内偏移: 如如 0X100
16、:0X20Turbo C中两种方式可以中两种方式可以互相转化:互相转化:p=MK_FP(seg,off);seg=FP_SEG(p);off=FP_OFF(p).data00X20 A内存内存0X1000p0X1020char c=A;char *p; p=&c;c0X100:0X20 逻辑地址逻辑地址 -段标识符段标识符(16b )和偏移量和偏移量(32b) 如:如:CS:EIP;DS:EDI等等 线性地址线性地址 -一个一个32位的无符号整数,可以位的无符号整数,可以用来表示高达用来表示高达4GB的地址的地址 物理地址物理地址 -内存地址,也是内存地址,也是32位的位的 逻辑地址 线性地址
17、 物理地址 如果不分页,那么线性地址就是物理地址段地址转换段地址转换页地址转换页地址转换1.段地址转换段地址转换 每个进程的代码段和数据段均存放在自己每个进程的代码段和数据段均存放在自己的的局部空间局部空间中,这部分信息通常不允许他中,这部分信息通常不允许他人访问,这样可防止一个进程破坏另一个人访问,这样可防止一个进程破坏另一个进程的信息。进程的信息。 也有一些段允许被多个进程共享访问(比也有一些段允许被多个进程共享访问(比如如OS中的某些资源,像中断处理程序等),中的某些资源,像中断处理程序等),称它们为称它们为全局段全局段。 每个段必须用一个段描述符(每个段必须用一个段描述符(8B)来描述
18、,)来描述,段描述符中有段在内存的基地址、段长度、段描述符中有段在内存的基地址、段长度、段的特权级别和访问权限等信息。段描述段的特权级别和访问权限等信息。段描述符被存放在符被存放在全局描述符表全局描述符表GDT或或局部描述局部描述符表符表LDT中。中。 整个系统只定义一个整个系统只定义一个GDT,其中存放有允,其中存放有允许多个进程共同访问的那些段的描述符。许多个进程共同访问的那些段的描述符。 每个进程的局部空间的段的所有段描述符每个进程的局部空间的段的所有段描述符集中存放在一张表中,这张表为该进程的集中存放在一张表中,这张表为该进程的局部描述符表(局部描述符表(LDT),也就是进程的段),也
19、就是进程的段表。表。 内存内存 GDT的起始地址和长度由的起始地址和长度由CPU的寄存器的寄存器gdtr给出:给出: 47 16 15 0基址基址 限长限长段描述符段描述符GDT GDTRINDEX01数据段数据段代码段代码段进程进程P数据段描述符数据段描述符代码段描述符代码段描述符进程进程P的的LDTP的的LDT描述符描述符GDT INDEX 000LDTR15 3 02.段描述符段描述符 每个段描述符有每个段描述符有8个字节,根据个字节,根据S位位(第(第5字节的第字节的第4位)的取值将段描述符分位)的取值将段描述符分成普通的段描述符(包括数据段描述符和成普通的段描述符(包括数据段描述符和
20、代码段描述符)和控制描述符(也叫系统代码段描述符)和控制描述符(也叫系统描述符)两类。描述符)两类。3.普通段描述符普通段描述符类型类型限长限长19160XG段基址段基址3124段基址段基址2316段基址段基址150段限长段限长150A1PDPL0473 31 24 16 S 8 7 0访问权限字节访问权限字节G 粒度位,粒度位,0表示限长以字节为单位,表示限长以字节为单位,1表示限长以页表示限长以页4KB为单位为单位X 1表示表示32位的地址或操作数,位的地址或操作数,0表示表示16位的地址或操作位的地址或操作数P访问权限字节访问权限字节DPLS1EDE0AWCE1ARE=0数据段数据段E=
21、1代码段代码段P 存在位存在位DPL 特权级别特权级别E 可执行与否可执行与否ED 扩充方向,扩充方向,0向上扩充(偏移向上扩充(偏移限长)限长)W 可写与否可写与否R 可读与否可读与否A 段是否被访问过段是否被访问过C 一致性(证实)代码段与否一致性(证实)代码段与否4.二级分页管理(略)二级分页管理(略)作作业业: :P159:5,6,7,12,15,26 补充作业:补充作业:1.什么叫重定位?它有哪两种方式?这两种方式有什什么叫重定位?它有哪两种方式?这两种方式有什么区别?么区别?2.某系统采用动态分区分配方式管理内存,内存空间某系统采用动态分区分配方式管理内存,内存空间为为640K,高
22、端,高端40K用来存放操作系统。在内存分配用来存放操作系统。在内存分配时,系统优先使用空闲区低端的空间。对下列的请时,系统优先使用空闲区低端的空间。对下列的请求序列:作业求序列:作业1申请申请130K、作业、作业2申请申请60K、作业、作业3申请申请100K、作业、作业2释放释放60K、作业、作业4申请申请200K、作、作业业3释放释放100K、作业、作业1释放释放130K、作业、作业5申请申请140K、作业、作业6申请申请60K、作业、作业7申请申请50K、作业、作业6释放释放60K,请分别画图表示出,使用首次适应算法和最佳适,请分别画图表示出,使用首次适应算法和最佳适应算法进行内存分配和回
23、收后,内存的实际使用情应算法进行内存分配和回收后,内存的实际使用情况况.3.请求分页管理系统中,假设某进程的页表内容如下表所示:页面大小为4KB,一次内存的访问时间是100ns,一次快表(TLB)的访问时间是10ns,处理一次缺页的平均时间为108ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用LRU置换算法和局部淘汰策略。假设TLB初始为空;地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。页号页框(Page Frame)号有效位(存在位)0101H1102254H1 设有虚地址访问序列2362H、1565H、25A5H,请问: (1) 依次访问上述三个虚地址,各需多少时间?给出计算过程。 (2) 基于上述访问序列,虚地址1565H的物理地址是多少?请说明理由。