CSAPP-习题

filename already exists, renmed

C。读写锁只能同时由多个读者或者一个写者拥有,而且读和写是排他的,两者不能共存。

uplo successful

页大小大概占10位,那么虚拟地址分为虚拟页号和虚拟页偏移量,那么后10位就是偏移量,剩下的位就是索引位,对应在页表中的索引,那么所以说他们的索引一样,物理位置的物理页号一样,而物理偏移量A总是小于B

upload succesul

*(x+2) = A[2];

upload sussful

b

upload successl

d

Size of a pointer should be 8 byte on any 64-bit C/C++ compiler, but not necessarily size of int.

静态持续变量

1
2
3
4
5
6
7
int a = 3;  //静态变量,外部链接性
static int b = 4; //静态变量,内部链接性

void fun()
{
static int c = 5; //静态变量,无链接性
}

外部链接性: 多个文件共享

内部链接性: 只有所属的文件可用

无连接性: 只有该代码段内可用

外部链接性的静态变量

upload successful

1
2
3
4
5
6
int a = 2;

void fun()
{
int a = 3; //这是自动变量,会覆盖掉全局静态变量a
}

内部链接性的静态变量

filename alrey exists, renamed

无连接性的静态变量

upload succsful

CSAPP6.34/6.35

cache共有两个block,分别位于两个set中,设他们为b1和b2。每个block可以放下4个int类型的变量,也就是数组中的一行。在这一题中,源数组和目的数组是相邻排列的。所以内存和cache的映射情况是这样的:

b1 : src[0][] src[2][] dst[0][] dst[2][]

b2 : src[1][] src[3][] dst[1][] dst[3][]

upload succeful

这里搞错了,应该是dst数组全是m,src数组是左边的样子。

filename already exists,named

a

upld successful
An object that is “8 bytes aligned” is stored at a memory address that is a multiple of 8.

so choose c

理解cache中的block,cache和line

upload succeful

line就是block

directed mapped 就是一个set只有一个line

2way就是一个set可以放2个line

4way,就是一个set可以放4个line

fully associated 就是只有一个set,所以不需要中间位的index,来作为line index

为什么要用中间位来做索引?

空间局部性。

upload succeful

fork函数到底复制了啥?

“子进程是父进程的副本。例如,子进程获得父进程数据空间、堆和栈的副本。注意,这是子进程所拥有的副本。父进程和子进程并不共享这些存储空间部分。父进程和子进程共享正文段。”

upload succeful

filename already exists, ramed

子进程得到的只是全局变量的副本,该题应该选b