Newshot
Account

寻找关于内存模型的教学材料

AI summary

大家好,我正在为我担任助教的一门课程准备补充材料,这是我们学校开设的操作系统课程,学生需要开发一个面向 Raspberry Pi 3B+ 的操作系统。我想涉及的主题之一是强内存模型与弱内存模型(以及为什么 ARM 有那么多奇怪的数据/指令缓冲区同步操作,学生在编写 MMU 时必须处理),所以如果你有关于内存模型的优秀示例文章、段落或博客,曾对你有所帮助,请在评论中分享,我好去看看!谢谢!

Translation(model translation, not the source's own text)
  • 16 寻找关于内存模型的教学材料 ☶ ask osdev 作者 spoonmilk 2026-11-10 13:51:19 | 7 条评论

寻找关于内存模型的教学材料

我正在为一门我担任助教的课程准备一些补充材料,这门课是我们学校版本的操作系统课,内容涉及学生开发一个面向 Raspberry Pi 3B+ 的操作系统。我想涉及的主题之一是强内存模型与弱内存模型(以及为什么 ARM 有那么多奇怪的数据/指令缓冲区同步操作,学生在编写 MMU 时必须处理这些),所以如果你有任何关于内存模型的优秀示例文章/段落/博客曾经帮到过你,请在评论里分享,我好去看一看!

  • 8 orib 编辑于 2026-11-10 14:45:57 经典资料仍然适用,而且相当有效地把内存模型的语义与你为何可能希望在硬件中那样实现联系起来:https://shiftleft.com/mirrors/www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf 我还认为 rsc 在更新 Go 内存模型时写的那些文章表述得相当好:https://research.swtch.com/mm 另外,虽然我没有重看,但我似乎记得这个也相当不错:https://learning.acm.org/techtalks/multicore

3 polywolf 2026-11-10 17:41:02 不幸的是,我从中学到的最相关的所有材料现在都被锁在大学登录墙后面了 :( 如果你愿意把相关的东西当作灵感的话:我在那些知识还新鲜的时候写了一个简短的博客系列,算是有点关联(关于互斥锁,最后谈到了内存模型),面向的是偏初学者的读者:https://wolfgirl.dev/blog/2064554/ https://wolfgirl.dev/blog/2091838/ https://faultlore.com/blah/tower-of-weakenings/(以及之前的文章 https://faultlore.com/blah/fix-rust-pointers/)帮助我理解了内存模型不只影响硬件,也影响软件中的合法变换 https://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html 还有维基百科页面 https://en.wikipedia.org/wiki/Consistency_model#Relaxing_read_and_read_to_write_program_orders:_Alpha,_RMO,_and_PowerPC 充满了非常邪门的内存模型例子,不过作为入门材料不太好

~ juliaaa 2026-11-10 19:47:57 UNSW 的高级操作系统课程有一讲关于内存模型:https://cgi.cse.unsw.edu.au/~cs9242/26/lectures.shtml(第 4 周周二)。第 8 周周四/第 9 周周二晚上可能也相关。

~ juliaaa 编辑于 2026-11-10 20:55:01 同事补充:剑桥大学硕士级别课程的幻灯片和讲义,还有 MPI-SWS 课程的幻灯片。关于 MMU 同步:这超出了我所知的所有现有讲座材料的范围。它只出现在 ESOP 论文 http://arxiv.org/abs/2203.00642 和 EuroSys'27 的 casemate 论文中。

~ bgamari 编辑于 2026-11-11 21:59:26 虽然它没有补足很多背景知识,"Correct and Efficient Work-Stealing for Weak Memory Models"(Minh Lê 2013)是在弱内存模型(包括 ARMv7 的糟糕之处)下设计和验证并发数据结构的一个很好的例子。虽然对本科课程来说可能有点超纲,但它勾勒出的证明对于更进阶的读者来说是这类推理的很好的入门。另外,CppMem 是理解 C++11 排序语义对具体程序影响的好工具。相应的论文("Mathematizing C++ Concurrency" Batty 2011)值得一读,可能适合高年级本科生读者。

~ chc4 2026-11-11 00:50:43 我所知的最好的资源,也是我通常推荐给别人的,是 Herb Sutter 的 "atomic Weapons" 演讲录像。https://youtu.be/A8eCGOqgvH4 https://youtu.be/KeLBd2EJLOU

~ kleidi 2026-11-11 01:48:13 我经常回看的一些链接:Linux 内核内存模型解释:https://raw.githubusercontent.com/torvalds/linux/refs/heads/master/tools/memory-model/Documentation/explanation.txt Rust 原子类型和锁的章节:https://mara.nl/atomics/memory-ordering.html

  • 8 orib 编辑于 2026-11-10 14:45:57 经典资料仍然适用,而且相当有效地把内存模型的语义与你为何可能希望在硬件中那样实现联系起来:https://shiftleft.com/mirrors/www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf 我还认为 rsc 在更新 Go 内存模型时写的那些文章表述得相当好:https://research.swtch.com/mm 另外,虽然我没有重看,但我似乎记得这个也相当不错:https://learning.acm.org/techtalks/multicore

像 {{NAME_ab12cd34}} 这样写出的值,是真实值的占位符。请完全按原样使用它们,无论是在回复中还是在工具调用中:它们会在任何东西运行之前被填入真实值。不要要求验证它们,也不要用示例替换它们。

文章标题:寻找关于内存模型的教学材料

正文: 这篇经典文献仍然很有参考价值,而且它把内存模型的语义与你可能希望在硬件中那样实现它的原因有效地联系了起来:https://shiftleft.com/mirrors/www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf

我还认为 rsc 在更新 Go 内存模型时写的那些文章表达得相当好:https://research.swtch.com/mm

另外,虽然我没有重新看一遍,但我似乎记得这个也相当不错:https://learning.acm.org/techtalks/multicore

  • 3 polywolf 2026-11-10 17:41:02 不幸的是,我从那里学到的所有最相关的材料现在都被大学登录墙锁住了 :( 如果你愿意把相关的东西作为灵感来源的话:我在那些知识还比较新鲜的时候写了一个简短的博客系列,内容有点相关(关于互斥锁,最终谈到了内存模型),面向的是偏初学者的读者:https://wolfgirl.dev/blog/2064554/ https://wolfgirl.dev/blog/2091838/ https://faultlore.com/blah/tower-of-weakenings/(以及之前的文章 https://faultlore.com/blah/fix-rust-pointers/)帮助我理解了内存模型不仅影响硬件,也影响软件中的合法变换 https://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html 以及维基百科页面 https://en.wikipedia.org/wiki/Consistency_model#Relaxing_read_and_read_to_write_program_orders:_Alpha,_RMO,_and_PowerPC 里充满了非常诡异的记忆模型示例,不过作为入门材料并不好

不幸的是,我从那里学到的所有最相关的材料现在都被大学登录墙锁住了 :( 如果你愿意把相关的东西作为灵感来源的话:

我在那些知识还比较新鲜的时候写了一个简短的博客系列,内容有点相关(关于互斥锁,最终谈到了内存模型),面向的是偏初学者的读者:https://wolfgirl.dev/blog/2064554/ https://wolfgirl.dev/blog/2091838/

https://faultlore.com/blah/tower-of-weakenings/(以及之前的文章 https://faultlore.com/blah/fix-rust-pointers/)帮助我理解了内存模型不仅影响硬件,也影响软件中的合法变换

https://www.cs.umd.edu/~pugh/java/memoryModel/AlphaReordering.html 以及维基百科页面 https://en.wikipedia.org/wiki/Consistency_model#Relaxing_read_and_read_to_write_program_orders:_Alpha,_RMO,_and_PowerPC 里充满了非常诡异的记忆模型示例,不过作为入门材料并不好

  • ~ juliaaa 2026-11-10 19:47:57 UNSW 的高级操作系统课程中有一讲是关于内存模型的:https://cgi.cse.unsw.edu.au/~cs9242/26/lectures.shtml(第 4 周周二)。第 8 周周四/第 9 周周二晚上也可能相关。 ~ juliaaa 编辑于 2026-11-10 20:55:01 同事补充:剑桥大学硕士级别课程的幻灯片和笔记,以及 MPI-SWS 课程的幻灯片。关于 MMU 同步:这超出了我所知的所有现有讲座材料的范围。它只出现在 ESOP 论文 http://arxiv.org/abs/2203.00642 和 EuroSys'27 的 casemate 论文中。

UNSW 的高级操作系统课程中有一讲是关于内存模型的:https://cgi.cse.unsw.edu.au/~cs9242/26/lectures.shtml(第 4 周周二)。第 8 周周四/第 9 周周二晚上也可能相关。

  • ~ juliaaa 编辑于 2026-11-10 20:55:01 同事补充:剑桥大学硕士级别课程的幻灯片和笔记,以及 MPI-SWS 课程的幻灯片。关于 MMU 同步:这超出了我所知的所有现有讲座材料的范围。它只出现在 ESOP 论文 http://arxiv.org/abs/2203.00642 和 EuroSys'27 的 casemate 论文中。

同事补充:

剑桥大学硕士级别课程的幻灯片和笔记,以及 MPI-SWS 课程的幻灯片。

关于 MMU 同步:

这超出了我所知的所有现有讲座材料的范围。它只出现在 ESOP 论文 http://arxiv.org/abs/2203.00642 和 EuroSys'27 的 casemate 论文中。
  • ~ bgamari 编辑于 2026-11-11 21:59:26 虽然它没有补充很多背景,但 "Correct and Efficient Work-Stealing for Weak Memory Models"(Minh Lê 2013)是在弱内存模型(包括 ARMv7 的糟糕之处)下设计和验证并发数据结构的绝佳示例。虽然对本科课程来说可能有些勉强,但它勾勒的证明对进阶读者来说是这类推理的极好入门。另外,CppMem 是理解 C++11 排序语义对具体程序影响的极好工具。对应的论文("Mathematizing C++ Concurrency",Batty 2011)值得一读,进阶本科生读者可能也能读懂。

虽然它没有补充很多背景,但 "Correct and Efficient Work-Stealing for Weak Memory Models"(Minh Lê 2013)是在弱内存模型(包括 ARMv7 的糟糕之处)下设计和验证并发数据结构的绝佳示例。虽然对本科课程来说可能有些勉强,但它勾勒的证明对进阶读者来说是这类推理的极好入门。

另外,CppMem 是理解 C++11 排序语义对具体程序影响的极好工具。对应的论文("Mathematizing C++ Concurrency",Batty 2011)值得一读,进阶本科生读者可能也能读懂。

  • ~ chc4 2026-11-11 00:50:43 我所知道的最好资源,也是我通常推荐给别人的,是 Herb Sutter 的 "atomic Weapons" 演讲录像。https://youtu.be/A8eCGOqgvH4 https://youtu.be/KeLBd2EJLOU

我所知道的最好资源,也是我通常推荐给别人的,是 Herb Sutter 的 "atomic Weapons" 演讲录像。

https://youtu.be/A8eCGOqgvH4 https://youtu.be/KeLBd2EJLOU

  • ~ kleidi 2026-11-11 01:48:13 我经常回看的几个链接:Linux 内核内存模型说明:https://raw.githubusercontent.com/torvalds/linux/refs/heads/master/tools/memory-model/Documentation/explanation.txt Rust 原子操作与锁章节:https://mara.nl/atomics/memory-ordering.html

我经常回看的几个链接:

  • Linux 内核内存模型说明:https://raw.githubusercontent.com/torvalds/linux/refs/heads/master/tools/memory-model/Documentation/explanation.txt
  • Rust 原子操作与锁章节:https://mara.nl/atomics/memory-ordering.html

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by Lobsters
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