skip to content

Search

记录

12 min read Updated:

学习CSAPP的记录,包括LAB的记录与总结体会,以及每日的学习流水账

LAB评分

所有我的LAB答案都在这里

Data Lab

  • 花费时间:5小时
  • 难度:偏易
  • Total points: 36/36
ScoreRatingErrorsFunctionOperators
110bitXor8
110tmin1
110isTmax6
220allOddBits9
220negate2
330isAsciiDigit7
330conditional8
330isLessOrEqual5
440logicalNeg6
440howManyBits89
440floatScale218
440floatFloat2Int16
440floatPower29

Bomb Lab

  • 花费时间:6小时
  • 难度:较难
  • 通过:6/6
Welcome to my fiendish little bomb. You have 6 phases with
which to blow yourself up. Have a nice day!
Phase 1 defused. How about the next one?
That's number 2.  Keep going!
Halfway there!
So you got that one.  Try this one.
Good work!  On to the next...
Congratulations! You've defused the bomb!

Attack Lab

  • 花费时间:6小时
  • 难度:中等
  • 通过:5/5
Cookie: 0x59b997fa
Type string:Touch3!: You called touch3("59b997fa")
Valid solution for level 3 with target rtarget
PASS: Would have posted the following:
        user id bovik
        course  15213-f15
        lab     attacklab
        result  1:PASS:0xffffffff:rtarget:3:30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 AD 1A 40 00 00 00 00 00 C5 19 40 00 00 00 00 00 AB 19 40 00 00 00 00 00 48 00 00 00 00 00 00 00 DD 19 40 00 00 00 00 00 70 1A 40 00 00 00 00 00 13 1A 40 00 00 00 00 00 D6 19 40 00 00 00 00 00 C5 19 40 00 00 00 00 00 FA 18 40 00 00 00 00 00 35 39 62 39 39 37 66 61

Cache Lab

  • 花费时间:8小时
  • 难度:中等+
  • 分数:80/80
Part A: Testing cache simulator
Running ./test-csim
                        Your simulator     Reference simulator
Points (s,E,b)    Hits  Misses  Evicts    Hits  Misses  Evicts
     3 (1,1,1)       9       8       6       9       8       6  traces/yi2.trace
     3 (4,2,4)       4       5       2       4       5       2  traces/yi.trace
     3 (2,1,4)       2       3       1       2       3       1  traces/dave.trace
     3 (2,1,3)     167      71      67     167      71      67  traces/trans.trace
     3 (2,2,3)     201      37      29     201      37      29  traces/trans.trace
     3 (2,4,3)     212      26      10     212      26      10  traces/trans.trace
     3 (5,1,5)     231       7       0     231       7       0  traces/trans.trace
     6 (5,1,5)  265189   21775   21743  265189   21775   21743  traces/long.trace
    27
 
 
Part B: Testing transpose function
Running ./test-trans -M 32 -N 32
Running ./test-trans -M 64 -N 64
Running ./test-trans -M 61 -N 67
 
Cache Lab summary:
                        Points   Max pts      Misses
Csim correctness          27.0        27
Trans perf 32x32           8.0         8         288
Trans perf 64x64           8.0         8        1172
Trans perf 61x67          10.0        10        1997
          Total points    53.0        53

Shell Lab

  • 花费时间:4小时
  • 难度:较难
  • 通过:16/16
> make test16
./sdriver.pl -t trace16.txt -s ./tsh -a "-p"
#
# trace16.txt - Tests whether the shell can handle SIGTSTP and SIGINT
#     signals that come from other processes instead of the terminal.
#
tsh> ./mystop 2
Job [1] (3189983) stopped by signal 20
tsh> jobs
[1] (3189983) Stopped ./mystop 2
tsh> ./myint 2
Job [2] (3189986) terminated by signal 2
 
> make rtest16
./sdriver.pl -t trace16.txt -s ./tshref -a "-p"
#
# trace16.txt - Tests whether the shell can handle SIGTSTP and SIGINT
#     signals that come from other processes instead of the terminal.
#
tsh> ./mystop 2
Job [1] (3189992) stopped by signal 20
tsh> jobs
[1] (3189992) Stopped ./mystop 2
tsh> ./myint 2
Job [2] (3189995) terminated by signal 2

Malloc Lab

  • 花费时间:11小时
  • 难度:较难
  • 分数:87/100

隐式空闲链表分数:

Results for mm malloc:
trace  valid  util     ops      secs  Kops
 0       yes   99%    5694  0.008513   669
 1       yes  100%    5848  0.007585   771
 2       yes   99%    6648  0.012653   525
 3       yes  100%    5380  0.009373   574
 4       yes  100%   14400  0.000125115663
 5       yes   92%    4800  0.008175   587
 6       yes   92%    4800  0.007601   632
 7       yes   55%   12000  0.095317   126
 8       yes   50%   24000  0.323989    74
 9       yes   54%   14401  0.000225 63919
10       yes   76%   14401  0.000116123720
Total          83%  112372  0.473673   237
 
Perf index = 50 (util) + 16 (thru) = 66/100

分离显式空闲链表分数:

Results for mm malloc:
trace  valid  util     ops      secs  Kops
 0       yes   97%    5694  0.000143 39930
 1       yes   95%    5848  0.000211 27689
 2       yes   98%    6648  0.000192 34697
 3       yes   99%    5380  0.000130 41353
 4       yes   98%   14400  0.000153 94056
 5       yes   89%    4800  0.000236 20339
 6       yes   87%    4800  0.000263 18272
 7       yes   54%   12000  0.000266 45198
 8       yes   47%   24000  0.077821   308
 9       yes   32%   14401  0.042749   337
10       yes   57%   14401  0.000160 90175
Total          78%  112372  0.122322   919
 
Perf index = 47 (util) + 40 (thru) = 87/100

Proxy Lab

  • 花费时间:13小时
  • 难度:难
  • 分数:70/70
*** Basic ***
Starting tiny on 2139
Starting proxy on 16857
1: home.html
   Fetching ./tiny/home.html into ./.proxy using the proxy
   Fetching ./tiny/home.html into ./.noproxy directly from Tiny
   Comparing the two files
   Success: Files are identical.
2: csapp.c
   Fetching ./tiny/csapp.c into ./.proxy using the proxy
   Fetching ./tiny/csapp.c into ./.noproxy directly from Tiny
   Comparing the two files
   Success: Files are identical.
3: tiny.c
   Fetching ./tiny/tiny.c into ./.proxy using the proxy
   Fetching ./tiny/tiny.c into ./.noproxy directly from Tiny
   Comparing the two files
   Success: Files are identical.
4: godzilla.jpg
   Fetching ./tiny/godzilla.jpg into ./.proxy using the proxy
   Fetching ./tiny/godzilla.jpg into ./.noproxy directly from Tiny
   Comparing the two files
   Success: Files are identical.
5: tiny
   Fetching ./tiny/tiny into ./.proxy using the proxy
   Fetching ./tiny/tiny into ./.noproxy directly from Tiny
   Comparing the two files
   Success: Files are identical.
Killing tiny and proxy
basicScore: 40/40
 
*** Concurrency ***
Starting tiny on port 3506
Starting proxy on port 3261
Starting the blocking NOP server on port 21780
Trying to fetch a file from the blocking nop-server
Fetching ./tiny/home.html into ./.noproxy directly from Tiny
Fetching ./tiny/home.html into ./.proxy using the proxy
Checking whether the proxy fetch succeeded
Success: Was able to fetch tiny/home.html from the proxy.
Killing tiny, proxy, and nop-server
concurrencyScore: 15/15
 
*** Cache ***
Starting tiny on port 32391
Starting proxy on port 29991
Fetching ./tiny/tiny.c into ./.proxy using the proxy
Fetching ./tiny/home.html into ./.proxy using the proxy
Fetching ./tiny/csapp.c into ./.proxy using the proxy
Killing tiny
Fetching a cached copy of ./tiny/home.html into ./.noproxy
Success: Was able to fetch tiny/home.html from the cache.
Killing proxy
cacheScore: 15/15
 
totalScore: 70/70

日程

  • 2026-05-27
    • SETUP: find material
    • Lecture: 01 Course Overview
    • Textbook: Chapter 1
  • 2026-05-28
    • Lecture: 02-04 Data Representation
    • Textbook: Chapter 2 - Chapter 3.3
    • LAB: Data Lab: xor - conditional
  • 2026-05-29
    • LAB: Data Lab: finished
  • 2026-05-30
    • Lecture: 05: Machine Level Programming I Basis
    • Textbook: Chapter 3.4 - 3.6.5
    • Notes: lec05
  • 2026-05-31
    • Lecture: 06: Machine Level Programming II Control
    • Textbook: Chapter 3.6.6 - 3.8.4
    • Notes: lec06
  • 2026-06-01
    • Lecture: 07: Machine Level Programming III Procedure
    • Notes: lec07
    • Textbook: Chapter 3.8.5 - 3.10
    • LAB: Bomb Lab: Phase_1 - Phase_2
  • 2026-06-02
    • LAB: Bomb Lab: finished
  • 2026-06-03
    • Lecture: 08-09: Machine Level Programming IV-V Data - Advanced Topics
    • Notes: lec08-09
    • Textbook: Chapter 3.11 - Chapter 3.12
  • 2026-06-04
    • LAB: Attack Lab
  • 2026-06-07
    • Textbook: Chapter 5
    • Lecture: 10: Program Optimization
  • 2026-06-08
    • Textbook: Chapter 6
    • Notes: lec10
    • Lecture: 11: The Memory Hierarchy
  • 2026-06-09
    • Textbook: Chapter 7.1 - 7.5
    • Notes: lec12
    • Lecture: 12: Cache Memory
    • LAB: Cache Lab: Part A
  • 2026-06-10
    • LAB: Cache Lab: finished
  • 2026-06-11
    • Lecture: 13: Linking
    • Textbook: Chapter 7.6 - 7.15
  • 2026-06-13
    • Lecture: 14: Exceptions Control Flow: Exceptions and Processes
    • Textbook: Chapter 8.1 - 8.4
  • 2026-06-14
    • Lecture: 15: Exceptions Control Flow: Signals and Nonlocal Jumps
    • Textbook: Chapter 8.5 - 8.8
    • Notes: lec14
  • 2026-06-15
    • Lecture: 16: System Level I/O
    • Textbook: Chapter 10
    • Notes: lec16
  • 2026-06-16
    • LAB: Shell Lab
    • Lecture: 17: Virtual Memory Concepts
    • Textbook: Chapter 9.1 - 9.6
  • 2026-06-17
    • Lecture: 18 - 19: Virtual Memory Systems & Dynamic Memory Allocation Basic Concepts
    • Textbook: Chapter 9.7 - 9.9
  • 2026-06-18
    • Notes: lec17
    • Lecture: 20: Dynamic Memory Allocation Advanced Concepts
    • Textbook: Chapter 9.10 - 9.12
  • 2026-06-19
    • Notes: lec19
  • 2026-06-21
    • LAB: Malloc Lab: Implicit Free List Malloc
  • 2026-06-22
    • LAB: Malloc Lab: Implicit Free List Finished
  • 2026-06-24
    • LAB: Malloc Lab: Finished
  • 2026-06-26
    • Lecture: 21: Network Programming Part I
    • Textbook: Chapter 11.1 - 11.5
  • 2026-06-27
    • Lecture: 22: Network Programming Part II
    • Textbook: Chapter 11.6 - 11.7
  • 2026-06-28
    • Lecture: 23-24: Concurrent Programming & Synchronization Basics
    • Textbook: Chapter 12.1 - 12.5
  • 2026-06-30
    • Lecture: 25: Synchronization Advanced
    • Textbook: Chapter 12.6 - 12.8
    • Notes: lec23
  • 2026-07-01
    • LAB: Proxy Lab: Part I
  • 2026-07-02
    • LAB: Proxy Lab: Finished

后记

1个月学完了CSAPP,我感觉我的能力有了极大的提升

这门课与这本书果然名不虚传,补充了很多我在CS61C中不熟悉与不了解的东西

这门课的LAB难度都比较大,但是认真完成,一定可以学到很多知识

如果你看到这里,我想说,加油!与君共勉!

Art is never finished, only abandoned.

—— Leonardo da Vinci