欢迎光临散文网 会员登陆 & 注册

cmu15-213 csapp 总结

2023-08-09 14:29 作者:敲推理  | 我要投稿

csapp的总结(还是一年前学的。。。)


lecture1--4

整数和float。整数主要是补码表示,float就是IEEE标准,这是他们的底层表示。
unsigned与int转换,不改变底层bit,还是那些bit,只是对bit的处理改变。而float与int转换,则是根据原来的值,产生新的bit值。


lecture5--9

这部分主要是汇编指令入门,如果做了相应的lab、听了课,就差不多了

  1. alignment(lectrue8)
    主要对于结构体


struct rec {    char c;    int i[2];    double v;} *p;unaligned:c(1字节)i[0](4)i[1](4)v[8]aligned:c(1)free(3)i[0](4)i[1](4)free(4)v[8]

aligned data要求数据是k字节,其地址必须是k的倍数;
如果是多个struct相邻,aligned要求是struct地址必须是k的倍数,k是自己内部所有数据中k最大的那个;

同样,可以重排,改变顺序,节省浪费空间

  1. buffer overflow(lec9)
    a. 如gets的bug, 进而注入代码等
    防护:栈的起始位置随机、canary等
    b. return-oriented programming attacks

  2. big endian little endian(lec9):用于多字节对象
    例如假设上述变量x类型为int,位于地址0x100处,它的值为0x01234567,地址范围为0x100~0x103字节,其内部排列顺序依赖于机器的类型。大端法从首位开始将是:0x100: 0x01, 0x101: 0x23,..。而小端法将是:0x100: 0x67, 0x101: 0x45,..。


lecture10--optimization

因为compiler能力有限,不能无限优化代码

  1. 将某个函数的返回值,存储下来,避免循环里多次调用、以及循环里的乘法等。如果学过compiler知道,compiler是有限的,没必要把一切交给不那么智能的compiler处理

  2. 等等,见ppt,这部分不是那么重要,因为这你也记不住


lec11-lec12(memory)

  1. locality(temporal spatial)

  2. Cache: A smaller,faster storage device that acts as a staging area for a subset of the data in a larger, slower device.

  3. cache miss(cold miss, conflict miss, capacity miss)

  4. cache organization(lec12)


  1. direct mapped cache(E=1)

  2. write with cache
    write hit:
    write-through(write immediately to memory)
    write-back(defer write to memory until replacement of line)
    write miss:
    Write-allocate (load into cache, update line in cache)
    No-write-allocate (writes straight to memory, does not load into cache)

write-through + no-write-allocate
write-back+write-allocate

  1. 矩阵乘法的优化(lec12最后)


lec13(linking)



格式为ELF


  1. linker symbols:global symbols/ external symbols/local symbols(static)

  2. static library \ shared library(at load time\run time)


lec14--15(ecf)




lec16(io)

unix io(read(), write()...)(unbuffered)
standard io(printf()...)(buffered)

  1. linux file(csapp 943)

shared file(open twice)


after fork


lec17--20(vm)


  1. vm in linux(csapp 867页)

  2. malloc


summary

csapp内容很繁杂,很多细节可能一问或者多想就会出错,而csapp自身在广不在深。所以想解决深度问题,可能就需要更进一步学习更深入知识,而csapp不行。

比如linking那里的static library和shared library,elf等等,你不自己实操看源码就很难体会,光靠csapp这本书的理论知识不太够,所以我也就不想太细扣了。打算放下这些问题,进行深入学习了。等把更深入的知识学会,这些问题应该也就不再是问题了,或者是很easy的问题了。

所以吸收csapp的知识作为基础、内功,学习更深入的就行了,这门课就至此彻底结束了。


cmu15-213 csapp 总结的评论 (共 条)

分享到微博请遵守国家法律