查看: 2618| 回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

[转CS-自学] CMU 15513 Computer Systems: A Programmer's Perspective 评测+总结

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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

评分

参与人数 6大米 +6 收起 理由
Edward2020 + 1 给你点个赞!
xucb + 1 赞一个
Joyblue + 1 赞一个
Peter349 + 1 楼主/层主请继续!
不规则矮星系 + 1 赞一个

查看全部评分


上一篇:UIUC Data Structure Proficiency Exam 历程分享
下一篇:wustl cs research 教授推荐
全局:
感谢分享!
回复

使用道具 举报

全局:
点赞!学到了,干货满满
回复

使用道具 举报

推荐
R777 2022-7-9 06:21:25 | 只看该作者
全局:
很棒的资料!!! 感谢楼主!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表