活跃农民
积分 642
大米 颗
鳄梨 个
水井 尺
蓝莓 颗
萝卜 根
小米 粒
学分 个
注册时间 2019-9-6
最后登录 1970-1-1
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
世界顶尖计算机名校CMU卡内基梅隆大学开发的计算机系统入门课程CMU 15213/15513 CSAPP/Intro to Computer Systems 这门课大致对应国内的计算机组成原理 这门课,但又不同于传统的计算机组成原理 。简单来说,这本书或这门课是讲述代码在机器里是如何运行的;很多大厂开发岗常见要求:能写出高性能的代码 ,其实就是要求掌握这门课的知识。
这本书的封面恰好就是它要讲的核心知识之一内存缓存Cache Memory 与局部性原理Locality 的关系,它用一个三维坐标系表示的趋势来直观展现缓存性能(吞吐量) 与时间局部性(数据大小),空间局部性(步进大小) 的关系。
言归正传
这本书适合所有想要对计算机系统知识建立完整认知体系的群体:大一大二, 刚转码选手,初级程序员。对今后深入学习四大课程: 操作系统/数据库/计算机网络/数据结构算法 等课程都很有帮助。尤其对学习并发编程/并行编程/系统编程/网络编程/编译原理 有直接知识衔接。
我是结合视频先挑重点看,再配合重点Lab: cachelab, malloclab, shelllab, proxylab巩固知识。
.
CMU CSAPP官方课件 -- 网上都有
CMU CSAPP官方Lab Handout公开的实验材料 -- 网上都有
CMU CSAPP视频公开课重点提纲(本人实用版列表)
Lecture 08: Machine-Level Programming IV: Data 没时间可以跳过汇编部分 .
Lecture 09: Machine-Level Programming V: Advanced Topics 缓冲区溢出攻击!!!
Lecture 10: Program Optimization 所谓高质量代码
Lecture 11: The Memory Hierarchy 提到局部性原理;tradeoff的工程sense
Lecture 12: Cache Memories 这门课重中之重, Blocking这个技术很聪明 . check 1point3acres for more.
Lecture 13: Linking 链接器相关的八股,static的意义,略难建议对照书本; library interpositioning库打桩技术
Lecture 14: Exceptional Control Flow: Exceptions and Processes 所谓安全稳健的代码,结合了操作系统多进程并发,上下文切换,用户态内核态转换,父进程子进程
Lecture 15: Exceptional Control Flow: Signals and Nonlocal Jumps 从信号的角度,解释了上下文切换实现多进程并发的原理,最后讲的处理子进程并发的一个小Bug非常有趣 .1point3acres
Lecture 16: System Level I/O Unix下一切皆为fd; read/write异常; Unix文件管理; Unix I/O vs Standard I/O vs RIO
Lecture 17: Virtual Memory: Concepts 很重点;虚拟内存;结合局部性解释地址虚拟化意义和页置换;颠簸现象;最后用多层页表节约页表空间; . ----
Lecture 18: Virtual Memory: Systems 太硬太底层原理了,没时间可跳过
Lecture 19 Dynamic Memory Allocation: Basic Concepts 重要; 堆实现动态内存分配;malloc/free原理;内存分配速度/吞吐量和内存利用率之间的tradeoff; 寻找free Block三种方式; free block的双向合并
Lecture 20 Dynamic Memory Allocation: Advanced Concepts 更复杂情况; 没时间可跳过 .--
Lecture 21 Networking Programming: Part I 过于基础;扫盲为主;可直接从40分socket开看
Lecture 22 Networking Programming: Part II 挺有用的;详细解读C语言服务端网络编程代码
Lecture 23 Concurrent Programming 很重点; 并发的意义;三种并发流方法及代码实现;其中Event-Based的多路复用select和epoll用来确认array中的哪些events有输入;详细讲解了process-based和thread-based的各种区别
Lecture 24 Synchronization Basics 挺重要的,多线程共享;不同线程的堆栈概念上是独立的,实际上是可以相互访问的,这个造成冲突;全局变量实例在内存中,局部变量实例在线程的堆栈中;讲了一个线程并发同步相关的bug,非常经典,具有非常高学习价值;这个bug原因在于多个线程之间的汇编指令交错interleaving都是可能的,而一些交错会带来错误的结果;用进度图progress graph分析线程并发;关键:对全局变量cnt进行操作的临界区critical section不能交错;进度图中临界区交集的状态空间叫做不安全区unsafe region, 进度图轨迹不得穿越不安全区;问题:如何保证线程安全?答:同步线程,将它们的临界区互斥;实现互斥三种方法:信号量semaphores(核心方法), mutex and condition variables(Pthreads), Monitors(Java) . check 1point3acres for more.
Lecture 25 Synchronization Advanced
Lecture 26 Thread Level Parallelism 对于职业生涯非常实用的一节课,讲了下同步开销, Amdahl's law,并行快速排序,基于内存模型并发计算的内存一致性问题,snoopy caches
上一篇:
UIUC Data Structure Proficiency Exam 历程分享 下一篇:
wustl cs research 教授推荐