From 701a0033e11c704b8e5811e198ab5c951ebe32ad Mon Sep 17 00:00:00 2001 From: Cheng Jian Date: Thu, 2 Jul 2020 21:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=B0=E5=9C=A8=E7=9A=84=20Linux=20=E5=86=85?= =?UTF-8?q?=E6=A0=B8=E5=92=8C=20Linux=202.6=20=E7=9A=84=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E6=9C=89=E5=A4=9A=E5=A4=A7=E5=8C=BA=E5=88=AB--https://www.zhih?= =?UTF-8?q?u.com/question/35484429?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- study/kernel/00-DESCRIPTION/LinuxChangeLog.md | 180 +++++++++++------- 1 file changed, 111 insertions(+), 69 deletions(-) diff --git a/study/kernel/00-DESCRIPTION/LinuxChangeLog.md b/study/kernel/00-DESCRIPTION/LinuxChangeLog.md index 42465ad..bc3e73e 100644 --- a/study/kernel/00-DESCRIPTION/LinuxChangeLog.md +++ b/study/kernel/00-DESCRIPTION/LinuxChangeLog.md @@ -1,7 +1,5 @@ \---------------------------------------------------------------------------------------------------------------- - 因研究兴趣转移, 个人时间,精力,能力有限等原因, 本人不会再有更新, 请见谅。 - \----------------------------------------------------------------------------------------------------------------- @@ -9,8 +7,7 @@ 这个问题挺大的。 - -2.6 时代跨度非常大,从2.6.0 (2003年12月发布\[36\]) 到 2.6.39(2011年5月发布), 跨越了 40 个大版本。 +2.6 时代跨度非常大,从2.6.0 (2003年12月发布[36]) 到 2.6.39(2011年5月发布), 跨越了 40 个大版本。 3.0(原计划的 2.6.40, 2011年7月发布) 到 3.19(2015年2月发布)。 @@ -42,9 +39,9 @@ 预计内容目录: -* **调度子系统(scheduling) \[已完成\]** -* **内存管理子系统(memory management) \[已完成\]** -* **中断与异常子系统(interrupt & exception)\[填坑中\]** +* **调度子系统(scheduling) [已完成]** +* **内存管理子系统(memory management) [已完成]** +* **中断与异常子系统(interrupt & exception)[填坑中]** * **时间子系统(timer & timekeeping)** * **同步机制子系统(synchronization)** * **块层(block layer)** @@ -164,7 +161,7 @@ O(1) 调度器存在一个比较严重的问题: 复杂的交互进程识别启 -Con Kolivas (八卦:这家伙白天是个麻醉医生)为解决这个问题提出**RSDL(The Rotating Staircase Deadline Scheduler)**算法。该算法的亮点是对公平概念的重新思考: **交互式(A)**和批量式(B)进程应该是被完全公平对待的,对于两个动态优先级完全一样的 A, B 进程,**它们应该被同等地对待,至于它们是交互式与否(交互式的应该被更快调度), 应该从他们对分配给他们的时间片的使用自然地表现出来,而不是应该由调度器自作高明地根据他们的睡眠时间去猜测。**这个算法的核心是Rotating Staircase, 是一种衰减式的优先级调整,不同进程的时间片使用方式不同,会让它们以不同的速率衰减(在优先级队列数组中一级一级下降,这是下楼梯这名字的由来), 从而自然地区分开来进程是交互式的(间歇性的少量使用时间片)和批量式的(密集的使用时间片)。具体算法细节可看这篇文章:[The Rotating Staircase Deadline Scheduler \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/224865/) +Con Kolivas (八卦:这家伙白天是个麻醉医生)为解决这个问题提出**RSDL(The Rotating Staircase Deadline Scheduler)**算法。该算法的亮点是对公平概念的重新思考: **交互式(A)**和批量式(B)进程应该是被完全公平对待的,对于两个动态优先级完全一样的 A, B 进程,**它们应该被同等地对待,至于它们是交互式与否(交互式的应该被更快调度), 应该从他们对分配给他们的时间片的使用自然地表现出来,而不是应该由调度器自作高明地根据他们的睡眠时间去猜测。**这个算法的核心是Rotating Staircase, 是一种衰减式的优先级调整,不同进程的时间片使用方式不同,会让它们以不同的速率衰减(在优先级队列数组中一级一级下降,这是下楼梯这名字的由来), 从而自然地区分开来进程是交互式的(间歇性的少量使用时间片)和批量式的(密集的使用时间片)。具体算法细节可看这篇文章:[The Rotating Staircase Deadline Scheduler [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/224865/) @@ -224,7 +221,7 @@ CFS 的测试性能比 RSDS 好,并得到更多的开发者支持,所以它 -更多可参看此文章:[Deadline scheduling: coming soon? \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/575497/) +更多可参看此文章:[Deadline scheduling: coming soon? [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/575497/) @@ -322,7 +319,7 @@ CFS 的测试性能比 RSDS 好,并得到更多的开发者支持,所以它 -关于这方面,可以看这篇文章:[Scheduling domains \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/80911/) +关于这方面,可以看这篇文章:[Scheduling domains [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/80911/) @@ -360,15 +357,15 @@ NUMA 机器一个重要特性就是不同 node 之间的内存访问速度有差 如果需要研究此功能的话,可参考以下几篇文章: --介绍 3.8 前两套竞争方案的文章:[A potential NUMA scheduling solution \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/522093/) +-介绍 3.8 前两套竞争方案的文章:[A potential NUMA scheduling solution [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/522093/) -\- 介绍 3.8 自动 NUMA 均衡 框架的文章:[NUMA in a hurry \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/524977/) +\- 介绍 3.8 自动 NUMA 均衡 框架的文章:[NUMA in a hurry [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/524977/) \- 介绍 3.8 后进展的两篇文章,细节较多,建议对调度/内存代码有研究后才研读: -[NUMA scheduling progress \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/568870/) +[NUMA scheduling progress [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/568870/) -[NUMA placement problems \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/591995/) +[NUMA placement problems [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/591995/) @@ -380,7 +377,7 @@ NUMA 机器一个重要特性就是不同 node 之间的内存访问速度有差 -在前不久,一个新的 patch 被提交到 Linux 内核开发邮件列表,这个问题也许有了新的眉目,到时再来更新此小节.可阅读此文章:[Steps toward power-aware scheduling \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/655479/) +在前不久,一个新的 patch 被提交到 Linux 内核开发邮件列表,这个问题也许有了新的眉目,到时再来更新此小节.可阅读此文章:[Steps toward power-aware scheduling [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/655479/) @@ -500,10 +497,10 @@ NUMA 机器一个重要特性就是不同 node 之间的内存访问速度有差 -# 1 内存分配 +# 1 内存分配 ------- -## 1.1 页分配器: 伙伴分配器[12](#ref-anchor-12) +## 1.1 页分配器: 伙伴分配器[12](#ref-anchor-12) ------- 古老, 具体时间难考 , 应该是生而有之. orz... @@ -845,7 +842,7 @@ active 头(热烈使用中) > active 尾 > inactive 头 > inactive 尾(被驱逐 -那么问题来了, 每个设备的门槛怎么确定? 设备的写回能力有强有弱(SSD 的写回速度比硬盘快多了), 一个合理的做法是根据当前设备的写回速度分配给等比例的带宽(门槛). **这种动态根据速度调整的想法在数学上就是指数衰减[26](#refer-anchor-26)的理念:某个量的下降速度和它的值成比例.** 所以, 在这个改进里, 作者引入了一个叫"**浮动比例**"的库, 它的本质就是一个**根据写回速度进行指数衰减的级数**. (这个库跟内核具体的细节无关, 感兴趣的可以研究这个代码: [\[PATCH 19/23\] lib: floating proportions \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/245603/)). 然后, 使用这个库, 就可以"实时地"计算出每个设备的带宽(门槛). +那么问题来了, 每个设备的门槛怎么确定? 设备的写回能力有强有弱(SSD 的写回速度比硬盘快多了), 一个合理的做法是根据当前设备的写回速度分配给等比例的带宽(门槛). **这种动态根据速度调整的想法在数学上就是指数衰减[26](#refer-anchor-26)的理念:某个量的下降速度和它的值成比例.** 所以, 在这个改进里, 作者引入了一个叫"**浮动比例**"的库, 它的本质就是一个**根据写回速度进行指数衰减的级数**. (这个库跟内核具体的细节无关, 感兴趣的可以研究这个代码: [[PATCH 19/23] lib: floating proportions [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/245603/)). 然后, 使用这个库, 就可以"实时地"计算出每个设备的带宽(门槛). @@ -968,7 +965,7 @@ Linux 内核在脏页数量到达一定门槛时, 或者用户在命令行输入 -它的实现是在系统启动时, 按照用户指定需求的最大大页个数, 每个页的大小. 预留如此多个数的大. . 用户在程序中可以使用 **mmap()** 系统调用或共享内存的方式访问这些大页, 例子网上很多, 或者参考官方文档:[hugetlbpage.txt \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/375098/) . 当然, 现在也存在一些用户态工具, 可以帮助用户更便捷地使用. 具体可参考此文章: [Huge pages part 2: Interfaces \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/375096/) +它的实现是在系统启动时, 按照用户指定需求的最大大页个数, 每个页的大小. 预留如此多个数的大. . 用户在程序中可以使用 **mmap()** 系统调用或共享内存的方式访问这些大页, 例子网上很多, 或者参考官方文档:[hugetlbpage.txt [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/375098/) . 当然, 现在也存在一些用户态工具, 可以帮助用户更便捷地使用. 具体可参考此文章: [Huge pages part 2: Interfaces [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/375096/) @@ -1202,9 +1199,9 @@ FRONTSWAP 对应的另一个后端叫 ZSWAP[35](#refer-anchor-35). ZS 关于 tmem, lwn 上的两篇文章值得关注技术细节的人一读: -[Transcendent memory in a nutshell \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/454795/) +[Transcendent memory in a nutshell [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/454795/) -[In-kernel memory compression \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/545244/) +[In-kernel memory compression [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/545244/) @@ -1412,7 +1409,7 @@ SLAB 作为一个相对独立的子模块, 一直有自己完善的调试支持, -\[一开始想把这节放在第12章"**内存管理调试支持**"中, 不过后来觉得这并非用于主动调试的功能, 所以还是放在此章. \] +[一开始想把这节放在第12章"**内存管理调试支持**"中, 不过后来觉得这并非用于主动调试的功能, 所以还是放在此章. ] @@ -1436,7 +1433,7 @@ SLAB 作为一个相对独立的子模块, 一直有自己完善的调试支持, -相关的文章介绍: \[47\]. +相关的文章介绍: [47]. @@ -1459,100 +1456,145 @@ SLAB 作为一个相对独立的子模块, 一直有自己完善的调试支持, **引用:**
-[1] [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification%23Non-registered_Unix-like_systems) +- [1] [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification%23Non-registered_Unix-like_systems) -[2] [POSIX 关于调度规范的文档](http://nicolas.navet.eu/publi/SlidesPosixKoblenz.pdf) +
+- [2] [POSIX 关于调度规范的文档](http://nicolas.navet.eu/publi/SlidesPosixKoblenz.pdf) -\[3\][Towards Linux 2.6](https://link.zhihu.com/?target=http%3A//www.informatica.co.cr/linux-scalability/research/2003/0923.html) +
+- [3] [Towards Linux 2.6](https://link.zhihu.com/?target=http%3A//www.informatica.co.cr/linux-scalability/research/2003/0923.html) -\[4\][Linux内核发布模式与开发组织模式(1)](https://link.zhihu.com/?target=http%3A//larmbr.com/2013/11/02/Linux-kernel-release-process-and-development-dictator-%26-lieutenant-system_1/) +
+- [4] [Linux内核发布模式与开发组织模式(1)](https://link.zhihu.com/?target=http%3A//larmbr.com/2013/11/02/Linux-kernel-release-process-and-development-dictator-%26-lieutenant-system_1/) -\[5\] IBM developworks 上有一篇综述文章,值得一读 :[Linux 调度器发展简述](https://link.zhihu.com/?target=http%3A//www.ibm.com/developerworks/cn/linux/l-cn-scheduler/) +
+- [5] IBM developworks 上有一篇综述文章,值得一读 :[Linux 调度器发展简述](https://link.zhihu.com/?target=http%3A//www.ibm.com/developerworks/cn/linux/l-cn-scheduler/) -\[6\][CFS group scheduling \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/240474/) +
+- [6] [CFS group scheduling [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/240474/) -\[7\][http://lse.sourceforge.net/numa/](https://link.zhihu.com/?target=http%3A//lse.sourceforge.net/numa/) +
+- [7] [http://lse.sourceforge.net/numa/](https://link.zhihu.com/?target=http%3A//lse.sourceforge.net/numa/) -\[8\][CFS bandwidth control \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/428230/) +
+- [8] [CFS bandwidth control [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/428230/) -\[9\][kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D5091faa449ee0b7d73bc296a93bca9540fc51d0a) +
+- [9] [kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D5091faa449ee0b7d73bc296a93bca9540fc51d0a) -\[10\][DMA模式\_百度百科](https://link.zhihu.com/?target=http%3A//baike.baidu.com/view/196502.htm) +
+- [10] [DMA模式\_百度百科](https://link.zhihu.com/?target=http%3A//baike.baidu.com/view/196502.htm) -\[11\][进程的虚拟地址和内核中的虚拟地址有什么关系? - 詹健宇的回答](http://www.zhihu.com/question/34787574/answer/60214771) +
+- [11] [进程的虚拟地址和内核中的虚拟地址有什么关系? - 詹健宇的回答](http://www.zhihu.com/question/34787574/answer/60214771)
- [12] [Physical Page Allocation](https://link.zhihu.com/?target=https%3A//www.kernel.org/doc/gorman/html/understand/understand009.html) -\[13\][The SLUB allocator \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/229984/) +
+- [13] [The SLUB allocator [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/229984/) -\[14\][Lumpy Reclaim V3 \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/211199/) +
+- [14] [Lumpy Reclaim V3 [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/211199/) -\[15\][Group pages of related mobility together to reduce external fragmentation v28 \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/224254/) +
+- [15] [Group pages of related mobility together to reduce external fragmentation v28 [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/224254/) -\[16\][Memory compaction \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/368869/) +
+- [16] [Memory compaction [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/368869/) -\[17\][kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式-humjb\_1983-ChinaUnix博客](https://link.zhihu.com/?target=http%3A//blog.chinaunix.net/uid-14528823-id-4808877.html) +
+- [17] [kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式-humjb\_1983-ChinaUnix博客](https://link.zhihu.com/?target=http%3A//blog.chinaunix.net/uid-14528823-id-4808877.html) -\[18\][Toward improved page replacement \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/226756/) +
+- [18] [Toward improved page replacement[LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/226756/) -\[19\][kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D4f98a2fee8acdb4ac84545df98cccecfd130f8db) +
+- [19] [kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D4f98a2fee8acdb4ac84545df98cccecfd130f8db) -\[20\][The state of the pageout scalability patches \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/286472/) +
+- [20] [The state of the pageout scalability patches [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/286472/) -\[21\][kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D894bc310419ac95f4fa4142dc364401a7e607f65) +
+- [21] [kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D894bc310419ac95f4fa4142dc364401a7e607f65) -\[22\][Being nicer to executable pages \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/333742/) +
+- [22] [Being nicer to executable pages [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/333742/) -\[23\][kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D8cab4754d24a0f2e05920170c845bd84472814c6) +
+- [23] [kernel/git/torvalds/linux.git](https://link.zhihu.com/?target=https%3A//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/%3Fid%3D8cab4754d24a0f2e05920170c845bd84472814c6) -\[24\][Better active/inactive list balancing \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/495543/) +
+- [24] [Better active/inactive list balancing [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/495543/) -\[25\][Smarter write throttling \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/245600/) +
+- [25] [Smarter write throttling [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/245600/) -\[26\][https://zh.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%B0%E5%87%8F](https://link.zhihu.com/?target=https%3A//zh.wikipedia.org/wiki/%25E6%258C%2587%25E6%2595%25B0%25E8%25A1%25B0%25E5%2587%258F) +
+- [26] [https://zh.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%B0%E5%87%8F](https://link.zhihu.com/?target=https%3A//zh.wikipedia.org/wiki/%25E6%258C%2587%25E6%2595%25B0%25E8%25A1%25B0%25E5%2587%258F) -\[27\][Flushing out pdflush \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/326552/) +
+- [27] [Flushing out pdflush [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/326552/) -\[28\][Dynamic writeback throttling \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/405076/) +
+- [28] [Dynamic writeback throttling [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/405076/) -\[29\][On-demand readahead \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/235164/) +
+- [29] [On-demand readahead [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/235164/) -\[30\][Transparent huge pages in 2.6.38 \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/423584/) +
+- [30] [Transparent huge pages in 2.6.38 [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/423584/) -\[31\][https://events.linuxfoundation.org/sites/events/files/lcjp13\_ishimatsu.pdf](https://link.zhihu.com/?target=https%3A//events.linuxfoundation.org/sites/events/files/lcjp13_ishimatsu.pdf) +
+- [31] [https://events.linuxfoundation.org/sites/events/files/lcjp13\_ishimatsu.pdf](https://link.zhihu.com/?target=https%3A//events.linuxfoundation.org/sites/events/files/lcjp13_ishimatsu.pdf) -\[32\][transcendent memory for Linux \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/338098/) +
+- [32] [transcendent memory for Linux [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/338098/) -\[33\][linux kernel monkey log](https://link.zhihu.com/?target=http%3A//www.kroah.com/log/linux/linux-staging-update.html) +
+- [33] [linux kernel monkey log](https://link.zhihu.com/?target=http%3A//www.kroah.com/log/linux/linux-staging-update.html) -\[34\][zcache: a compressed page cache \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/397574/) +
+- [34] [zcache: a compressed page cache [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/397574/) -\[35\][The zswap compressed swap cache \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/537422/) +
+- [35] [The zswap compressed swap cache [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/537422/) -\[36\][Linux-Kernel Archive: Linux 2.6.0](https://link.zhihu.com/?target=http%3A//lkml.iu.edu/hypermail/linux/kernel/0312.2/0348.html) +
+- [36] [Linux-Kernel Archive: Linux 2.6.0](https://link.zhihu.com/?target=http%3A//lkml.iu.edu/hypermail/linux/kernel/0312.2/0348.html) -\[37\]抢占支持的引入时间: [https://www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.4](https://link.zhihu.com/?target=https%3A//www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.4) +
+- [37]抢占支持的引入时间: [https://www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.4](https://link.zhihu.com/?target=https%3A//www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.4) -\[38\][RAM is 100 Thousand Times Faster than Disk for Database Access](https://link.zhihu.com/?target=http%3A//www.directionsmag.com/entry/ram-is-100-thousand-times-faster-than-disk-for-database-access/123964) +
+- [38] [RAM is 100 Thousand Times Faster than Disk for Database Access](https://link.zhihu.com/?target=http%3A//www.directionsmag.com/entry/ram-is-100-thousand-times-faster-than-disk-for-database-access/123964) -\[39\] [http://www.uefi.org/sites/default/files/resources/ACPI\_6.0.pdf](https://link.zhihu.com/?target=http%3A//www.uefi.org/sites/default/files/resources/ACPI_6.0.pdf) +
+- [39] [http://www.uefi.org/sites/default/files/resources/ACPI\_6.0.pdf](https://link.zhihu.com/?target=http%3A//www.uefi.org/sites/default/files/resources/ACPI_6.0.pdf) -\[40\][Injecting faults into the kernel \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/209257/) +
+- [40] [Injecting faults into the kernel [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/209257/) -\[41\][Detecting kernel memory leaks \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/187979/) +
+- [41] [Detecting kernel memory leaks [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/187979/) -\[42\][The kernel address sanitizer \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/612153/) +
+- [42] [The kernel address sanitizer [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/612153/) -\[43\][Linux Kernel Shared Memory 剖析](https://link.zhihu.com/?target=http%3A//www.ibm.com/developerworks/cn/linux/l-kernel-shared-memory/) +
+- [43] [Linux Kernel Shared Memory 剖析](https://link.zhihu.com/?target=http%3A//www.ibm.com/developerworks/cn/linux/l-kernel-shared-memory/) -\[44\][KSM tries again \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/330589/) +
+- [44] [KSM tries again [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/330589/) -\[45\][HWPOISON \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/348886/) +
+- [45] [HWPOISON [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/348886/) -\[46\][https://www.mcs.anl.gov/research/projects/mpi/](https://link.zhihu.com/?target=https%3A//www.mcs.anl.gov/research/projects/mpi/) +
+- [46] [https://www.mcs.anl.gov/research/projects/mpi/](https://link.zhihu.com/?target=https%3A//www.mcs.anl.gov/research/projects/mpi/) -\[47\][Fast interprocess messaging \[LWN.net\]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/405346/) +
+- [47] [Fast interprocess messaging [LWN.net]](https://link.zhihu.com/?target=https%3A//lwn.net/Articles/405346/)