CSAPP hw9

9.11

A

00 0010 0111 1100

B

0x9

0x1

0x2

0x17

C

0101 1111 1100

D

0x0

0xf

0x17

9.12

A

00 0011 1010 1001

B

0xe

0x2

0x3

0x11

C

0100 0110 1001

D

0x1

0xa

0x11

9.13

A

00 0000 0100 0000

B

0x1

0x1

0

9.14

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "csapp.h"
int main(int argc, char **argv)
{
struct stat stat;
int fd;
int size;

fd = Open(argv[1], O_RDWR, 0);
Fstat(fd, &stat);
size = stat.st_size;
char *data = Mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
data[0] = 'J';
Write(STDOUT_FILENO, data, size);
Munmap(data, size);
return 0;
}

注意:需要将 Mmap 设为 PROT_WRITE,这样才能写。同时,需要设为 MAP_SHARED,这样才能对文件本身进行修改。相应地,Open 需要设为 O_RDWR。

9.15

8 0x9

16 0x11

24 0x19

32 0x21

9.16

16

16

16

16

9.17&9.18

参考 malloc lab。

9.19

  1. a

  2. d

  3. b


CSAPP hw9
https://je3ter.github.io/2024/02/17/CSAPP/CSAPP hw9/
作者
Je3ter
发布于
2024年2月17日
许可协议