CSAPP第八、九章家庭作业(原书第二版)

在这里插入图片描述
答:到达第一个Fork()函数时,创建一个子进程,此时由于还没有调用过exit函数,故此时atexit函数此时还不会被调用,等待exit函数调用才打印2。第二个Fork()由创建一个子进程,此时有4个进程,其中2个打印0,2个打印1,当第一个Fork创建的子进程创建的子进程中每有一个子进程调用exit时,atexit函数就被调用打印2。如下图,所以每打印2之前都要先打印一个0或者一个1,故在5个选项中只有ACE符合可能输出的结果。
在这里插入图片描述
8.23
答:父进程接收并捕获第一个信号,当处理程序还在处理第一个信号时,第二个信号传来被添加到待处理集合中,此时被处理程序阻塞了就还不会被接收,当第三个信号传来,由于类型和第二个信号相同就会被丢弃,第4、5个信号也是如此。当第一个信号处理完毕后,内核注意到还有一个待处理信号(信号2)就会强迫父进程接收,然后执行处理程序,第二次处理完毕后,没有待处理的信号了,就结束。所以只会接收处理两个信号,counter值只会是2,而不是5。

9.11
A:虚拟地址为0x027c,转换成二进制:00 0010 0111 1100
在这里插入图片描述

B:按照9.6.4节的假设,VPO为地址的0位到5位,本题为111100,VPN为6位到13位,本题为00001001,即0x9,TLBI是6-7位为0x1,TLBT为8-13位为0x2。查表可知索引位0x1、标记位为0x2,不命中,MMU需要从页表中的PTE中取出PPN,得到有效的PPN为0x17,没有缺页。故填下表:
在这里插入图片描述
C:用得到的PPN(0x17)作为物理地址的CT部分(6-11位)01 0111,用虚拟地址的VPO作为物理地址的PPO(11 1100),所以得到物理地址:0101 1111 1100.
填表:
在这里插入图片描述
D:将物理地址的6-11位的010111作为CT,其值为0x17,2-5位的1111作为CI其值为0xf,0-1位作为块偏移CO值为0x0。在高速缓存中找索引位0xf的组、标记位0x17的行、偏移为0x0的字节,由高速缓存表可知0xf的组无0x17标记的行,故不命中,无返回字节。填表:
在这里插入图片描述
9.12
A:虚拟地址为0x03a9,其二进制为00 0011 1010 1001
在这里插入图片描述
B:按照9.6.4节的假设,VPO为地址的0位到5位,本题为101001,VPN为6位到13位,本题为0000 1110,即0xe,TLBI是6-7位为0x2,TLBT为8-13位为0x3。查表可知索引位0x2、标记位为0x3,由于有效位为0不命中,MMU需要从页表中的PTE中取出PPN,得到有效的PPN为0x11,没有缺页。故填下表:
在这里插入图片描述

C:用得到的PPN(0x11)作为物理地址的CT部分(6-11位)01 0001,用虚拟地址的VPO作为物理地址的PPO(10 1001),所以得到物理地址:0100 0110 1001.
填表:
在这里插入图片描述
D:将物理地址的6-11位的010001作为CT,其值为0x11,2-5位的1010作为CI其值为0xa,0-1位作为块偏移CO值为0x1。在高速缓存中找索引位0xa的组、标记位0x11的行、偏移为0x1的字节,由高速缓存表可知0xa的组无0x11标记的行,故不命中,无返回字节。填表:
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值