当前位置:文档之家› 第12章 内存管理

第12章 内存管理

第12章 内存管理
第12章 内存管理

第12章内存管理 (1)

12.0内存控制块 (2)

12.1建立一个内存分区,OSM EM C REATE() (3)

12.2分配一个内存块,OSM EM G ET() (5)

12.3释放一个内存块,OSM EM P UT() (6)

12.4查询一个内存分区的状态,OSM EM Q UERY() (7)

12.5U SING M EMORY P ARTITIONS (8)

12.6等待一个内存块 (9)

第12章内存管理

我们知道,在ANSI C中可以用malloc()和free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常小而且彼此又不相邻的内存区域,也就是内存碎片。由于这些碎片的大量存在,使得程序到后来连非常小的内存也分配不到。在4.02节的任务堆栈中,我们讲到过用malloc()函数来分配堆栈时,曾经讨论过内存碎片的问题。另外,由于内存管理算法的原因,malloc()和free()函数执行时间是不确定的。

在μC/OS-II中,操作系统把连续的大块内存按分区来管理。每个分区中包含有整数个大小相同的内存块,如同图F12.1。利用这种机制,μC/OS-II 对malloc()和free()函数进行了改进,使得它们可以分配和释放固定大小的内存块。这样一来,malloc()和free()函数的执行时间也是固定的了。

如图 F12.2,在一个系统中可以有多个内存分区。这样,用户的应用程序就可以从不同的内存分区中得到不同大小的内存块。但是,特定的内存块在释放时必须重新放回它以前所属于的内存分区。显然,采用这样的内存管理算法,上面的内存碎片问题就得到了解决。

图 F12.1 内存分区——Figure 12.1

图 F12.2 多个内存分区——Figure 12.2

12.0内存控制块

为了便于内存的管理,在μC/OS-II中使用内存控制块(memory control blocks)的数据结构来跟踪每一个内存分区,系统中的每个内存分区都有它自己的内存控制块。程序清单L12.1是内存控制块的定义。

程序清单 L12.1 内存控制块的数据结构

typedef struct {

void *OSMemAddr;

void *OSMemFreeList;

INT32U OSMemBlkSize;

INT32U OSMemNBlks;

INT32U OSMemNFree;

} OS_MEM;

.OSMemAddr是指向内存分区起始地址的指针。它在建立内存分区[见12.1节,建立一个内存分区,OSMemCreate()]时被初始化,在此之后就不能更改了。

.OSMemFreeList是指向下一个空闲内存控制块或者下一个空闲的内存块的指针,具体含义要根据该内存分区是否已经建立来决定[见12.1节]。

.OSMemBlkSize是内存分区中内存块的大小,是用户建立该内存分区时指定的[见12.1节]。.OSMemNBlks是内存分区中总的内存块数量,也是用户建立该内存分区时指定的[见12.1节]。

.OSMemNFree是内存分区中当前可以得空闲内存块数量。

如果要在μC/OS-II中使用内存管理,需要在OS_CFG.H文件中将开关量OS_MEM_EN设置为1。这样μC/OS-II 在启动时就会对内存管理器进行初始化[由OSInit()调用OSMemInit()实现]。

该初始化主要建立一个图 F12.3所示的内存控制块链表,其中的常数OS_MAX_MEM_PART(见文件OS_CFG.H)定义了最大的内存分区数,该常数值至少应为2。

图 F12.3 空闲内存控制块链表——Figure 12.3

12.1建立一个内存分区,OSMemCreate()

在使用一个内存分区之前,必须先建立该内存分区。这个操作可以通过调用OSMemCreate()函数来完成。程序清单 L12.2说明了如何建立一个含有100个内存块、每个内存块32字节的内存分区。

程序清单 L12.2 建立一个内存分区

OS_MEM *CommTxBuf;

INT8U CommTxPart[100][32];

void main (void)

{

INT8U err;

OSInit();

.

.

CommTxBuf = OSMemCreate(CommTxPart, 100, 32, &err);

.

.

OSStart();

}

程序清单 L12.3是OSMemCreate()函数的源代码。该函数共有4个参数:内存分区的起始地址、分区内的内存块总块数、每个内存块的字节数和一个指向错误信息代码的指针。如果OSMemCreate()操作失败,它将返回一个NULL指针。否则,它将返回一个指向内存控制块的指针。对内存管理的其它操作,象OSMemGet(),OSMemPut(),OSMemQuery()函数等,都要通过该指针进行。

每个内存分区必须含有至少两个内存块[L12.3(1)],每个内存块至少为一个指针的大小,因为同一分区中的所有空闲内存块是由指针串联起来的[L12.3(2)]。接着,OSMemCreate()从系统中的空闲内存控制块中取得一个内存控制块[L12.3(3)],该内存控制块包含相应内存分区的运行信息。OSMemCreate()必须在有空闲内存控制块可用的情况下才能建立一个内存分区

[L12.3(4)]。在上述条件均得到满足时,所要建立的内存分区内的所有内存块被链接成一个单向的链表[L12.3(5)]。然后,在对应的内存控制块中填写相应的信息[L12.3(6)]。完成上述各动作后,OSMemCreate()返回指向该内存块的指针。该指针在以后对内存块的操作中使用

[L12.3(6)]。

程序清单 L12.3 OSMemCreate()

OS_MEM *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err)

{

OS_MEM *pmem;

INT8U *pblk;

void **plink;

INT32U i;

if (nblks < 2) { (1)

*err = OS_MEM_INVALID_BLKS;

return ((OS_MEM *)0);

}

if (blksize < sizeof(void *)) { (2)

*err = OS_MEM_INVALID_SIZE;

return ((OS_MEM *)0);

}

OS_ENTER_CRITICAL();

pmem = OSMemFreeList; (3)

if (OSMemFreeList != (OS_MEM *)0) {

OSMemFreeList = (OS_MEM *)OSMemFreeList->OSMemFreeList;

}

OS_EXIT_CRITICAL();

if (pmem == (OS_MEM *)0) { (4)

*err = OS_MEM_INVALID_PART;

return ((OS_MEM *)0);

}

plink = (void **)addr; (5)

pblk = (INT8U *)addr + blksize;

for (i = 0; i < (nblks - 1); i++) {

*plink = (void *)pblk;

plink = (void **)pblk;

pblk = pblk + blksize;

}

*plink = (void *)0;

OS_ENTER_CRITICAL();

pmem->OSMemAddr = addr; (6)

pmem->OSMemFreeList = addr;

pmem->OSMemNFree = nblks;

pmem->OSMemNBlks = nblks;

pmem->OSMemBlkSize = blksize;

OS_EXIT_CRITICAL();

*err = OS_NO_ERR;

return (pmem); (7)

}

图 F12.4是OSMemCreate()函数完成后,内存控制块及对应的内存分区和分区内的内存块之间的关系。在程序运行期间,经过多次的内存分配和释放后,同一分区内的各内存块之间的链接顺序会发生很大的变化。

图 F12.4 OSMemCreate()——Figure

12.2 分配一个内存块,OSMemGet()

