答案: 一、外部碎片 • 连续内存分配:在这种方式下,外部碎片可能较为严重。因为一旦为某个程序分配了连续的内存空间,那么在这段空间被释放之前,即使它中间有部分空闲(比如程序实际使用的空间小于分配的空间),这部分空闲也无法被其他程序使用,从而形成外部碎片。如果多个这样的空闲区域分散存在,而每个又都无法满足新程序的内存需求时,就会导致外部碎片问题加剧。 • 纯分段:纯分段存储管理也会产生外部碎片。因为每段的大小是不固定的,由用户程序决定,所以当内存中的空闲区域无法满足某个段的大小时,即使这些空闲区域的总和足够大,也会因为不连续而无法被利用,从而形成外部碎片。 • 纯分页:纯分页系统通过固定大小的页面来划分内存和进程地址空间,这有助于减少外部碎片。因为当一个小程序只需要少量内存时,它可以只占用一个或多个页面,而剩下的页面可以被其他程序使用。这样,内存的使用就变得更加灵活和高效,外部碎片问题相对较轻。 二、内部碎片 • 连续内存分配:在连续内存分配中,内部碎片通常发生在为程序分配的空间大于程序实际需要的空间时。这部分多余的空间在程序运行期间无法被利用,从而形成内部碎片。 • 纯分段:纯分段存储管理同样存在内部碎片问题。因为每段的大小是根据用户程序来划分的,所以有可能出现段的大小大于程序实际需要的空间的情况,这时段内就会有空闲空间无法被利用,形成内部碎片。 • 纯分页:在纯分页系统中,由于页面大小是固定的,所以内部碎片问题相对较为固定和可控。当程序的实际大小不是页面大小的整数倍时,最后一个页面可能只会部分被使用,从而形成内部碎片。但这种碎片的大小是固定的,且由于页面大小通常设计得相对合理,所以内部碎片问题并不会太严重。 三、能够跨进程共享代码 • 连续内存分配:在连续内存分配中,由于内存空间是连续分配的,所以跨进程共享代码相对困难。每个进程都有自己独立的内存空间,要实现跨进程共享代码需要额外的机制(如内存映射文件等)。 • 纯分段:纯分段存储管理便于实现代码的共享。因为每段都包含了一组相对完整的逻辑信息(如程序段、数据段等),所以可以通过设置段表项来实现多个进程对同一段代码的共享。这有助于节省内存空间并提高程序的运行效率。 • 纯分页:纯分页系统虽然也可以实现跨进程共享代码,但相对于分段来说要复杂一些。因为分页是基于固定大小的页面来划分的,所以要实现跨进程共享代码需要确保多个进程都映射到相同的页面集合上,这通常需要通过操作系统提供的共享内存机制来实现。