操作系统复习题 联系客服

发布时间 : 星期一 文章操作系统复习题更新完毕开始阅读9ee0f7270066f5335a812145

0k 20k 28k 60k 180k

(1) 内存分区图 os 1 2 3 4

区号 大小 1 2 3 4 8k 32k 120k 331k 起址 20k 28k 60k 180k 状态 未分配 未分配 未分配 未分配

解:根据分区说明表,给4个作业分配分区,同时修改分区说明表,其内存分配和分区说明表如下所示:

分区说明表: 内存分配图(见第四章PPT第27页)

区号 大小 1 2 3 4 8k 32k 120k 331k 起址 20k 28k 60k 180k 状态 已分配 已分配 已分配 已分配

(3)主存浪费空间=(8-1)+(32-9)+(120-33)+(331-121) =7+23+87+210=327(k) 例题

在可变分区存储管理下,按地址排列的内存空闲区为:100KB、500KB、200KB、300KB

和600KB。现有若干用户程序,其所需内存依次分别为212KB、417KB、112KB和426KB,分别用首次适应算法、最佳适应算法、最坏适应算法,将它们装入到内存的哪些空闲分区?哪个算法能最有效利用内存? 解:采用首次适应算法

程序 空闲区 新空闲区 212KB 500KB 288KB 417KB 600KB 183KB 112KB 288KB 176KB 426KB,无法装入内存 区号 1 2 3 4 5 大小 100k 500k 200k 300k 600K 状态 未分配 未分配 未分配 未分配 未分配

解:采用最佳适应算法 区号 1 2 3 4 5 大小 100k 200k 300k 500k 600K 状态 未分配 未分配 未分配 未分配 未分配

程序 空闲区 新空闲区 212KB 300KB 88KB 417KB 500KB 83KB 112KB 200KB 88KB 426KB 600KB 174KB

类似的分析可知,最坏适应算法也不能将426KB的程序装入内存。

例题: (华中科技大学2001)某操作系统采用可变分区分配存储管理方法,用户区大小为512K且初始值为0,用空闲分区表管理空闲分区。若分配时采用分配空闲区低地址部分的方案,且初始时用户区的512K空间空闲,对于下列申请序列:

申请300K,申请100K,释放300K,申请150K,申请30K,申请40K,申请60K,释放30K

回答下列问题:

(1)请分别画出采用首次适应算法、最佳适应算法进行内存分配和回收后的内存使用状态。

(2)如果再申请100K,针对上述两种算法会有什么结果?

例题解答如下:见ppt

例1:

某型微机的页面大小是1KB(1024B),现该微机正在执行的进程中有一条指令: load a,2500 请问:在内存的什么位置可以找到该逻辑地址所对应的数据?假定块号0的初始物理地址为0。

逻辑地址的分解

若逻辑地址为A,页面大小为L,则页号P和页内地址d可按下式求得: P=int(A/L) d=A mod L

举例说明 页面大小为4KB,逻辑地址为7800及5F86H,分别求它们的页号和页内偏移。 计算过程如下:load a,2500

A、页号P=INT(逻辑地址/页面大小)=INT(2500/1024)=2 B、页内地址d =2500 MOD 1024=452

C、查页表 假定页号2对应的物理块是块5 D、物理地址为:

块号×页大小+页内地址=5×1024+452=5572 即:将5572这个物理地址里面的数据取出来放在a寄存器里 注意:本题的前提条件是块号0的初始物理地址为0,如果不 是0,该怎么办?

练习题

1.设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048B,内存总共有8个存储块。试问逻辑地址至少应为多少位?内存空间有多大?

2.在一分页存储管理系统中,逻辑地址长度为16位,页面大小为4096B,现有一逻辑地址为2FA6H,且第0、1、2页依次存放在物理块5、10、11中,问相应的物理地址为多少?

硬件能自动分离出页号和页内地址,但我们只能通过计算才能得到。计算时要注意: (1)逻辑地址以十六进制、八进制、二进制的形式给出 将逻辑地址转换成二进制的数;

按页的大小分离出页号和页内地址(低位部分是页内地址,高位部分是页号); 根据题意产生页表;

将页内地址直接复制到物理地址的低位部分; 以页号查页表,得到对应页装入内存的块号,并将块号转换成二进制数填入地址的高位部分,从而形成内存物理地址。 0 1 5 10 2 11

逻辑地址2FA6H=0010 1111 1010 1110B

4096B=212 页内地址占低12位,高位为页号 页号P=2 页内地址d=1111 1010 1110 查页表知第2页装入内存第11块中,11=1011B 物理地址=1011 1111 1010 1110=BFA6H

(2)逻辑地址以十进制数给出

按下列公式计算出页号和页内地址 页号=逻辑地址%页大小

页内地址=逻辑地址 mod 页大小 根据题意产生页表;

以页号查页表,得到对应页装入内存的块号 内存地址=块号×页大小+页内地址

例2:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145转换成内存地址。

逻辑地址7145

页号P=7145 % 2048 =3

页内地址d=7145 mod 2048=1001 查页表知第3页装入内存第5块中 物理地址=5*2048+1001=11241

假如:有32位逻辑地址空间的分页系统,规定页面大小为4KB, (212B),则页表项达1M个,假定每个页表项占用1B,故每个 进程的页表占用1MB内存空间,而且还要求是连续的,显然这是 不现实的。

采用离散分配方式来解决难于找到一块连续的大内存空间的问题。

【例】以32位逻辑地址空间为例,当页面大小为4KB(12位)时,采用两级页表结构时,再对页表分页,使每个页中包含210(1024)个页表项,则最多有1024个页表页,即外部页表中页号P1为10位,外部页表中的外部页内地址P2是10位。其逻辑地址结构如下: