linux内核
文章平均质量分 71
杨枫_mind
这个作者很懒,什么都没留下…
展开
-
备忘一次linux riscv cpu进入用户中断处理之前度过的时光 2024.3
按照1G Hz计算,一次中断要搞多久。原创 2024-03-20 15:28:06 · 413 阅读 · 0 评论 -
从两个独立地址空间发起的对同一物理地址的atomic操作,是否会有效?
分析:atomic操作是ldrex/strex之类的指令,基于MESI或类MESI协议, 而MESI对与cache一致性是基于物理地址实现(如invalid), 所以,如果两个独立地址空间中映射同一个地址,那么这个地址就应该可以被atomic...原创 2022-05-28 23:56:16 · 149 阅读 · 0 评论 -
CRIU内核补丁分析
1. 将procfs的proc_get_link中使用的inode传参改为dentry传参2. 在procfs添加/proc/pid/map_files/目录用于建立本进程到其所用动态库、进程的二进制文件的软链接,以文件在内存映射的VA地址段即文件名2.1 当dump一个进程的映射的时候,需要确切的知道其所用的二进制/动态库文件的映射地址,添加了map_files目录可以直接拿到这些映射2.2 用map_files做对比,也可以确定出此进程共享的匿名映射2.3 当restore一系列进程,这原创 2022-05-28 23:35:51 · 514 阅读 · 0 评论 -
Qspinlock的分析(仅分析快速获取部分,剩下部分是mcs锁的原理)
pending的加入使qspinlock对3竞争状态有极好的适应性A lock B pending C watch wait until timeout原创 2022-05-28 23:35:11 · 358 阅读 · 0 评论 -
为了在内核中可靠的持有一个进程,分析一下PID
出现一个新的pid的时机是在创建或操作进程;在较新的内核中,描述进程pid这个事儿由于掺杂了namespace变得复杂;以Flag CLONE_NEWPID为界,决定在create_new_namespace时,是否创建一个新的pid_namespace问题:PIDTYPE_PID/PIDTYPE_PGID/PIDTYPE_SID这几个不同的type的处理原创 2022-05-28 23:48:44 · 299 阅读 · 0 评论 -
原子操作、MESI和内存屏障引起我对锁理解的智障2020.3
前言:先向已经贡献大量公开文档的前辈们致敬,不管是中文的、英文的;再鄙视一下ARM文档中关于DMB之类的文字,赤裸裸的鄙视,我截一段大家感受下:“The DMB instruction ensures that all affected memory accesses by the PE executing the DMB instruction that appear in program ...原创 2020-03-09 11:09:36 · 866 阅读 · 2 评论 -
重用page->mapping
翻译自LWN.NET因为要在struct page这一小段内存中填入最大量的信息,linux kernel中的结构体page是最复杂的结构体之一。struct page中每一个区域都重度过载,开发者们都倾向于:若能避免,绝不对struct page做修改。不过,这并没有阻止JérômeGlisse在2018年Linux存储,文件系统和内存管理峰会的两次全体会议上提出重大更改的建议。建议提供了一...翻译 2020-02-28 15:11:34 · 958 阅读 · 0 评论 -
向struct page里塞更多东西
翻译并篡改更新自LWN.NET 2013年8月的一篇文章。通常,内核开发人员更倾向于设计可读性和可维护性高的数据结构。当人们理解一段代码使用的数据结构时,对代码本身的理解通常就不会遥远。因此,内核使用最频繁的数据结构之一也是其可理解性最差的之一,这个事实可能会令人惊讶。这个数据结构就是struct page,代表物理内存的页面。最近的一个补丁集,使struct page更加复杂,当然,这也为快...翻译 2020-02-28 15:10:58 · 300 阅读 · 0 评论 -
信息量爆表的struct page->flags
先把kernel4.15的一段注释截图送上:很明显我关注的是之前crash中0x1ffff0000000000与0x5ffff0000000000的含义,然后再来一个神级大图:上面这个图很不错,但是对于不同的平台通过配置了.config中的参数如CONFIG_NODES_SHIFT、CONFIG_NR_CPUS等,flags中各段占据的字节数和bit分段点是不一样的,不过安排的顺序...原创 2020-02-28 15:10:22 · 572 阅读 · 0 评论 -
struct address_space解读
首先说的是Page Cacheaddress_space的操作将“文件”的某些部分映射到Linux page cache中的页面中。此page cache表示已映射到内存的某些物理设备(例如磁盘)上的数据。物理设备通常对应于磁盘,但不一定必须如此。以这种方式,page cache包含来自最近访问的“文件”的整个页面。在页面I / O操作(例如read()])中,内核检查数据是否驻留在page ...原创 2020-02-28 15:09:36 · 1823 阅读 · 0 评论