页眉内容 第7章 内存管理
复习题:
7.1. 内存管理需要满足哪些需求?
答:重定位、保护、共享、逻辑组织和物理组织。 7.2. 为什么需要重定位进程的能力?
答:通常情况下,并不能事先知道在某个程序执行期间会有哪个程序驻留在主存中。此外还希望通过提供一个巨大的就绪进程池,能够把活动进程换入和换出主存,以便使处理器的利用率最大化。在这两种情况下,进程在主存中的确切位置是不可预知的。 7.3. 为什么不可能在编译时实施内存保护?
答:由于程序在主存中的位置是不可预测的,因而在编译时不可能检查绝对地址来确保保护。并且,大多数程序设计语言允许在运行时进行地址的动态计算(例如,通过计算数组下标或数据结构中的指针)。因此,必须在运行时检查进程产生的所有存储器访问,以便确保它们只访问了分配给该进程的存储空间。 7.4. 允许两个或多个进程访问进程的某一特定区域的原因是什么?
答:如果许多进程正在执行同一程序,则允许每个进程访问该程序的同一个副本要比让每个进程有自己单独的副本更有优势。同样,合作完成同一任务的进程可能需要共享访问同一个数据结构。
7.5. 在固定分区方案中,使用大小不等的分区有什么好处?
答:通过使用大小不等的固定分区:1.可以在提供很多分区的同时提供一到两个非常大的分区。大的分区允许将很大的进程全部载入主存中。2.由于小的进程可以被放入小的分区中,从而减少了内部碎片。 7.6. 内部碎片和外部碎片有什么区别?
答:内部碎片是指由于被装入的数据块小于分区大小而导致的分区内部所浪费的空间。外部碎片是与动态分区相关的一种现象,它是指在所有分区外的存储空间会变成越来越多的碎片的。
7.7. 逻辑地址、相对地址和物理地址间有什么区别?
答:逻辑地址是指与当前数据在内存中的物理分配地址无关的访问地址,在执行对内存的访问之前必须把它转化成物理地址。相对地址是逻辑地址的一个特例,是相对于某些已知点(通常是程序的开始处)的存储单元。物理地址或绝对地址是数据在主存中的实际位置。
7.8. 页和帧之间有什么区别?
答:在分页系统中,进程和磁盘上存储的数据被分成大小固定相等的小块,叫做页。而主存被分成了同样大小的小块,叫做帧。一页恰好可以被装入一帧中。 7.9. 页和段之间有什么区别?
答:分段是细分用户程序的另一种可选方案。采用分段技术,程序和相关的数据被划分成一组段。尽管有一个最大段长度,但并不需要所有的程序的所有段的长度都相等。
习题:
7.1. 2.3节中列出了内存管理的5个目标,7.1节中列出了5中需求。请说明它们是一致
的。
答: 重定位≈支持模块化程序设计; 保护≈保护和访问控制以及进程隔离; 共享≈保护和访问控制;
逻辑组织≈支持模块化程序设计;
1
页眉内容
物理组织≈长期存储及自动分配和管理.
考虑使用大小相等分区的固定分区方案。分区大小为2e16字节,贮存的大小为2e24字节。使用一个进程表来包含每一个进程对应的分区。这个指针需要多少位?
答:分区的数量等于主存的字节数除以每个分区的字节数:224/216 = 28. 需要8个比特来确定一个分区大小为28中的某一个位置。
考虑动态分区方案,说明平均内存中空洞的数量是段数量的一半。
答: 设n和h为断数量和空洞数量的个数.在主存中,每划分一个断产生一个空洞的概率是0.5,因为删除一个断和添加一个断的概率是一样的.假设s是内存中断的个数那么空洞的平均个数一定等于s/2.而导致空洞的个数一定小余断的数量的直接原因是相邻的两个断在删除是一定会产生一个空洞. 在实现动态分区中的各种放置算法(见7.2节),内存中必须保留一个空闲块列表。分别讨论最佳适配、首次适配、临近适配三种方法的平均查找长度。
答:通过上题我们知道,假设s是驻留段的个数,那么空洞的平均个数是s/2。从平均意义上讲,平均查找长度是s/4。
动态分区的另一种放置算法是最坏适配,在这种情况下,当调入一个进程时,使用最大的空闲存储块。该方法与最佳适配、首次适配、邻近适配相比,优点和缺点各是什么?它的平均查找长度是多少?
答:一种对最佳适配算法的评价即是为固定分配一个组块后和剩余空间是如此小以至于实际上已经没有什么用处。最坏适配算法最大化了在一次分配之后,剩余空间的大小仍足够满足另一需求的机率,同时最小化了压缩的概率。这种方法的缺点是最大存储块最早被分配,因此大空间的要求可能无法满足。
如果使用动态分区方案,下图所示为在某个给定的时间点的内存配置: 阴影部分为已经被分配的块;空白部分为空闲块。接下来的三个内存需求分别为40MB,20MB和10MB。分别使用如下几种放置算法,指出给这三个需求分配的块的起始地址。 a. 首次适配 b. 最佳适配
c. 临近适配(假设最近添加的块位于内存的开始) d. 最坏适配 答:
a. 40M的块放入第2个洞中,起始地址是80M. 20M的块放入第一个洞中.起始地址是20M. 10M的块的起始地址是120M。
b. 40M,20N,10M的起始地址分别为230M,20M和160M.
7.2.
7.3.
7.4.
7.5.
7.6.
c. 40M,20M,10M的起始地址是80M,120160M.
d. 40M,20M,10M,的起始地址是80M,230M,360M.
页眉内容
7.7. 使用伙伴系统分配一个1MB的存储块。
a. 利用类似于图7.6的图来说明按下列顺序请求和返回的结果:请求70;请求35;
请求80;返回A;请求60;返回B;返回D;返回C。 b. 给出返回B之后的二叉树表示。 答: a.
b.
7.8. 考虑一个伙伴系统,在当前分配下的一个特定块地址为0.
a. 如果块大小为4,它的伙伴的二进制地址为多少? b. 如果块大小为16,它的伙伴的二进制地址为多少? 答: a. 0 b. 0
k
7.9. 令buddyk(x)为大小为2、地址为x的块的伙伴的地址,写出buddyk(x)的通用表达式。
3
操作系统第五版答案第7章内存管理
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)