应用程序可以调用OSMemGet()函数从已经建立的内存分区中申请一个内存块。该函数的唯一参数是指向特定内存分区的指针,该指针在建立内存分区时,由OSMemCreate()函数返回。显然,应用程序必须知道内存块的大小,并且在使用时不能超过该容量。例如,如果一个内存分区内的内存块为32字节,那么,应用程序最多只能使用该内存块中的32字节。当应用程序不再使用这个内存块后,必须及时把它释放,重新放入相应的内存分区中[见12.03节,释放一个内存块,OSMemPut()]。

程序清单 L12.4是OSMemGet()函数的源代码。参数中的指针pmem指向用户希望从其中分配内存块的内存分区[L12.4(1)]。OSMemGet()首先检查内存分区中是否有空闲的内存块

[L12.4(2)]。如果有,从空闲内存块链表中删除第一个内存块[L12.4(3)],并对空闲内存块链表作相应的修改 [L12.4(4)]。这包括将链表头指针后移一个元素和空闲内存块数减

1[L12.4(5)]。最后,返回指向被分配内存块的指针[L12.4(6)]。

程序清单 L12.4 OSMemGet()

void *OSMemGet (OS_MEM *pmem, INT8U *err) (1)

{

void *pblk;

OS_ENTER_CRITICAL();

if (pmem->OSMemNFree > 0) { (2)

pblk = pmem->OSMemFreeList; (3)

pmem->OSMemFreeList = *(void **)pblk; (4)

pmem->OSMemNFree--; (5)

OS_EXIT_CRITICAL();

*err = OS_NO_ERR;

return (pblk); (6)

} else {

OS_EXIT_CRITICAL();

*err = OS_MEM_NO_FREE_BLKS;

return ((void *)0);

}

}

值得注意的是,用户可以在中断服务子程序中调用OSMemGet(),因为在暂时没有内存块可用的情况下,OSMemGet()不会等待,而是马上返回NULL指针。

12.3 释放一个内存块,OSMemPut()

当用户应用程序不再使用一个内存块时,必须及时地把它释放并放回到相应的内存分区中。这个操作由OSMemPut()函数完成。必须注意的是,OSMemPut()并不知道一个内存块是属于哪个内存分区的。例如,用户任务从一个包含32字节内存块的分区中分配了一个内存块,用完后,把它返还给了一个包含120字节内存块的内存分区。当用户应用程序下一次申请120字节分区中的一个内存块时,它会只得到32字节的可用空间,其它88字节属于其它的任务,这就有可能使系统崩溃。

程序清单 L12.5是OSMemPut()函数的源代码。它的第一个参数pmem是指向内存控制块的指针,也即内存块属于的内存分区[L12.5(1)]。OSMemPut()首先检查内存分区是否已满

[L12.5(2)]。如果已满,说明系统在分配和释放内存时出现了错误。如果未满,要释放的内存块被插入到该分区的空闲内存块链表中[L12.5(3)]。最后,将分区中空闲内存块总数加

1[L12.5(4)]。

程序清单 L12.5 OSMemPut()

INT8U OSMemPut (OS_MEM *pmem, void *pblk) (1)

{

OS_ENTER_CRITICAL();

if (pmem->OSMemNFree >= pmem->OSMemNBlks) { (2)

OS_EXIT_CRITICAL();

return (OS_MEM_FULL);

}

*(void **)pblk = pmem->OSMemFreeList; (3)

pmem->OSMemFreeList = pblk;

pmem->OSMemNFree++; (4)

OS_EXIT_CRITICAL();

return (OS_NO_ERR);

}

12.4 查询一个内存分区的状态,OSMemQuery()

在μC/OS-II 中,可以使用OSMemQuery()函数来查询一个特定内存分区的有关消息。通过该函数可以知道特定内存分区中内存块的大小、可用内存块数和正在使用的内存块数等信息。所有这些信息都放在一个叫OS_MEM_DATA的数据结构中,如程序清单 L12.6。

程序清单 L12.6 OS_MEM_DATA数据结构

typedef struct {

void *OSAddr; /* 指向内存分区首地址的指针 */

void *OSFreeList; /* 指向空闲内存块链表首地址的指针 */

INT32U OSBlkSize; /* 每个内存块所含的字节数 */

INT32U OSNBlks; /* 内存分区总的内存块数 */

INT32U OSNFree; /* 空闲内存块总数 */

INT32U OSNUsed; /* 正在使用的内存块总数 */

} OS_MEM_DATA;

程序清单 L12.7是OSMemQuery()函数的源代码,它将指定内存分区的信息复制到

OS_MEM_DATA定义的变量的对应域中。在此之前,代码首先禁止了外部中断,防止复制过程中某些变量值被修改[L12.7(1)]。由于正在使用的内存块数是由OS_MEM_DATA中的局部变量计算得到的,所以,可以放在(critical section中断屏蔽)的外面。

程序清单 L12.7 OSMemQuery()

INT8U OSMemQuery (OS_MEM *pmem, OS_MEM_DATA *pdata)

{

OS_ENTER_CRITICAL();

pdata->OSAddr = pmem->OSMemAddr; (1)

pdata->OSFreeList = pmem->OSMemFreeList;

pdata->OSBlkSize = pmem->OSMemBlkSize;

pdata->OSNBlks = pmem->OSMemNBlks;

pdata->OSNFree = pmem->OSMemNFree;

OS_EXIT_CRITICAL();

pdata->OSNUsed = pdata->OSNBlks - pdata->OSNFree; (2)

return (OS_NO_ERR);

}

12.5 Using Memory Partitions

图 F12.5是一个演示如何使用μC/OS-II中的动态分配内存功能,以及利用它进行消息传递[见第11章]的例子。程序清单 L12.8是这个例子中两个任务的示意代码,其中一些重要代码的标号和图 F12.5中括号内用数字标识的动作是相对应的。

第一个任务读取并检查模拟输入量的值(如气压、温度、电压等),如果其超过了一定的阈值,就向第二个任务发送一个消息。该消息中含有时间信息、出错的通道号和错误代码等可以想象的任何可能的信息。

错误处理程序是该例子的中心。任何任务、中断服务子程序都可以向该任务发送出错消息。错误处理程序则负责在显示设备上显示出错信息,在磁盘上登记出错记录,或者启动另一个任务对错误进行纠正等。

图 F12.5 使用动态内存分配——Figure 12.5

程序清单 L12.8 内存分配的例子——扫描模拟量的输入和报告出错

AnalogInputTask()

{

for (;;) {

for (所有的模拟量都有输入) {

读入模拟量输入值; (1)

if (模拟量超过阈值) {

得到一个内存块; (2)

得到当前系统时间 (以时钟节拍为单位); (3)

将下列各项存入内存块: (4)

系统时间 (时间戳);

超过阈值的通道号;

错误代码;

错误等级;

等.

向错误队列发送错误消息; (5)

(一个指向包含上述各项的内存块的指针)

}

}

延时任务,直到要再次对模拟量进行采样时为止;

}

}

ErrorHandlerTask()

