操作系统习题5—存储管理
1、采用可变分区管理存储空间时,若主存中按地址顺序依次有五个空闲区,大小分别为 15K、28K、10K、226K、110K。现有五个作业 J1 到 J5,它们所需的主存空间依次是 10K、15K、102K、26K、180K。问分别用 first-fit, best-fit 和 worst-fit 算法将它们装入到内存的哪个分区?能否把这五个作业按 J1 到 J5 的次序全部装入内存?使用哪种分配算法可使内存的利用率最高?
① First-fit 算法:每次为作业分配第一个不小于其所需空间的空闲区。
作业编号 | 作业装入详情 |
---|---|
J1 | 装入第一空闲区,第一空闲区剩余大小为 5K |
J2 | 装入第二空闲区,第二空闲区剩余大小为 13K |
J3 | 装入第四空闲区,第四空闲区剩余大小为 124K |
J4 | 装入第四空闲区,第四空闲区剩余大小为 98K |
J5 | 找不到内存空间足够的空闲区 |
结果:使用 First-fit 算法不能将这五个作业全部装入内存
② Best-fit 算法:每次为作业分配第一个最接近的且不小于其所需空间的空闲区。
作业编号 | 作业装入详情 |
---|---|
J1 | 装入第三空闲区,第三空闲区剩余大小为 0K |
J2 | 装入第一空闲区,第一空闲区剩余大小为 0K |
J3 | 装入第五空闲区,第五空闲区剩余大小为 8K |
J4 | 装入第二空闲区,第二空闲区剩余大小为 2K |
J5 | 装入第四空闲区,第四空闲区剩余大小为 46K |
结果:使用 Best-fit 算法可以将这五个作业全部装入内存
③ Worst-fit 算法:每次为作业分配最大的空闲区。
作业编号 | 作业装入详情 |
---|---|
J1 | 装入第四空闲区,第四空闲区剩余大小为 216K |
J2 | 装入第四空闲区,第四空闲区剩余大小为 201K |
J3 | 装入第四空闲区,第四空闲区剩余大小为 99K |
J4 | 装入第五空闲区,第五空闲区剩余大小为 84K |
J5 | 找不到内存空间足够的空闲区 |
结果:使用 Worst-fit 算法不能将这五个作业全部装入内存
综上所述,使用 Best-fit 分配算法能使内存的利用率最高。
2、若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为 1024 字节,试将逻辑地址 1011,2148,4000,5012 转化为相应的物理地址。
设页面为 P,页面位移为 W,逻辑地址为 A,内存地址为 M,页面大小为 L。P=int(A/L),W=A mod L
① 逻辑地址 1011
P = int(1011/1024) = 0
W= 1011 mod 1024 = 1011
A = 1011 = (0,1011)
查阅页表可知,第 0 页在第 2 物理块,物理地址 M = 1024*2+1011 = 3059
② 逻辑地址 2148
P = int(2148/1024) = 2
W = 2148 mod 1024 =100
A = 2148 = (2,100)
查阅页表可知,第 2 页在第 1 物理块,物理地址 M = 1024*1+100 = 1124
③ 逻辑地址 4000
P = int(4000/1024) = 3
W = 4000 mod 1024 = 928
A = 4000 = (3,928)
查阅页表可知,第 3 页在第 6 物理块,物理地址 M = 1024*6+928 = 7072
④ 逻辑地址 5012
P = int(5012/1024) = 4
W = 5012 mod 1024 = 916
页号超过页表长度,该逻辑地址非法
3、某虚拟存储器的用户编程空间共 32 个页面,每页为 1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下,请计算逻辑地址 0A5C(H)所对应的绝对地址。
逻辑地址 0A5C(H)转换成十进制为 2652(D)
页面 P = (2652/1024) = 2
页面位移 W = 2652 mod 1024 = 604
逻辑地址 A = 2652 = (2, 604)
查阅页表可知,第 2 页在第 4 物理块,物理地址 M = 1024*4+604 = 4700
物理地址 4700(D)转换成 16 进制为 125C(H)
所以,绝对地址为 125C(H)
4、某采用页式虚拟存储管理的系统,接收了一个共 7 页的作业,作业执行时依次访问的页为:1、2、3、4、2、1、5、6、2、1、2、3、7。当内存块数量为 4 时,请分别用先进先出(FIFO)调度算法和最近最少使用(LRU)调度算法,计算作业执行过程中会产生多少次缺页中断?写出依次产生缺页中断后应淘汰的页(要求写出计算过程)。
① FIFO 算法
访问页面 | 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 3 | 3 |
物理块2 | 2 | 2 | 2 | 2 | 2 | 2 | 6 | 6 | 6 | 6 | 6 | 7 | |
物理块3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | ||
物理块4 | 4 | 4 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | |||
是否缺页 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | |||
淘汰页 | 1 | 2 | 3 | 4 | 5 | 6 |
采用 FIFO 算法,发生 10 次缺页中断,淘汰页依次为:1、2、3、4、5、6。
② LRU 算法
访问页面 | 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
物理块2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
物理块3 | 3 | 3 | 3 | 3 | 5 | 5 | 5 | 5 | 5 | 3 | 3 | ||
物理块4 | 4 | 4 | 4 | 4 | 6 | 6 | 6 | 6 | 6 | 7 | |||
是否缺页 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | |||||
淘汰页 | 3 | 4 | 5 | 6 |
采用 LRU 算法,发生 8 次缺页中断,淘汰页依次为:3、4、5、6。
5、某采用页式虚拟存储管理的系统,进程访问地址序列为:10, 11, 104, 170, 73, 305, 180, 240, 244, 445, 467, 366。试问如果页面大小为 100,请给出页面访问序列;进程若分得 3 个页帧,采用 CLOCK 替换算法,求缺页中断率?写出依次产生缺页中断后应淘汰的页(要求写出计算过程)。
页面访问序号依次为:0、0、1、1、0、3、1、2、2、4、4、3。
CLOCK 算法
访问页面 | 0 | 0 | 1 | 1 | 0 | 3 | 1 | 2 | 2 | 4 | 4 | 3 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
物理块1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 |
物理块2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | ||
物理块3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | |||||
是否缺页 | 是 | 是 | 是 | 是 | 是 | |||||||
淘汰页 | 0 | 1 |
采用 CLOCK 算法,发生 5 次缺页中断,淘汰页依次为 0、1。
缺页中断率 =(5/12)*100% = 41.7%。