操作系统 | 《操作系统设计与实现》课后习题 存储管理

教材:《操作系统设计与实现》(第三版)

2、在一个使用交换技术的系统中,按地址顺序排列的内存中的空闲块大小是10KB,4KB,20KB,18KB,7KB,9KB,12KB,15KB。对于连续的段请求:
a)12KB
b)10KB
c)9KB
使用最先匹配算法,哪个空闲块将被选中?对最佳匹配法、最坏匹配法和下次匹配法回答同样的问题。

解:
(1)最先匹配法
被选中的块依次是:20KB 10KB 18KB
(2)最佳匹配法
被选中的块依次是:12KB 10KB 9KB
(3)最坏匹配法
被选中的块依次是:20KB 18KB 15KB
(4)下次匹配法
被选中的块依次是:20KB 18KB 9KB

6、使用图4.8中的页表,计算出下列虚拟地址所对应的物理地址:
a)20
b)4100
c)8300

解:
a)虚拟地址20位于第0个虚拟页面中,页面内的偏移地址是20,其被映射到第2个物理页面,起始地址为8192,所以最后的物理地址为8192+20=8212。
b)虚拟地址4100位于第1个虚拟页面中,页面内的偏移地址是4100-4096=4,其被映射到第1个物理页面,起始地址为4096,所以最后的物理地址为4096+4=4100。
c)虚拟地址8300位于第2个虚拟页面中,页面内的偏移地址是8300-8192=108,其被映射到第6个物理页面,起始地址为24576,所以最后的物理地址为24576+108=24684。

11、一台32位地址的计算机使用了两级页表。虚拟地址被划分为三部分:9位的顶级页表字段、11位的二级页表字段和页内偏移。请问页面的大小是多少?在地址空间中总共有多少个页面?
解:
页内偏移地址:32-9-11=12位
页面大小: 2 12 = 4 K B 2^{12}=4KB 212=4KB
地址空间中总共有: 2 20 = 1048576 2^{20}=1048576 220=1048576个页面

【实际在内存中不会存这么大】

12、以下是一小段汇编语言程序(用文字来描述),用在一台页面大小为512字节的计算机上。该程序位于地址1020,它的栈指针位于8192(向0的方向增长)。请给出这个程序所产生的页面访问序列。假设每条指令占用4个字节(1个字),对指令和数据的访问都应该包含在访问序列之中。
将地址为6144的字装入寄存器0
把寄存器0压入栈中
调用起始地址为5120的函数,把返回地址入栈
5120把栈指针的值减去16
5124将实参与常量4进行比较
5126如果相等,跳转到5152

解:
页面序列:
1(指令)+12(数据)
2(指令)+15(数据)
2(指令)+15(数据)
10(指令)
10(指令)+ 15(数据)
10(指令)

栈指针是一个寄存器,第四条只是访问了寄存器,而没有对栈进行访问
实参值在栈中
(跳转后,下一条指令才会从5152开始执行)

14、在一台计算机上,进程的地址空间有1024个页面,页表被保存在内存中。从页表中读取一个字的开销是500ns。为了减小开销,这台计算机使用了TLB,它能存放32对(虚拟页面号,物理页面号),查找时间为100ns。为了把页表的平均访问开销降到200ns,需要的TLB命中率是多少?
解:
假设TLB的命中率为r。
100 n s × r + 500 n s × ( 1 − r ) ≤ 200 n s 100ns\times r+500ns\times(1-r)\leq200ns 100ns×r+500ns×(1r)200ns
解得:
r ≥ 75 % r\geq75\% r75%
综上:TLB的命中率至少为75%,可以将页表的平均访问开销降到200ns。

18、一台计算机有4个物理页面,每个页面的装入时间、最后访问时间、R位和M位如下所示(时间以时钟节拍为单位):

页面装入时间最后访问时间RM
012627900
123026010
212027211
316028011

a)NRU将替换哪个页面?
b)FIFO将替换哪个页面?
c)LRU将替换哪个页面?
d)第二次机会算法将替换哪个页面?

解:
a)NRU:替换页面0
b)FIFO:替换页面2
c)LRU:替换页面1
d)第二次机会算法:替换页面0