{

for (;;) {

等待错误队列的消息; (6)

(得到指向包含有关错误数据的内存块的指针)

读入消息,并根据消息的内容执行相应的操作; (7)

将内存块放回到相应的内存分区中; (8)

}

}

12.6 等待一个内存块

有时候,在内存分区暂时没有可用的空闲内存块的情况下,让一个申请内存块的任务等待也是有用的。但是,μC/OS-II本身在内存管理上并不支持这项功能。如果确实需要,则可以通过为特定内存分区增加信号量的方法,实现这种功能(见7.05节,信号量)。应用程序为了申请分配内存块,首先要得到一个相应的信号量,然后才能调用OSMemGet()函数。整个过程见程序清单 L12.9。

程序代码首先定义了程序中使用到的各个变量[L12.9(1)]。该例中,直接使用数字定义了各个变量的大小,实际应用中,建议将这些数字定义成常数。在系统复位时,μC/OS-II调用OSInit()进行系统初始化[L12.9(2)],然后用内存分区中总的内存块数来初始化一个信号量

[L12.9(3)],紧接着建立内存分区[L12.9(4)]和相应的要访问该分区的任务[L12.9(5)]。当然,到此为止,我们对如何增加其它的任务也已经很清楚了。显然,如果系统中只有一个任务使用动态内存块,就没有必要使用信号量了。这种情况不需要保证内存资源的互斥。事实上,除非我们要实现多任务共享内存,否则连内存分区都不需要。多任务执行从OSStart()开始[L12.9(6)]。当一个任务运行时,只有在信号量有效时[L12.9(7)],才有可能得到内存块

[L12.9(8)]。一旦信号量有效了,就可以申请内存块并使用它,而没有必要对OSSemPend()返回的错误代码进行检查。因为在这里,只有当一个内存块被其它任务释放并放回到内存分区后,μC/OS-II才会返回到该任务去执行。同理,对OSMemGet()返回的错误代码也无需做进一步的检查(一个任务能得以继续执行,则内存分区中至少有一个内存块是可用的)。当一个任务不再使用某内存块时,只需简单地将它释放并返还到内存分区[L12.9(9)],并发送该信号量[L12.9(10)]。

程序清单 L12.9 等待从一个内存分区中分配内存块

OS_EVENT *SemaphorePtr; (1)

OS_MEM *PartitionPtr;

INT8U Partition[100][32];

OS_STK TaskStk[1000];

void main (void)

{

INT8U err;

OSInit(); (2)

.

.

SemaphorePtr = OSSemCreate(100); (3)

PartitionPtr = OSMemCreate(Partition, 100, 32, &err); (4)

.

OSTaskCreate(Task, (void *)0, &TaskStk[999], &err); (5)

.

OSStart(); (6)

}

void Task (void *pdata)

{

INT8U err;

INT8U *pblock;

for (;;) {

OSSemPend(SemaphorePtr, 0, &err); (7)

pblock = OSMemGet(PartitionPtr, &err); (8)

.

. /* 使用内存块 */

.

OSMemPut(PartitionPtr, pblock); (9)

OSSemPost(SemaphorePtr); (10)

} }

第3章 存储管理(1)答案

第五章内存管理(1) 一、单项选择题 1.存储管理的目的是。 A.方便用户 B.提高内存利用率 C.方便用户和提高内存利用率 D.增加内存实际容量 解:存储管理的目的有两个,一是方便用户,二是提高内存利用率。本题答案为C。2.把作业空间中使用的逻辑地址变为内存中物理地址称为。 A.加载 B.重定位 C.物理化 D.逻辑化 解:在一般情况下,一个作业在装入时分配到的内存空间和它的地址空间是不一致的,因此,作业在CPU上运行时,其所要访问的指令、数据的物理地址和逻辑地址是不同的。显然,如果在作业装入或执行时,不对有关的地址部分加以相应的修改,将会导致错误的结果。这种将作业的逻辑地址变为物理地址的过程称为地址重定位。本题答案为B。 3.为了保证一个程序在主存中改变了存放位置之后仍能正确执行,则对主存空间应采用技术。 A.静态重定位 B.动态重定位 C.动态分配 D.静态分配 解:动态重定位采用动态运行装入方式,可以保证一个程序在主存中改变了存放位置后仍能正确执行。本题答案为B。 4.在存储管理中采用交换与覆盖,目的是。 A.从物理上扩充内存、 B.实现主存共享 C.节省存储空间 D.提高内存利用率 解:采用交换与覆盖技术可以提高内存利用率。本题答案为D。 5.是指将作业不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据。 A.覆盖技术 B.交换技术 C.虚拟技术 D.物理扩充 解:本题答案为B。 6.分区分配内存管理方式的主要保护措施是。 A.界地址保护 B.程序代码保护 C.数据保护 D.栈保护 解:在分区分配内存管理方式中,主要用上、下界寄存器保护分区,也称为界地址保护。本题答案为A。 7.在固定分区分配中,每个分区的大小是。 A.相同。 B.随作业长度变化 C.可以不同但预先固定 D.可以不同但根据作业长度固定 解:在固定分区分配中,每个分区的大小可以不相等,但事先必须确定,运行时不能改变。本题答案为C。 8.在可变式分区存储管理中的拼接技术可以。 A.集中空闲分区 B.增加内存容量 C.缩短访问周期 D.加速地址转换 解:拼接是指通过移动将多个分散的小分区合并成一个大分区。本题答案为A。 9.在可变分区分配管理中,某一作业完成后,系统收回其内存空间,并与相邻区合并,为此修改空闲区说明表,造成空闲分区数减1的情况是。 A.无上邻空闲分区,也无下邻空闲分区 B.有上邻空闲分区,但无下邻空闲分区 C.有下邻空闲分区,但无上邻空闲分区

《现代操作系统第四版》第三章答案

第三章内存管理习题 1.IBM360有一个设计,为了对2KB大小的块进行加锁,会对每个块分配一个4bit的密钥,这个密钥存在PSW(程序状态字)中,每次内存引用时,CPU都会进行密钥比较。但该设计有诸多缺陷,除了描述中所言,请另外提出至少两条缺点。 A:密钥只有四位,故内存只能同时容纳最多十六个进程;需要用特殊硬件进行比较,同时保证操作迅速。 2.在图3-3中基址和界限寄存器含有相同的值16384,这是巧合,还是它们总是相等?如果这只是巧合,为什么在这个例子里它们是相等的? A:巧合。基地址寄存器的值是进程在内存上加载的地址;界限寄存器指示存储区的长度。 3.交换系统通过紧缩来消除空闲区。假设有很多空闲区和数据段随机分布,并且读或写32位长的字需要10ns的时间,紧缩128MB大概需要多长时间?为了简单起见,假设空闲区中含有字0,内存中最高地址处含有有效数据。 A:32bit=4Byte===>每字节10/4=2.5ns 128MB=1282^20=2^27Byte 对每个字节既要读又要写,22.5*2^27=671ms 4.在一个交换系统中,按内存地址排列的空闲区大小是10MB,4MB,20MB,18MB,7MB,9MB,12MB,和15MB。对于连续的段请求: (a) 12MB (b) 10MB (c) 9MB

使用首次适配算法,将找出哪个空闲区?使用最佳适配、最差适配、下次适配算法呢? A:首次适配算法:20MB,10MB,18MB;最佳适配算法:12MB,10MB,9MB;最差适配算法:20MB;18MB;15MB;下次适配算法:20MB;18MB;9MB; 5.物理地址和虚拟地址有什么区别? A:实际内存使用物理地址。这些是存储器芯片在总线上反应的数字。虚拟地址是指一个进程的地址空间的逻辑地址。因此,具有32位字的机器可以生成高达4GB的虚拟地址,而不管机器的内存是否多于或少于4GB。 6.对下面的每个十进制虚拟地址,分別使用4KB页面和8KB页面计算虚拟页号和偏移量:20000,32768,60000。 A:转换为二进制分别为:0100111000100000 虚拟地址应该是16位1000000000000000 1110101001100000 4KB页面偏移量范围0~4027,需要12位来存储偏移量,剩下4位作为页号;同理8KB页面需要13位来存储偏移量,剩下3位作为页号;所以,4KB | 8KB 页号| 偏移量| 页号| 偏移量20000 | 0100 111000100000 | 010 0111000100000 32768 | 1000 000000000000 | 100 0000000000000 60000 | 1110 101001100000 | 111 0101001100000 7. 使用图3-9的页表,给出下面每个虚拟地址对应的物理地址:

第3章 存储管理 练习题

第3章存储管理 3.1 计算机系统中的存储器 3.2 重定位 1.主存的地址空间常称为P39 ( C ) A.逻辑地址空间 B.程序地址空间 C.物理地址空间 D.相对地址空间 2.支持程序浮动的地址转换机制是P40 ( D ) A. 页式地址转换 B. 段式地址转换 C. 静态重定位 D. 动态重定位 3.要保证一个程序在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用下列 哪个技术。( B )A.静态重定位B.动态重定位C.动态分配D.静态分配 4.动态重定位是在下列哪种情况下完成的( C ) A. 作业执行前集中一次B.作业执行过程中集中一次 C.作业执行过程中D.作业执行过程中由用户完成 5.采用静态重定位方式装入的作业,在作业执行过程中进行地址转换的是( B ) A. 由软件和硬件相互配合 B. 由软件独立 C. 只需要硬件 D. 不需要 3.3 单用户连续存储管理 6.在以下存贮管理方案中,不适用于多道程序设计系统的是( A ) A. 单用户连续分配 B. 固定式分区分配 C. 可变式分区分配 D. 页式存贮管理 7.MS-DOS的内存空间采用的存储管理方式是( D )A.固定分区B.可变分区C.页式D.单连续 3.4 固定分区存储管理 8.采用固定分区方式管理主存储器的最大缺点是( B )A.不利于存储保护B.主存空间利用率不高 C.要有硬件的地址转换机构D.分配算法复杂 9.下面的存储管理方案中,可以采用静态重定位的是( A )A.固定分区B.可变分区C.页式D.段式 3.5 可变分区存储管理 10.每次分配时总是顺序查找空闲区表,找到第一个能满足作业长度要求的空闲区,此种分

《操作系统》习题集:第3章 存储管理

第3章存储管理-习题集 一、选择题 1.把作业空间中使用的逻辑地址变为内存中物理地址称为()。【*,★,联考】 A. 加载 B. 重定位 C. 物理化 D. 逻辑化 2.为了保证一个程序在主存中改变了存放位置之后仍能正确执行,则对主存空间应采用()技术。【*,★, 联考】 A. 静态重定位 B. 动态重定位 C. 动态分配 D. 静态分配 3.分区分配内存管理方式的主要保护措施是()。(注:分区包括“固定分区”和“可变分区”)【**,09 考研】 A. 界地址保护 B. 程序代码保护 C. 数据保护 D. 栈保护 4.分区管理要求对每一个作业都分配()的内存单元。【*,★,联考】 A. 地址连续 B. 若干地址不连续 C. 若干连续的块 D. 若干不连续的块 5.在固定分区分配中,每个分区的大小是()。【*,联考】 A. 相同 B. 随作业长度变化 C. 可以不同但预先固定 D. 可以不同但根据作业长度固定 6.在可变式分区存储管理中的拼接技术可以()。(注:拼接是指通过移动将多个分散的小分区合并成一个 大分区。)【*,★,联考】 A. 集中空闲分区 B. 增加内存容量 C. 缩短访问周期 D. 加速地址转换 7.可变式分区存储管理中,采用拼接技术的目的是()。【*,联考】 A. 合并空闲分区 B. 合并分配区 C. 增加主存容量 D. 便于地址转换 8.某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空),采用最佳适配算法,分配和释放的顺序 为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB,此时主存中最大空闲分区的大小是()。 【**,★,10考研】 A. 7MB B. 9MB C. 10MB D. 15MB 9.在分页存储管理中,主存的分配是()。【*,联考】 A. 以块为单位进行 B. 以作业的大小分配 C. 以物理段进行分配 D. 以逻辑记录大小进行分配 10.首次适应算法的空闲分区是()。【**,★,联考】 A. 按大小递减顺序连在一起 B. 按大小递增顺序连在一起 C. 按地址由小到大排列 D. 按地址由大到小排列 11.最佳适应算法的空闲分区是()。【**,联考】 A. 按大小递减顺序连在一起 B. 按大小递增顺序连在一起

操作系统考研复习 第三章内存管理

第三章存储器管理 1 源程序变为内存中可执行的程序需要经过哪些步骤?这些步骤分别有哪几种方式? A编译:源代码编译成目标模块.obj B链接:与库函数链接在一起,形成装入模块(静态链接、装入内存时动态链接、运行时动态链接) C装入:装入内存运行。有绝对装入(绝对地址)、可重定位装入(静态重定位;装入时地址重定位)、动态运行时装入(动态重定位;运行时地址重定位,需要重定位寄存器支持); 2 什么叫重定位?动态重定位特点是什么?(重定位的好处) 在存储器管理中什么是重定位?为什么要引进重定位技术?2014 当装入程序将可执行代码装入内存时,把逻辑地址转换成物理地址的过程,叫重定位。(一般没特殊说明,指的就是动态重定位) 1将程序分配到不连续的存储器中; 2只需投入部分代码即可运行; 3运行期间,根据代码需求动态申请内存; 4便于程序段的共享,可用向用户提供一个比存储空间大很多大地址空间。 3内存是如何进行保护的?(访问内存的地址是如何识别正确性的?) (内存保护是为了确保操作系统的地址区不受用户进程的影响) 使用重定位寄存器(含最小物理地址)和界地址寄存器(逻辑地址)来保护的。 首先将逻辑地址与界地址比较,小于则与重定位地址相加映射成物理地址;大于则出现越界中断。 4什么是覆盖技术、交换技术? 覆盖:把用户空间分成一个固定区和若干的覆盖区,经常活跃的放在固定区,其他按需要调入覆盖区。 覆盖优缺点:打破了将进程全部信息装入内存才能运行的限制; 当同时运行的程序代码量大于内存仍不能运行、并且用户需给出覆盖区的结构交换:即中级调度的进程的换入和换出。 (现在已经不使用覆盖技术,现在是通过虚拟存储技术来解决的) 1内存分配管理有哪些方式? 根据作业是否在同一分区划为连续分配和非连续分配。 A连续分配:1单一连续分配、2固定分区、3动态分区。 B非连续分配:1分页、2分段、3段页式(每个又根据是否使用虚拟内存技术分为基本和请求) 2简述连续分配管理的方式有哪些?优缺点有什么? A单一连续分配:分为系统区和用户区。无需内存保护。 优缺点:有内部碎片,内存利用率低,且只适用于单任务单用户的OS中。 B固定分区分配:将内存空间划分为固定大小区域,每个区域只装入一道作业。 缺点:程序太大放不进去、主存利用率低、产生内部碎片。 C动态分区分配:根据进程大小动态建立分区,使分区大小正好适应进程需要。 缺点:刚开始的时候是比较好的,后面会导致外部碎片的产生。 3什么是内部碎片?外部碎片、通过什么技术来解决? 内部碎片:程序小于固定分区大小,导致分区内部空间有剩余。 外部碎片:在分区外部产生难以使用的碎片。 外部碎片通过“紧凑”技术来解决。

