两个月学完《现代操作系统》(五)——第三章习题

两个月学完《现代操作系统》(五)——第三章习题

摘要:操作系统个人学习笔记

0x01写在前面

《现代操作系统》第三章的习题答案,直接莽。

0x02正文

先莽题目:




1、缺点一:需要一个特殊的硬件去实现,而且这个处理过程必须得快;缺点二:在内存中同时只能存在16个程序,其中还包括操作系统。
2、很明显是巧合。
3、四字节需要4ns,一字节就是1ns,来回读写一次就是2ns。如此,1秒可以去写500000000字节的数据,4GB是2^32自己数据,则所花的时间大概为2^32/500000000约等于859ms。
4、a是20MB的,b是10MB的,c是18MB的。
5、物理地址指的是内存中内存片的地址;虚拟地址指的是在抽象的地址空间中的逻辑地址。
6、

虚拟页号和偏移量的计算公式

只需要理解了页面的大小与二进制偏移量的位数所能表示的最大的数相等这个就好求了,这种方法是二进制方法;还有十进制方法,直接使用偏移量/页面大小,所得余数为偏移量,所得整除数为页号。
7、直接对着映射就行了。
8、他们造了一个MMU在8086和总线之间,所有进入MMU的8086物理地址都作为虚拟地址。(吐槽一下,我还以为用了啥其他牛逼但是麻烦的技术代替了MMU,没想到是吧MMU放到CPU外面了)
9、需要MMU,还需要系统对缺页的处理机制。
10、可以啊,两者没啥本质上的区别。
11、a.M至少得为4096才能让每次执行都会引起TLB失效;同样M还是至少得为4096才能够每次执行使得TLB失效,同时如果想让多次执行循环TLB都失效,那么N需要大于64K了。这个很好理解。
12、nv-r。因为每个地址有自己独立的地址空间,故最大需要nv,而RAM字节数为r故nv-r就是所需要的存储页面的磁盘空间。会大很多
13、1+n/k ns
14、32位地址空间意味着地址空间大小为2^32,8kb页面也为这页表中有2^32/8192的页表项,那么总共就是32*2^32/100 ns的时间,那装页表所占比例为(32*2^32/100)/100000
15、a.页面大小为4kb,也就是偏移位有12位,那么就有2^36页表项;
b.在进入下一个页面时,命中率为100%,因为一个4kb页面可以存1024个长整型整数
16、简单数学期望计算,不多说。
17、a.减少了实际所需的页面的页表的数量
18、因为虚拟地址仍然只用了32位
19、12位和4kb。2^32/4096个页面
20、需要2^20个页表项。后者只需要使用三个页表项
21、I D没咋认真看,后面补补
22、百分之75
23、多个寄存器吧
24、2^35个
25、书中原文是:如果散列表中的槽数与机器中物理页面数一样多,那么散列表的冲突链的长度会是一个表项长度。估算下,大概有2^28/2^13=2^15个表项,那么哈希表的大小也大概应该是32Kb
26、这是不可能的,除非一个进程在它编译的时候他执行的过程就是完全可以预测的。
27、a.可以预测的是,在这种情况下下采用标准的页面换置算法都会导致缺页中断,除非工作负载恰好等于或者大于该序列的长度;b、规定499个片段,剩下一个片段用于交换
28、FIFO六次缺页中断;LRU七次中断(没弄明白)
29、D位
30、设四个计数器分别为abcd,依题意,我们可以得到:最后一个时钟周期后,a记数器的值为01101110,b记数器的值为00110111,c记数器的值为01001001,d记数器的值为01101110
31、0121203在LRU中1会被淘汰,因为大家都用了2次而1离上次使用时间最长;在clock中,0会被淘汰,因为在clock中指针是不会动的,一直指向用的最早的那个页面
32、算这个要考虑当前时间与使用时间的差值与T的大小,如果大于则替换,如果小于则不替换。
33、a.它这边是时钟中断,这边的规律好像是所有的R位置零,然后时间戳改为10;b.此时的指针指向的是页面三,页面三刚好被淘汰V位置零,R位置1。
34、a.FIFO是加载时间(最早);LRU是使用次数;最优算法是对未来使用时间的估计;b.他这个我不是很理解:使用一种标签算法和替换算法,标签算法用于用a的属性来标记页面,然后替换算法用于将属性值最小的值替换
35、The seek plus rotational latency is 10 msec. For 2-KB pages, the transfer time
is about 0.009766 msec, for a total of about 10.009766 msec. Loading 32 of
these pages will take about 320.21 msec. For 4-KB pages, the transfer time is
doubled to about 0.01953 msec, so the total time per page is 10.01953 msec.
Loading 16 of these pages takes about 160.3125 msec. With such fast disks,
all that matters is reducing the number of transfers (or putting the pages consecutively on the disk).
36、a.会换页面2;b会换页面3;c会换页面1;d会替换2
37、Sharing pages brings up all kinds of complications and options:
(a) The page table update should be delayed for process B if it will never access the shared page or if it accesses it when the page has been swapped
out again. Unfortunately, in the general case, we do not know what process
B will do in the future.
(b) The cost is that this lazy page fault handling can incur more page faults.
The overhead of each page fault plays an important role in determining if
this strategy is more efficient. (Aside: This cost is similar to that faced by
the copy-on-write strategy for supporting some UNIX fork system call implementations.)
38、显然,B段存在着更少的缺页中断。因为数组时按行存储的,A段每次都访问不同行的不连续数据势必会导致多次中断。可以计算得到,B的缺页中断数为32次;A的缺页中断数64*32次
39、1.网络传输,服务器彼此间知道有啥数据;2.从其他服务器读数据比从磁盘读数据的速度快
40、为了减少轮转时间。
41、都装得下。
42、30s用于处理中断,内存翻倍15s用于处理中断,那么最后最是45秒执行程序。
43、当程序和程序数据都不会被修改时
44、指令可能横跨在两个页面上,由此产生两次缺页中断,数据也可能横跨在两个页面间,由此又产生两次缺页中断。
45、内部分段产生于最后分配的单元没有被填满;外部分段产生于当两个分配的单元间产生了空间浪费时。分页系统是内部分段,纯分段系统是外部分段。
46、不是的,查找键同时使用段数和虚拟页数进行。
47、略
48、当所有程序所需要的内存都是知道的并且可控制的,那么虚拟内存就不是必须的。比方说嵌入式设备、网络进程等。如果没有虚拟内存,操作系统的代码会简单很多。
49、直接莽英文答案吧:This question addresses one aspect of virtual machine support. Recent attempts include Denali, Xen, and VMware. The fundamental hurdle is how to
achieve near-native performance, that is, as if the executing operating system
had memory to itself. The problem is how to quickly switch to another operating system and therefore how to deal with the TLB. Typically, you want to
give some number of TLB entries to each kernel and ensure that each kernel
operates within its proper virtual memory context. But sometimes the hardware (e.g., some Intel architectures) wants to handle TLB misses without
knowledge of what you are trying to do. So, you need to either handle the TLB
miss in software or provide hardware support for tagging TLB entries with a
context ID.
50-54后面做lab一并写了。

0x03总结

写一下这个感觉知识也是有所巩固,视野也有所开阔,还是蛮好的。在这一块上,我个人觉得重头戏在于分页机制的理解以及页面调度算法的理解,这一块一定要弄熟练,后面把清华的lab做一下相信会更为扎实。


评论