《现代操作系统第四版》第三章答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章内存管理习题
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的页表,给出下面每个虚拟地址对应的物理地址:
(a) 20
(b) 4100
(c) 8300
A:(a)20+40962=8212 (b)4100=4096+(4100-4096)=4100 (c)8300=64096+(8300-4096*2)=24684
8. Inlel 8086处理器不支持虚拟内存,然而一些公司曾经设计过包含未作任何改动的8086 CPU的分页系统。猜想一下,他们是如何做到这一点的。(提示:考虑MMU的逻辑位置。)
A:他们制作了MMU,并连接在CPU与地址总线之间,这样从处理器进入MMU 的地址全部被视为虚拟地址,并被转换为物理地址,然后被送到地址总线,映射到内存中。
9.为了让分页虚拟内存工作,需要怎样的硬件支持?
A:需要一个MMU能够将虚拟页面重新映射到物理页面。此外,当缺页中断时,需要对操作系统设置陷阱,以便可以获取页面。
10.写时复制是使用在服务器系统上的好方法,它能否在手机上起作用。
A:“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。如果智能手机支持多重编程,iPhone、Android和Windows手机都支持多重编程,那么支持多个进程。如果进程发出fork()系统调用和页面在父进程和子进程之间共享,则复制对写是有意义的。智
能手机比服务器小,但从逻辑上讲,它并没有什么不同。
11.考虑下面的C程序:
int X[N];
int step = M; //M是某个预定义的常量
for (int i = 0; i < N; i += step) X[i] = X[i] + 1;
a)如果这个程序运行在一个页面大小为4KB且有64 个TLB 表项的机器上时,M和N取什么值会使得内层循环的每次执行都会引起TLB失效?
b)如果循环重复很多遍,结果会和a)的答案相同吗?请解释。
A: a)M必须至少为1024,以确保对X元素的每一次访问都有一个TLB缺失。因为N只影响X访问多少次,N取大于M的任何值都可以。b)M应该至少是1024,以确保对X元素的每次访问都遗漏TLB。但是现在N应该大于64K,以便处理TLB,也就是说,X应该超过256KB。
12.存储页面必须可用的磁盘空间和下列因素有关:最大进程数n,虚拟地址空间的字节数v,RAM的字节数r,给出最坏情况下磁盘空间需求的表达式。这个数量的真实性如何?
A:所有进程的整个虚拟地址空间为nv,这就是页面存储所需的。不过,可以在RAM中存储量为r,因此需要的磁盘存储量仅为nv-r。该量比实际所需的要大得多,因为极少有n个进程实际运行,而且这些进程也极少需要其最大允许的虚
拟内存。
13.如果一条指令执行1ns,缺页中断执行额外的Nns,且每条k指令产生一个缺页,请给出一个公式,计算有效指令时间。
A:(1*(k-1)+(1+N))/k = 1+N/k ns
14.一个机器有32位地址空间和8KB页面,页表完全用硬件实现,页表的每一表项为一个32位字。进程启动时,以每个字100ns的速度将页表从内存复制到硬件中。如果每个进程运行100ms(包含装入页表的时间)用来装人页表的CPU 时间的比例是多少?
A: 32位地址空间构成4GB内存空间,4GB/8KB=512个页面,页表项512项,页表大小512·32=2^14 bit,复制页表的时间=2^14/2^5*10ns = 5120 ns, 时间比例5120ns/100ms=5120·10^(-9) / 100·10^(-3) =51.2% 8KB页面大小,需要13位偏移量,故页号有19位,页面有2^19个,页表项也是2^19个,每项32位字。2^19·100ns/100ms=52.4288%
15.假设一个机器有48位的虚拟地址和32位的物理地址。
a)假设页面大小是4KB,如果只有一级页表,那么在页表里有多少页表项?请解释。
b)假设同一系统有32个TLB表项,并且假设一个程序的指令正好能放入一个页,并且该程序顺序地从有数千个页的数组中读取长整型元素。在这种情况下TLB的效果如何?