第3章存储管理同步练习及答案

第3章存储管理 一、单项选择题 1.为避免主存中各种作业相互干扰,必须进行() A 重定位 B 地址映射 C 地址转换 D 存储保护 2.固定分区存储管理中,CPU在执行作业的指令时,均为核对不等式()是否成立,若不成立,则产生地址越界中断事件,终止该指令的执行。 A 界限地址≤绝对地址≤最大地址 B 下限地址≤绝对地址<上限地址 C 基址寄存器内容≤绝对地址≤限长寄存器内容 D 基址寄存器内容<绝对地址≤限长寄存器内容 3.在请求分页系统中,LRU算法是指()。 A 最早进入内存的页先淘汰 B 近期最长时间以来没被访问的页先淘汰 C 近期被访问次数最少的页先淘汰 D 以后再也不用的页面先淘汰 4.虚拟存储器是()。 A 可以提高计算机运算速度的设备 B 容量扩大了主存的实际空间 C 通过SPOOLING技术实现的 D 可以容纳和超出主存容量的多个作业同时运行的一个地址空间 5.下列存储管理方式中,相比而言,碎片最少,而且主存利用率最高的是()。 A 固定分区 B 可变分区 C 单用户连续存储管理 D 页式 6.采用可变分区存储管理主存时,使用移动技术可以()。 A 加快作业执行速度 B 集中分散的空闲区 C 扩大主存容量 D 加快地址转换 7.在一个请求页式存储管理中,一个程序的页面走向为4,3,2,1,4,3,5,4,3,2,1,5,并且采用LRU算法。设分配给程序的存储块数M分别为3和4,在访问总发生的缺页次数F为()。 A M=3,F=8;M=4,F=5 B M=3,F=10;M=4,F=8 C M=3,F=9;M=4,F=10 D M=3,F=7;M=4,F=6 8.单道系统中经常采用的存储管理方式是()存储管理。 A 固定分区 B 单用户连续 C 可变分区 D 页式 9.请求页式管理中,缺页中断率与进程所分得的内存页面数、()和进程页面流的走向等因素有关。 A 页表的地址 B 置换算法 C 外存管理算法 D 进程调度算法 10.下列存储管理方式中,一般采用静态重定位方式进行逻辑地址到物理地址转换的是()。 A 固定分区 B 段页式 C 可变分区 D 页式 11.下列管理方式中,能实现虚拟存储器的是()。 A 单用户连续方式 B 页式存储管理 C 固定分区D可变分区 12.所谓LFU页面置换算法,是指()。 A 驻留在内存中的页面随便挑选一页淘汰 B 将驻留在内存中时间最长的页页淘汰 C 将驻留在内存中最近最久未使用的一页淘汰 D 将驻留在内存中最近最不经常用的一页淘汰 13.页式存储管理中,每当CPU形成一个有效的地址时,则要查找页面。这一工作是由()实现的。 A 查表程序 B 存取控制 C 硬件自动 D 软件自动 14.设基址寄存器的内容为1000,在采用动态重定位的系统中,当执行指令“LOAD A 2000”时,操作数的实际地址是()。 A 1000 B 2000 C 3000 D 4000 15.虚拟内存的容量受到()的限制。

操作系统第三章 存储管理 期末测试复习题及答案

1、内存管理的主要目的是() A.方便用户 B.增加内存物理容量 C.方便用户和提高内存利用率 D.提高内存利用率 正确答案:C 2、关于内存管理,下列叙述中正确的是() A.内存保护的目的是限制内存的分配 B.若内存为M、用户数量为N,则分时系统中每个用户占用M/N的内存空间 C.在虚拟内存系统中,只要磁盘空间无限大,进程就能拥有任意大的地址空间 D.实现虚拟内存管理必须有相应的硬件的支持 正确答案:D 3、为保证进程空间不被非法访问,内存保护由()完成 A.操作系统独立完成 B.硬件机构独立完成 C.操作系统和硬件机构合作完成 D.操作系统或硬件机构独立完成 正确答案:C 4、为了进程在内存中改变了位置后仍能正确执行,则应采用( )技术。 A.静态重定位 B.动态重定位 C.编译或汇编 D.静态链接 正确答案:B

5、运行时重定位的缺点是()。 A.进程无法在内存中移动 B.进程必须连续存储 C.不利于代码共享 D.同一逻辑地址,可能需要多次转换为物理地址 正确答案:D 6、不适合多道程序设计的存储管理技术是() A.单一连续分配 B.固定分区分配 C.可变式分区分配 D.分页存储管理 正确答案:A 7、可变式分区存储管理中,实施拼接技术的目的是() A.集中空闲分区 B.增加物理内存 C.缩短访问时间 D.简化分配算法 正确答案:A 8、某动态分区存储管理系统,用户可用内存容量为55MB(初始为空闲)。若采用最 佳适配算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB,则内存中最大空闲分区的大小是() A.7MB B.9MB C.10MB D.11MB

第3章存储管理同步练习及答案

