《深入理解计算机系统》家庭作业
* 8.9
答案:
进程对 |
是否并发 |
AB |
否 |
AC |
是 |
AD |
是 |
BC |
是 |
BD |
是 |
CD |
是 |
* 8.10
答案:
A. 调用一次,返回两次: fork
B. 调用一次,从不返回: execve, longjmp
C. 调用一次,返回一次或者多次: setjmp
* 8.11
答案:
这个程序会输出4个“hello”输出行。
因为Fork()函数的作用是调用一次返回两次。根据条件i<2,当 i = 0 时,输出2个hello,当 i = 1 时,输出2个hello。所以输出4个hello。
* 8.12
答案:
这个程序会输出8个“hello”输出行。
因为程序定义了一个doit()函数,里包含了两个Fork(),Fork()函数的作用是调用一次返回两次,所以返回4次,输出4个hello。main()函数中调用了doit()函数所以又输出4个hello
,一共输出8个hello。
** 8.23
答案:
一个可能的原因是,在第一个信号发给父进程之后,父进程进入handler,并且阻塞了SIGUSR2,第二个信号依然可以发送,然而,之后的3个信号便会被抛弃了。因为是连续发送,所以很可能是没等上下文切换,这5个信号就同时发送了。所以只有2个信号被接收。
汇总
* 8.9
* 8.10
* 8.11
* 8.12
** 8.23
共计:六分
时间: 2024-10-13 12:03:39