(3)。首先从内存划分、程序逻辑地址划分、内存分配几方面考虑段式存储管理方案的工作原理:+ L+ w/ B( V$ U0 m: q- r
①内存划分:内存空间被动态地划分为若干个长度不相同的区域,每个区域称作一个物理段、每个物理段在内存中有一个起始地址,称作段首址。将物理段中的所有单元从0开始依次编址,称为段内地址。(2分)$ k/ @" {1 r0 Q1 h. s2 c; v
②逻辑地址空间划分:用户程序按逻辑上有完整意义的段来划分。称为逻辑段。例如主程序、子程序、数据等都可各成一段,每段对应于一个过程,一个程序模块或一个数据集合。将一个用户程序的所有逻辑段从0开始编号,称为段号。将一个逻辑段中的所有单元从0开始编址,称为段内地址。(2分)
`: O* {% ^% [) d用户程序的逻辑地址由段号和段内地址两部分组成:段号,段内地址
# g: F0 f% R; A$ K* L; T③内存分配:系统以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区 (物理段)。逻辑上连续的段在内存不一定连续存放。(2分) 然后,从实现方法上考虑:
8 u- D# g# w$ N8 V3 q1 s④建立段表(2分)
' ]9 T2 H! h$ F9 a( {" {系统为每个用户程序建立一张段表,用于记录用户程序的逻辑段与内存物理段之间的对应关系,包括逻辑段号,物理段首地址和物理段长度三项内容。用户程序有多少逻辑段,该段表里就登记多少行,且按逻辑段的顺序排列。段表存放在内存系统区里。5 b* |) L$ i0 }: N! q, ]8 M
⑤建立空闲区表(6分)
5 V+ f/ L6 D$ c# @0 q8 y o4 U系统中设立一张内存空闲区表,记录内存中空闲区域情况,用于为段分配和回收内存。系统在寻找空闲区时可采用以下三种分配算法。6 D1 @+ H" i+ ]# ~ |8 b, I
①首先适应算法& w5 e6 n1 o6 i: Q) |! W
根据申请,在空闲区表中选取第一个满足申请长度的空闲区。此算法简单,可以快速做出分配决定。" ?+ r& E/ n/ N* k* S3 P
②最佳适应算法
0 |) F9 @/ g, U& K根据申请,在空闲区表中选择能满足申请长度的最小空闲区。此算法最节约空间,因为 它尽量不分割大的空闲区。其缺点是可能会形成很多很小的空闲区域,称作碎片。
9 z0 T1 P5 B1 h6 l0 ~③最坏适应算法+ J2 D& ]! r% t& R7 c/ m$ V
根据申请,在空闲区表中选择能满足申请要求的最大的空闲区。该算法的出发点是:在大空头区中装人信息后,分割剩下的空闲区相对也大,还能用于装入新的信息。该算法的优点是可以避免形成碎片;缺点是分割大的空闲区后,再遇到较大的申请时,无法满足的可能性较大。
7 {3 `4 a" P: Y' k4 q5 [4.目前,大多数计算机系统都支持虚拟页式地址转换机制。试回答下列问题:9 B$ t8 g0 U6 I* m7 t; N# T; l
(1)。页式存储管理方案中,用户地址空间怎样划分?内存地址空间怎样划分?内存分配过程是怎样的?(10分)1 R, C9 P2 X9 o4 k4 h
(2)。页表应设计哪些数据项,每个数据项的作用是什么?(10分) |