23、一台小型计算机有4个物理页面。在第一个时钟节拍时R位是0111(页面0是0,其他是1)。在随后的时钟节拍,这个值分别是1011,1010,1101,0010,1010,1100和0001。如果使用老化算法,计数器的长度为8位,请给出在最后一个时钟节拍后,这4个计数器的值。
解:

01111011101011010010101011000001
页面00000000010000000110000001110000001110000101110001101110001101110
页面11000000001000000001000001001000001001000001001001001001001001001
页面21000000011000000111000000111000010111000110111000110111000110111
页面31000000011000000011000001011000001011000001011000001011010001011

由上表:这4个计数器的值分别是:01101110、01001001、00110111、10001011。

24、在一个计算机系统上,磁盘的平均寻道时间为10ms,旋转时间为8ms,每道的容量为1MB。如果要把一个64KB的程序装入内存,这需要多长的时间?
a)页面长度为2KB时。
b)页面长度为4KB时。
c)页面长度为64KB时。
假设页面随机地分布在磁盘上。

解:
a)当页面长度为2KB时
页面总数: 64 K B ÷ 2 K B = 32 64KB\div2KB=32 64KB÷2KB=32
时间: 32 × ( 10 m s + 8 m s ) = 576 m s 32\times(10ms+8ms)=576ms 32×(10ms+8ms)=576ms
b)当页面长度为4KB时
页面总数: 64 K B ÷ 4 K B = 16 64KB\div4KB=16 64KB÷4KB=16
时间: 16 × ( 10 m s + 8 m s ) = 288 m s 16\times(10ms+8ms)=288ms 16×(10ms+8ms)=288ms
c)当页面长度为64KB时
页面总数: 64 K B ÷ 64 K B = 1 64KB\div64KB=1 64KB÷64KB=1
时间: 1 × ( 10 m s + 8 m s ) = 18 m s 1\times(10ms+8ms)=18ms 1×(10ms+8ms)=18ms

27、一台嵌入式计算机为每个进程提供了65536个字节的地址空间,并将它们划分为4096字节的页面。有一个程序,它的代码段为32768个字节、数据段为16386个字节、栈段为15870字节。请问,这个程序能被装入地址空间吗?如果页面大小为512字节,结果又如何?注意,在一个页面中,不能同时包含两个不同段的内容。
解:
(1)当页面大小为4096字节时
页面总数: 65536 ÷ 4096 = 16 65536\div4096=16 65536÷4096=16
代码段所需页面数量: 32768 ÷ 4096 = 8 32768\div4096=8 32768÷4096=8
数据段所需页面数量: 16386 ÷ 4096 = 4.0005 ≈ 5 16386\div4096=4.0005\approx5 16386÷4096=4.00055
栈段所需页面数量: 15870 ÷ 4096 = 3.8745 ≈ 4 15870\div4096=3.8745\approx4 15870÷4096=3.87454
总共需要的页面数量: 8 + 5 + 4 = 17 > 16 8+5+4=17>16 8+5+4=17>16
因此,该程序不能被装入地址空间。

(2)当页面大小为512字节时
页面总数: 65536 ÷ 512 = 128 65536\div512=128 65536÷512=128
代码段所需页面数量: 32768 ÷ 512 = 64 32768\div512=64 32768÷512=64
数据段所需页面数量: 16386 ÷ 512 = 32.0039 ≈ 33 16386\div512=32.0039\approx33 16386÷512=32.003933
栈段所需页面数量: 15870 ÷ 512 = 30.996 ≈ 31 15870\div512=30.996\approx31 15870÷512=30.99631
总共需要的页面数量: 64 + 33 + 31 = 128 = 128 64+33+31=128=128 64+33+31=128=128
因此,该程序可以被装入地址空间。

30、解释内碎片和外碎片的区别。哪一个发生在页式存储管理系统中?哪一个发生在段式管理系统中?
解:
 内碎片:已经被分配出去但不会被利用的内存空间,是位于页面内部的存储块。
 外碎片:未被分配出去,并且由于大小太小无法分配给申请内存空间的新进程的内存空闲区域。外碎片处于已分配的区域之间,它们的总和可以满足申请的长度要求,但是由于不连续的原因而无法满足当前申请。
 内碎片发生在页式存储管理系统中,外碎片发生在段式管理系统中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值