家庭作业
2.74计算x-y若导致溢出,函数返回1
溢出 函数返回1
正常 函数返回0
边界测试
具体代码:
6.27
高速 |
m |
C |
B |
E |
S |
t |
s |
b |
1 |
32 |
8192 |
16 |
1 |
512 |
19 |
9 |
4 |
2 |
32 |
4096 |
4 |
4 |
256 |
22 |
8 |
2 |
3 |
32 |
4096 |
4 |
8 |
128 |
23 |
7 |
2 |
4 |
32 |
2048 |
32 |
4 |
16 |
23 |
4 |
5 |
6.39
A. 写总数为 16*16*4 = 1024
B.不命中总数为64。
C. 这种情况只有冷不命中,一个block能存下16个int,不命中率为1/16。
6.40
A. 写总数为 16*16*4 = 1024
B.不命中总数为256。
C. E = 1024/64 = 16,每4行才能容得下数组的一行,每次j在变化时,都会不断驱逐掉之前的缓存。所以,只有循环内是可以命中的。不命中率为1/4。
6.41
A. 写总数为 16*16*4 = 1024
B.
一行能保持4个square结构体的值,所以第一个双循环不命中率为1/4。
第二个双循环,不命中率为1/12。
总的不命中次数为 16*16/4 + 16*16*3/12 = 16*16/2 = 128。
C. 不命中率为 1/8。
10.6
输出 fd2 = 4
因为已经有0 1 2被打开,fd1是3,fd2是4,关闭fd2之后再打开,还是4。
10.10
int main(int argc, char **argv)
{
int n;
rio_t rio;
char buf[MAXLINE];
if(argc == 2){
int fd = open(argv[2], O_RDONLY, 0);
dup2(fd, STDIN_FILENO);
close(fd);
}
Rio_readinitb(&rio, STDIN_FILENO);
while((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0)
Rio_writen(STDOUT_FILENO, buf, n);
}
8.9
进程对 |
是否并发 |
AB |
No |
AC |
Yes |
AD |
Yes |
BC |
Yes |
BC |
Yes |
CD |
Yes |
8.12
8行
8.19
总共会输出2^n行。