第3 章存储管理 一、单项选择题1.为避免主存中各种作业相互干扰,必须进行() A 重定位 B 地址映射 C 地址转换 D 存储保护 2.固定分区存储管理中,CPU 在执行作业的指令时,均为核对不等式()是否成立,若不成立,则产生地址越界中断事件,终止该指令的执行。 A界限地址w绝对地址w最大地址B下限地址w绝对地址V上限地址 C 基址寄存器内容w 绝对地址w 限长寄存器内容 D基址寄存器内容V绝对地址w限长寄存器内容 3?在请求分页系统中,LRU 算法是指()。 A 最早进入内存的页先淘汰 B 近期最长时间以来没被访问的页先淘汰 C 近期被访问次数最少的页先淘汰 D 以后再也不用的页面先淘汰4.虚拟存储器是()。 A 可以提高计算机运算速度的设备 B 容量扩大了主存的实际空间 C 通过SPOOLIN 技术实现的 D 可以容纳和超出主存容量的多个作业同时运行的一个地址空间5.下列存储管理方式中,相比而言,碎片最少,而且主存利用率最高的是()。 A 固定分区 B 可变分区 C 单用户连续存储管理 D 页式6.采用可变分区存储管理主存时,使用移动技术可以()。 A 加快作业执行速度 B 集中分散的空闲区 C 扩大主存容量 D 加快地址转换 7.在一个请求页式存储管理中,一个程序的页面走向为4,3,2,1,4,3,5, 4, 3, 2, 1, 5,并且采用LRU 算法。设分配给程序的存储块数M 分别为3 和4, 在访问总发生的缺页次数F为()。 A M=3,F=8;M=4,F=5 B M=3,F=10;M=4,F=8 C M=3,F=9;M=4,F=10 D M=3,F=7;M=4,F=6 8. 单道系统中经常采用的存储管理方式是()存储管理。 A 固定分区 B 单用户连续 C 可变分区 D 页式 9.请求页式管理中,缺页中断率与进程所分得的内存页面数、()和进程页面 流的走向等因素有关。 A 页表的地址 B 置换算法 C 外存管理算法 D 进程调度算法10.下列存储管理方式中, 一般采用静态重定位方式进行逻辑地址到物理地址转换的是()。 A 固定分区 B 段页式 C 可变分区 D 页式11.下列管理方式中, 能实现虚拟存储器的是()。 A 单用户连续方式 B 页式存储管理 C 固定分区 D 可变分区 12. 所谓LFU 页面置换算法,是指()。 A 驻留在内存中的页面随便挑选一页淘汰 B 将驻留在内存中时间最长的页页淘汰 C 将驻留在内存中最近最久未使用的一页淘汰 D 将驻留在内存中最近最不经常用的一页淘汰 13. 页式存储管理中,每当CPU 形成一个有效的地址时,则要查找页面。这一工作是由()实

第三章作业管理

第三章作业管理 3. 1 学习指导 操作系统为用户提供两个接口,一个是系统为用户提供的各种命令接口,用户利用这些操作命令来组织和控制作业的执行或管理计算机系统一个是程序接口,编程人员使用它们来请求操作系统服务。 按命令方式对作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。联机命令接口又称交互式命令接口,它由一组键盘操作命令组成。用户通过控制台或终端键入操作命令,向系统提出各种服务要求。在微机系统中,通常把键盘命令分为内部命令和外部命令两大类。脱机命令接口也称批处理命令接口,它是一组作业控制命令(或称作业控制语言)组成。脱机用户是指不能直接干预作业运行的用户,他们事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统,当系统调度到该作业时,由系统中的命令解释程序对作业说明书上的命令或作业控制语句逐条解释执行。 程序接口由一组系统调用组成。用户通过在程序中使用这些系统调用来请求操作系统提供的服务。所谓系统调用就是用户在程序中调用操作系统所提供的一些子功能。具体地讲,系统调用就是通过系统调用命令中断现行程序,而转去执行相应的子程序,以完成特定的系统功能。对操作系统而言,其所提供的系统调用命令条数、格式以及所执行的功能等都不尽相同。系统调用命令是为了扩充机器指令、增强系统功能、方便用户使用而提供的。因此,在一些计算机系统中,把系统调用命令称为广义指令。广义指令与机器指令在性质上是不同的,机器指令是用硬件线路直接实现的,而广义指令则是由操作系统提供的一个或多个子程序模块实现的。 用户使用操作系统的主要目的是作业处理。一个作业进入系统到运行结束,一般需经历收容、运行、完成三个阶段,与这三个阶段对应的作业处于后备、运行和完成三种状态。作业调度的主要功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和作业完成后的善后处理工作。常用的作业调度算法有:先来先服务、短作业优先、响应比高者优先、优先数优先等调度算法。衡量作业调度算法性能的主要指标有:作业的周转时间、作业的平均周转时间和平均带权周转时间。 本章的重点内容有:用户与操作系统之间的接口;作业的分类和作业控制;作业的状态及其转换;作业调度算法及周转时间、平均周转时间、平均带权周转时间的计算。 3. 2 学习自评 一、选择题 1.从控制角度看,用户作业分两大类,它们是。 A. 分时作业和实时作业 B. 单用户作业和多用户作业 C. 批处理作业和终端作业 D. 本地作业和远程作业 2.联机作业控制的特点是采用()的方式来进行作业控制。 A. 人机对话 B. 作业控制卡 C. 作业说明书 D. 命令文件 3.批处理作业的控制是由组成的。 A. 交互命令 B. 内部命令 C. 外部命令 D. 作业控制命令 4.用交互命令方式对作业的控制属。 A. 脱机作业控制 B. 联机作业控制 C. 既可对脱机作业进行控制,又可对联机作业进行控制 D. 不能对作业进行控制 5.作业调度的任务不是。

第3章 存储管理 练习题说课讲解

第3章存储管理练 习题

第3章存储管理 3.1 计算机系统中的存储器 3.2 重定位 1.主存的地址空间常称为P39 ( C ) A.逻辑地址空间 B.程序地址空间 C.物理地址空间 D.相对地址空间 2.支持程序浮动的地址转换机制是P40 ( D ) A. 页式地址转换 B. 段式地址转换 C. 静态重定位 D. 动态重定位 3.要保证一个程序在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用下 列哪个技术。 ( B ) A.静态重定位B.动态重定位C.动态分配D.静态分配 4.动态重定位是在下列哪种情况下完成的 ( C ) A. 作业执行前集中一次B.作业执行过程中集中一次 C.作业执行过程中D.作业执行过程中由用户完成 5.采用静态重定位方式装入的作业,在作业执行过程中进行地址转换的是 ( B ) A. 由软件和硬件相互配合 B. 由软件独立 C. 只需要硬件 D. 不需要 3.3 单用户连续存储管理 6.在以下存贮管理方案中,不适用于多道程序设计系统的是 ( A )

A. 单用户连续分配 B. 固定式分区分配 C. 可变式分区分配 D. 页式存贮管理 7.MS-DOS的内存空间采用的存储管理方式是 ( D ) A.固定分区B.可变分区C.页式 D.单连续 3.4 固定分区存储管理 8.采用固定分区方式管理主存储器的最大缺点是 ( B ) A.不利于存储保护B.主存空间利用率不高C.要有硬件的地址转换机构D.分配算法复杂 9.下面的存储管理方案中,可以采用静态重定位的是 ( A ) A.固定分区B.可变分区C.页式 D.段式 3.5 可变分区存储管理 10.每次分配时总是顺序查找空闲区表,找到第一个能满足作业长度要求的空闲区,此种 分配算法称为 ( A ) A. 最先适应分配算法 B. 最优适应分配算法 C. 最坏适应分配算法 D. 随机适应分配算法 11.在可变分区存储管理中,为了实现主存的空间分配,应设置 ( D ) A.页表B.段表C.位示图 D.空闲区表 12.在可变分区分配方案中,为了实现主存的空间分配,管理采用 ( D ) A.页表B.段表C.段表+页表D.分区分配表+空闲区表

