(3)。首先从内存划分、程序逻辑地址划分、内存分配几方面考虑段式存储管理方案的工作原理:& q1 d. Z9 y I! e1 T: C
①内存划分:内存空间被动态地划分为若干个长度不相同的区域,每个区域称作一个物理段、每个物理段在内存中有一个起始地址,称作段首址。将物理段中的所有单元从0开始依次编址,称为段内地址。(2分)% c! D& Y0 Q0 q3 ]$ j( O& t
②逻辑地址空间划分:用户程序按逻辑上有完整意义的段来划分。称为逻辑段。例如主程序、子程序、数据等都可各成一段,每段对应于一个过程,一个程序模块或一个数据集合。将一个用户程序的所有逻辑段从0开始编号,称为段号。将一个逻辑段中的所有单元从0开始编址,称为段内地址。(2分), u; p" ]* L( _) D O: K
用户程序的逻辑地址由段号和段内地址两部分组成:段号,段内地址
3 ^3 l7 @- c1 s% {- P j2 \6 V- R, t③内存分配:系统以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区 (物理段)。逻辑上连续的段在内存不一定连续存放。(2分) 然后,从实现方法上考虑:+ ?( a& |, q! V1 n9 w; t& e
④建立段表(2分)& U2 q( m, X) p0 o5 Y4 J2 j. ]
系统为每个用户程序建立一张段表,用于记录用户程序的逻辑段与内存物理段之间的对应关系,包括逻辑段号,物理段首地址和物理段长度三项内容。用户程序有多少逻辑段,该段表里就登记多少行,且按逻辑段的顺序排列。段表存放在内存系统区里。2 ~# Q$ E7 A+ z' o; o
⑤建立空闲区表(6分)3 B' G& `: Q; y5 ?0 Y
系统中设立一张内存空闲区表,记录内存中空闲区域情况,用于为段分配和回收内存。系统在寻找空闲区时可采用以下三种分配算法。: ~$ T1 t" J) B3 e5 e
①首先适应算法1 r8 o9 J- A# }; g2 c' N
根据申请,在空闲区表中选取第一个满足申请长度的空闲区。此算法简单,可以快速做出分配决定。 o2 L0 E% x" p" v7 o
②最佳适应算法, _! G' Y% h' l$ U2 o% w) j# ]8 @
根据申请,在空闲区表中选择能满足申请长度的最小空闲区。此算法最节约空间,因为 它尽量不分割大的空闲区。其缺点是可能会形成很多很小的空闲区域,称作碎片。
; j4 ]9 _) e: ~' m& Q/ u$ c③最坏适应算法 I/ x. Y+ l8 G! q) G% O3 z* Q
根据申请,在空闲区表中选择能满足申请要求的最大的空闲区。该算法的出发点是:在大空头区中装人信息后,分割剩下的空闲区相对也大,还能用于装入新的信息。该算法的优点是可以避免形成碎片;缺点是分割大的空闲区后,再遇到较大的申请时,无法满足的可能性较大。& d* B$ T3 ]& d; @
4.目前,大多数计算机系统都支持虚拟页式地址转换机制。试回答下列问题:
8 I+ S, s6 \. B# n! P. ^(1)。页式存储管理方案中,用户地址空间怎样划分?内存地址空间怎样划分?内存分配过程是怎样的?(10分)3 Z* G" Z. G. K1 E Y
(2)。页表应设计哪些数据项,每个数据项的作用是什么?(10分) |