操作系统概念学习笔记——第八章练习题

8.1 请指出内部碎片和外部碎片的区别。

内部碎片:分配给进程的内存空间大于其所需的内存空间,这两部分的差值就是内部碎片。系统无法利用这部分空间,直到进程释放它。

外部碎片:系统中剩余的内存空间总和可以满足进程请求,但是由于这部分空间不连续,导致其并不能分配给进程,无法利用。

8.2 

8.3 

8.4 大多数系统允许程序在执行时可以为自己的地址空间分配更多的空间。程序的堆段的数据分配就是这样的实例。在下面的方案中支持动态内存分配需要什么?

a. 连续内存分配:动态内存分配时所需空间增加,而原先分配空间不足,需要重新分配整个程序的内存空间。

b. 纯分段:当前程序段所需空间超过原先分配空间时,需要重新分配整个段空间。

c. 纯页式:分配空间不足时,可以增加页。

8.5 针对以下问题,比较连续内存分配、纯分段和纯分页的内存组织方案。

a. 外部碎片 b. 内部碎片 c. 能够跨进程共享代码

连续内存分配会产生外部碎片和内部碎片,并且不能够跨进程共享代码;纯分段也会产生外部碎片和内部碎片,但是可以跨进程共享代码,比如共享程序段;纯分页可以避免外部碎片,但是内部碎片还是存在,并且也可以跨进程共享代码。

8.6 对于分页系统,进程无法访问它所不拥有的内存。为什么?操作系统如何才能允许访问其他的内存?为什么应该或不应该?

进程要访问内存,首先要获得内存地址,分页进制下需要通过查询页表获得,页表是由操作系统建立的,页表上并不会有进程不拥有的页表项(或者相应项设置为无效),当然也就无法访问。操作系统只需要将相应的页添加到进程页表中(相应项设置为有效),进程就可以访问。通过这种方法进程间可以通信,是很必要的。

8.7 请解释为什么移动操作系统(如IOS和Android)不支持交换。

因为移动设备通常采用闪存,闪存的空间有限,写入次数也有限制,此外内存和闪存之间存在吞吐量差。

8.8

8.9 针对地址转换结构需要的内存量以便将虚拟地址转换为物理地址,比较分页与分段。

页式存储需要更大的内存量实现地址转换,因为页式存储每一页都需要一个映射,所以页表明显比段表要大。

8.10 请解释为什么使用地址空间标识符(Address Space Identifier,ASID)

ASID唯一标识每个进程,为进程提供地址空间保护,当TLB试图解析虚拟页码时,它确保当前运行进程的ASID与虚拟页相关的ASID相匹配;采用ASID的话在进行上下文切换时,操作系统不用刷新TLB缓存,允许多个进程的条目同时存在,因为可以用ASID区分。

8.11 

8.12

8.13 

8.14 

8.15 

8.18 为什么分段和分页有时组合成一个方案。

分段和分页最大的差别在于粒度。分段和分页都是为了解决在内存管理中出现的问题,如地址空间的隔离、内存碎片等问题,采用分段机制可以有效实现地址空间的隔离,但是内部碎片和外部碎片问题存在,而分页机制可以实现隔离同时有效解决外部碎片问题,并且在地址空间很大时,段式存储十分有用。两者结合可以更好的管理内存空间。

8.19 请解释为什么使用分段比使用分页更容易共享可重入模块。

分段机制是以内存的逻辑共享为基础的,对于一个内存段,在各进程的段表中只要一个地址映射,而分页的页表中需要对每个页面进行映射。

8.20 

8.21 页表分页的目的

可以节省页表内存空间,可以离散存储页表。

你可能感兴趣的:(linux,windows)