第3章 存储管理习题

第3章存储管理习题 姓名: 学号: 一选择题 ( )1 可执行目标程序中的地址为(). A符号地址 B 相对地址 C 绝对地址 ( )2 在程序执行时进行地址映射称为(). A绝对装入 B 静态地址重定位 C 动态地址重定位 ( )3 在()存储管理中,必须采用动态地址重定位. A可变分区模式 B 单一分区模式 C 页模式 ( )4在下列内存管理方案中,不适合多道程序的是(). A单一连续模式 B 固定分区模式 C 可变分区模式 D 段页式存储管理模式 ( )5 下面关于虚存的说法正确的是(). A作业在运行前必须全部装入内存,并且在运行期间必须一直驻留在内存 B 作业在运行前不必全部装入内存,但在运行期间必须一直驻留在内存 C 作业在运行前必须全部装入内存,但在运行期间不必一直驻留在内存 D 作业在运行前不必全部装入内存,并且在运行期间不必一直驻留在内存 ( )6 以下()不可以提供虚存。 A、可变分区存储管理 B、页式存储管理 C、段式存储管理 D、段页式存储管理 ( )7、虚存的理论基础是()。 A、程序的局部性理论 B、代码的顺序执行 C、变量的连续访问 D、指令局部性 ( )8、虚存空间的最大容量()。 A、为内外存容量之和 B、由CPU与MMU间地址种总线宽度决定 C 、理论上是无限的 D、由程序大小决定 ( )9 内存利用率最高的内存管理模式是()。 A、页模式 B、段模式 C、段页式模式 D、可变分区 ( )10、以下()的进程逻辑地址空间是连续编址的。 A、页模式 B、段模式 C、段页式模式 D、稀疏页式 ( )11 下面程序设计技术和数据结构,对于请求分页的环境而言,()最好. A 栈 B hash表 C 纯代码 D 间接寻址 ()12、一般来说,分配的物理页越多,缺页中断率越低,但是以下()淘汰算法存在异常现象:对于某种页面流分配的内存越多缺页中断率反而越高。 A LRU B OPT C LFU D FIFO 二进程最多分配3个物理页(frame),并且已分配3个物理页面如下所示: page frame 装入时间最近访问时间访问位修改位 2 0 60 151 0 0 1 1 50 160 1 0 0 4 70 120 0 1 当进程访问第3页时,产生缺页中断,如果用FIFO算法,则淘汰的page是,如果用LRU算法,则淘汰的page是,如果用NRU算法(j近视LRU算法),则淘汰的page是。 三进程某时刻的页表如下,页面大小是1KB,虚地址1052和2221对应的页是否在内存?如 果在内存,物理地址是多少? 四一个源程序变成进程到执行要经过那几个阶段?在不同阶段中地址又有哪些变化? 五、对于简单分页系统 a 假设一个页表放在内存,如果一次内存访问用200ns,访问页面一次需要多少时间? b 如果采用TLB,并且85%的页面引用发生在TLB,内存的有效访问时间是多少?(假设访问TLB 占用0时间)

第3章存储器管理习题解答

第3章(大本)习题解答 一、填空 1.将作业相对地址空间的相对地址转换成内存中的绝对地址的过程称为 地址重定位 。 2.使用覆盖与对换技术的主要目的是 提高内存的利用率 。 3.存储管理中,对存储空间的浪费是以 内部碎片 和 外部碎片 两种形式表现出来的。 4.地址重定位可分为 静态重定位 和 动态重定位 两种。 5.在可变分区存储管理中采用最佳适应算法时,最好按 尺寸 法来组织空闲分区链表。 6.在分页式存储管理的页表里,主要应该包含 页号 和 块号 两个信息。 7.静态重定位在程序 装入 时进行,动态重定位在程序 执行 时进行。 8.在分页式存储管理中,如果页面置换算法选择不当,则会使系统出现 抖动 现象。 9.在请求分页式存储管理中采用先进先出(FIFO )页面淘汰算法时,增加分配给作业的块数时, 缺页中断 的次数有可能会增加。 10.在请求分页式存储管理中,页面淘汰是由于 缺页 引起的。 11.在段页式存储管理中,每个用户作业有一个 段 表,每段都有一个 页 表。 二、选择 1.虚拟存储器的最大容量是由 B 决定的。 A .内、外存容量之和 B .计算机系统的地址结构 C .作业的相对地址空间 D .作业的绝对地址空间 2.采用先进先出页面淘汰算法的系统中,一进程在内存占3块(开始为空),页面访问序列为1、2、3、4、1、2、5、1、2、3、4、5、6。运行时会产生 D 次缺页中断。 A .7 B .8 C .9 D .10 从图3-1中的“缺页计数”栏里可以看出应该选择D 。 1 2 3 4 1 2 5 1 2 3 4 5 6 √ √ √ √ √ √ √ √ √ 页面走向→ 3个内存块→ 缺页计数→ √ 图3-1 选择题2配图 3.系统出现“抖动”现象的主要原因是由于 A 引起的。 A .置换算法选择不当 B .交换的信息量太大 C .内存容量不足 D .采用页式存储管理策略 4.实现虚拟存储器的目的是 D 。 A .进行存储保护 B .允许程序浮动 C .允许程序移动 D .扩充主存容量 5.作业在执行中发生了缺页中断,那么经中断处理后,应返回执行 B 指令。 A .被中断的前一条 B .被中断的那条 C .被中断的后一条 D .程序第一条 6.在实行分页式存储管理系统中,分页是由 D 完成的。 A .程序员 B .用户 C .操作员 D .系统 7.下面的 A 页面淘汰算法有时会产生异常现象。

第3章存储管理答案

一、单项选择题 .存储管理地目地是. .方便用户.提高内存利用率 .方便用户和提高内存利用率.增加内存实际容量 解:存储管理地目地有两个,一是方便用户,二是提高内存利用率.本题答案为. .把作业空间中使用地逻辑地址变为内存中物理地址称为. .加载.重定位.物理化.逻辑化 解:在一般情况下,一个作业在装入时分配到地内存空间和它地地址空间是不一致地,因此,作业在上运行时,其所要访问地指令、数据地物理地址和逻辑地址是不同地.显然,如果在作业装入或执行时,不对有关地地址部分加以相应地修改,将会导致错误地结果.这种将作业地逻辑地址变为物理地址地过程称为地址重定位.本题答案为.个人收集整理勿做商业用途 .为了保证一个程序在主存中改变了存放位置之后仍能正确执行,则对主存空间应采用技术. .静态重定位.动态重定位.动态分配.静态分配 解:动态重定位采用动态运行装入方式,可以保证一个程序在主存中改变了存放位置后仍能正确执行.本题答案为.个人收集整理勿做商业用途 .在存储管理中采用交换与覆盖,目地是. .从物理上扩充内存、.实现主存共享 .节省存储空间.提高内存利用率 解:采用交换与覆盖技术可以提高内存利用率.本题答案为. .是指将作业不需要或暂时不需要地部分移到外存,让出内存空间以调入其他所需数据. .覆盖技术.交换技术.虚拟技术.物理扩充 解:本题答案为. .分区分配内存管理方式地主要保护措施是. .界地址保护.程序代码保护.数据保护.栈保护 解:在分区分配内存管理方式中,主要用上、下界寄存器保护分区,也称为界地址保护.本题答案为. .在固定分区分配中,每个分区地大小是. .相同. .随作业长度变化 .可以不同但预先固定.可以不同但根据作业长度固定 解:在固定分区分配中,每个分区地大小可以不相等,但事先必须确定,运行时不能改变.本题答案为. .在可变式分区存储管理中地拼接技术可以. .集中空闲分区.增加内存容量 .缩短访问周期.加速地址转换 解:拼接是指通过移动将多个分散地小分区合并成一个大分区.本题答案为. .在可变分区分配管理中,某一作业完成后,系统收回其内存空间,并与相邻区合并,为此修改空闲区说明表,造成空闲分区数减地情况是.个人收集整理勿做商业用途.无上邻空闲分区,也无下邻空闲分区 .有上邻空闲分区,但无下邻空闲分区 .有下邻空闲分区,但无上邻空闲分区 .有上邻空闲分区,也有下邻空闲分区

第3章 存储管理 练习题

3.1 计算机系统中的存储器 3.2 重定位 1.主存的地址空间常称为P39 (C ) A.逻辑地址空间 B.程序地址空间 C.物理地址空间 D.相对地址空间 2. 3. 4.支持程序浮动的地址转换机制是P40 (D ) A. 页式地址转换 B. 段式地址转换 C. 静态重定位 D. 动态重定位 5.要保证一个程序在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用下列 哪个技术。(B )A.静态重定位B.动态重定位C.动态分配D.静态分配 6.动态重定位是在下列哪种情况下完成的(C ) A. 作业执行前集中一次B.作业执行过程中集中一次 C.作业执行过程中D.作业执行过程中由用户完成 7.采用静态重定位方式装入的作业,在作业执行过程中进行地址转换的是(B ) A. 由软件和硬件相互配合 B. 由软件独立 C. 只需要硬件 D. 不需要 3.3 单用户连续存储管理 8.在以下存贮管理方案中,不适用于多道程序设计系统的是(A ) A. 单用户连续分配 B. 固定式分区分配 C. 可变式分区分配 D. 页式存贮管理 9.MS-DOS的内存空间采用的存储管理方式是(D )A.固定分区B.可变分区C.页式D.单连续 3.4 固定分区存储管理 10.采用固定分区方式管理主存储器的最大缺点是(B )A.不利于存储保护B.主存空间利用率不高 C.要有硬件的地址转换机构D.分配算法复杂 11.下面的存储管理方案中,可以采用静态重定位的是(A )A.固定分区B.可变分区C.页式D.段式

12.每次分配时总是顺序查找空闲区表,找到第一个能满足作业长度要求的空闲区,此种分 配算法称为(A ) A. 最先适应分配算法 B. 最优适应分配算法 C. 最坏适应分配算法 D. 随机适应分配算法 13.在可变分区存储管理中,为了实现主存的空间分配,应设置(D )A.页表B.段表C.位示图D.空闲区表 14.在可变分区分配方案中,为了实现主存的空间分配,管理采用(D )A.页表B.段表 C.段表+页表D.分区分配表+空闲区表 15.在可变式分区存储管理中,某作业完成后要收回其主存空间,该空间可能与相邻空闲区 合并,在修改空闲区表时使空闲区数不变且空闲区起始地址不变的情况是(C )A.无上邻空闲区也无下邻空闲区B.有上邻空闲区但无下邻空闲区 C.无上邻空闲区但有下邻空闲区D.有上邻空闲区也有下邻空闲区 16.在一个可变分区存储管理中,最坏适应分配算法宜将空闲区表中的空闲区按下列次序排 列的是(D )A.地址递增B.地址递减C.长度递增D.长度递减 17.可变分区方式常用的主存分配算法有:最先适应、最优适应和最坏适应分配算法,其中, 按分区大小排序组织空闲区表的是(B ) A. 最先适应和最坏适应 B. 最优适应和最坏适应 C. 最先适应和最优适应 D. 最先适应、最优适应和最坏适应 3.6 页式虚拟存储管理 18.实现虚拟存储器的目的是(A )A.扩充主存容量B.扩充辅存容量C.实现存储保护D.加快存取速度 19.分页式存储管理时,每读写一个数据,要访问主存(B ) A. 1次 B. 2次 C. 3次 D. 4次 20.在存储管理的各方案中,可扩充主存容量的管理方案是(D ) A. 固定式分区分配 B. 可变式分区分配 C. 页式存储管理 D. 分页虚拟存储管理 21.页式存储管理中的页表是由(C ) A. 用户建立 B. 编译程序建立 C. 操作系统建立 D. 编辑程序建立

第3章 存储管理(3)答案

第3章 内存管理(3) 一、单项选择题 1.虚拟存储技术是 。 A .补充内存物理空问的技术 B .补充相对地址空间的技术 C .扩充外存空问的技术 D .扩充输入输出缓冲区的技术 解:虚拟存储技术并没有实际扩充内、外存,而是采用相关技术相对的扩充主存。本题答案为B 。 2.以下不属于虚拟内存特征的是 。 A .一次性 B .多次性 C .对换性 D .离散性 解:多次性、对换性和离散性都是虚拟内存的特征。本题答案为A 。 3.虚拟内存的基础是 。 A .局部性理论 B .代码的顺序执行 C .变量的连续访问 D .指令局部性 解:虚拟内存的基础是局部性理论,包括程序执行的局部性和存储空间访问的局部性。 本题答案为A 。 4.实施虚拟存储器管理的依据是程序的 。 A .局部性原 B .动态性原理 C .并发性原 D .一致性原理 解:同上题说明。本题答案为A 。 5.实现虚拟内存最主要的技术是 。 A .整体覆盖 B .整体对换 C .部分对换 D .多道程序设计 解:虚拟存储器具有多次性、对换性和虚拟性,而内、外存数据交换(对换)是基础。 本题答案为C 。 6.虚拟存储器是 。 A .可以容纳总和超过主存容量的多个作业同时运行的一个地址空间 B .可提高计算机运算速度的设备 C .容量扩大了的主存 D .实际上不存在的存储器 解:虚拟存储器的最大容量是由计算机的地址结构确定的,可以运行大于实际内存大 小的作业。本题答案为A 。 7.若处理器有32位地址,则它的虚拟地址空间为 字节。 A .2GB B .4GB C .100KB D .640KB 解:虚拟存储器的最大容量是由计算机的地址结构确定的,其虚拟地址空间=32 2 B=4GB 。 本题答案为B 。 8.设主存容量为1MB ,外存容量为400MB ,计算机系统的地址寄存器有24位,那么虚存的最大容量是 。 A .1M B B .401MB C .1MB+24 2 B D .24 2 B 解:虚拟存储器的最大容量是由计算机的地址结构确定的,其虚拟地址空间=24 2B 。 本题答案为D 。

相关主题
文本预览
相关文档 最新文档