- 博客(32)
- 收藏
- 关注
原创 【deepseek】remap_pfn_range 做了哪些事情
是 Linux 内核中实现的核心函数,它的作用是将物理内存页映射到用户进程的虚拟地址空间。
2025-05-22 15:52:10
977
原创 费曼技巧及提高计划
(Feynman Technique)由诺贝尔物理学奖得主理查德·费曼提出,是一种通过“以教代学”来彻底理解复杂概念的学习方法。通过将知识简化、类比和输出,迫使大脑从被动接受转向主动构建,从而提升学习效率。:选一个你今天学到的概念,用费曼技巧花5分钟解释给身边的人吧!
2025-05-16 19:37:28
676
原创 费曼技巧及提高计划
(Feynman Technique)由诺贝尔物理学奖得主理查德·费曼提出,是一种通过“以教代学”来彻底理解复杂概念的学习方法。通过将知识简化、类比和输出,迫使大脑从被动接受转向主动构建,从而提升学习效率。:选一个你今天学到的概念,用费曼技巧花5分钟解释给身边的人吧!
2025-05-16 19:34:42
838
原创 提高表达能力
通过以上方法,你可以逐步将讨论中的“被动流畅”转化为自主表达的“主动流畅”。过程中记得录音或录像,对比3个月前后的变化,会发现明显的进步轨迹。你遇到的这种情况其实很常见,背后的原因可能涉及思维模式、心理状态和表达习惯的综合作用。
2025-05-16 19:12:50
344
原创 【deekseek】P2P通信路由过程
当使用DMA时,封包需精确指定目标BAR地址,并由Switch确保路由有效性。此机制显著降低延迟,适用于高性能存储和计算场景(如GPU Direct、NVMe-oF)。时,数据无需经过Root Complex(RC)或主机内存,而是通过Switch直接路由。同一PCIe Switch下的设备间P2P通信通过。在PCIe网络中,当。
2025-05-13 17:07:33
1042
原创 【deepseek】pcie bar 大小
包括哪些区域分配给DRAM、哪些区域保留给MMIO(Memory-Mapped I/O)。现代RC(如Intel的Xeon处理器)允许固件动态配置MMIO窗口的位置和大小。Host芯片(如Intel/AMD的CPU或ARM SoC)定义了系统的。RC是CPU与PCIe设备之间的桥梁,其地址路由逻辑(如Intel的。操作系统(如Linux)可能重新分配BAR地址(例如通过。某些RC实现可能预定义固定的MMIO窗口(如仅支持。内核参数),但需遵循RC的地址窗口规则。),超出此范围的BAR地址无法被路由。
2025-05-13 17:07:01
857
原创 【deepseek】pcie bar 大小
包括哪些区域分配给DRAM、哪些区域保留给MMIO(Memory-Mapped I/O)。现代RC(如Intel的Xeon处理器)允许固件动态配置MMIO窗口的位置和大小。Host芯片(如Intel/AMD的CPU或ARM SoC)定义了系统的。RC是CPU与PCIe设备之间的桥梁,其地址路由逻辑(如Intel的。操作系统(如Linux)可能重新分配BAR地址(例如通过。某些RC实现可能预定义固定的MMIO窗口(如仅支持。内核参数),但需遵循RC的地址窗口规则。),超出此范围的BAR地址无法被路由。
2025-05-13 17:00:54
912
原创 【DeekSeek】拓扑结构中(一个 Root Port 下挂载两级 Switch),能否实现 P2P 通信取决于中间 Switch 的功能支持(如 ACS 隔离、转发能力等
在您描述的拓扑结构中(一个 Root Port 下挂载两级 Switch),(如 ACS 隔离、转发能力等)。
2025-05-13 16:47:34
472
原创 【DeepSeek】判断两个 PCIe 设备是否属于**同一个 PCIe 子树
在 Linux 系统中,判断两个 PCIe 设备是否属于**同一个 PCIe 子树(Subtree)**是 P2P 通信的关键前提。
2025-05-13 16:39:03
428
原创 【deekseek】TCP Offload Engine
TOE通过硬件实现完整TCP协议栈,是超低延迟网络的基石技术,但其部署需权衡兼容性、安全性与成本。在AI、大数据等场景中,TOE与RDMA、DPU的协同将成为下一代数据中心的关键架构。:TOE 通过硬件固化协议栈和零拷贝架构,将延迟降低1~2个数量级,成为超低延迟网络的基石技术。但其部署需权衡协议灵活性、硬件成本和生态支持。:当应用发送数据时,TOE 网卡直接从用户态内存抓取数据,由硬件生成TCP/IP头并发送,全程无需CPU参与。,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。
2025-05-13 16:14:57
983
原创 RDMA核心组件 的总结表格
(WQE下发→硬件执行→CQE返回)增强可视化效果。此表格可用于PPT中对比核心组件关系,建议配合。(展示QP/CQ/WQ的层级)和。
2025-05-12 14:34:27
317
原创 【deepseek】cbo 指令简介
使用cbo指令是 RISC-V 生态中的最佳实践,它在标准化、可移植性和功能明确性之间取得了平衡。在开发底层缓存管理代码时,优先遵循 RISC-V 标准扩展,仅在必要时依赖厂商特定指令。
2025-03-19 09:13:00
543
原创 【deepseek】位置无关代码介绍
好的,我来为你详细解释这些概念,并附上 RISC-V 的代码示例。PC 相对寻址auipc%pcrel_hi%pcrel_lo0x10000x800000000x200000000x80000000。
2025-03-10 10:56:42
588
原创 Run Queue
就绪状态(Ready)**的进程或线程。它直接决定了调度器如何选择下一个要执行的任务,是影响系统性能(如吞吐量、延迟、公平性)的关键组件。(支持多核/异构架构)之间取得平衡。理解其原理是优化系统性能(如降低延迟、提高吞吐量)和调试复杂调度问题的关键基础。Run Queue 是调度器的“心脏”,其设计需要在。在操作系统中,**Run Queue(运行队列)(合理分配CPU时间)、
2025-02-17 10:53:19
1415
原创 调度器原理
理解调度原理不仅需要掌握算法理论,还需结合具体硬件架构(如缓存一致性、中断频率)进行优化,这是操作系统内核开发中最具挑战性的领域之一。是资源分配的核心机制,其本质是在。
2025-02-17 10:52:35
1753
原创 中断上半部和下半部
通过合理分割中断处理流程,系统既能快速响应硬件事件,又能高效完成复杂任务,是操作系统高可靠性与高性能的关键设计之一。在操作系统中,中断处理分为。,这种分割的目的是为了平衡。
2025-02-17 10:46:57
395
原创 OpenSBI架构
OpenSBI 的架构设计旨在为 RISC-V 处理器提供一个灵活且可扩展的引导加载程序和运行时环境。通过将不同功能模块化,OpenSBI 能够支持多种硬件平台和操作系统,使得开发者可以轻松地在 RISC-V 生态系统中进行开发和部署。架构中的每一层都发挥着重要的作用,确保系统的稳定性、安全性和性能。
2025-02-10 21:22:13
403
原创 OpenSBI 目的与功能
OpenSBI 通过提供一个标准化的引导加载程序和运行时环境,使得 RISC-V 架构的开发变得更加高效和一致。它不仅负责硬件的初始化和管理,还为操作系统提供了必要的接口和服务,从而推动了 RISC-V 生态系统的发展。通过理解 OpenSBI 的目的与功能,开发者可以更好地利用 RISC-V 平台进行嵌入式和高性能计算的开发。
2025-02-10 21:19:49
456
原创 OpenSBI 的一些关键点和学习资源
目的与功能OpenSBI 主要负责在 RISC-V 处理器上进行初始化,并为操作系统提供一个标准的运行时环境。它提供了一组 API,供操作系统访问硬件功能,包括中断管理、定时器、内存管理等。架构OpenSBI 通常运行在 RISC-V 的超级用户模式(Supervisor Mode),并提供一个抽象层,使操作系统能够以一致的方式访问硬件。它支持多种 RISC-V 硬件平台,包括不同的 SoC(系统级芯片)和开发板。与其他组件的关系。
2025-02-10 21:17:24
672
原创 struct page 介绍
每个物理内存页面在内核中都有一个对应的 struct page 实例,内核通过这个结构来管理和跟踪物理内存的使用情况。以下是对 struct page 的详细介绍。页面引用计数: 通过 _count 字段,内核能够跟踪页面的引用情况,确保在没有引用时可以安全地释放页面,避免内存泄漏。页面状态管理: 通过 flags 字段,内核可以管理页面的状态,例如标记页面为脏页(需要写回)或清洁页(不需要写回)。文件系统缓存: 在文件系统中,内核使用 struct page 来管理页面缓存,以提高文件读取的效率。
2025-02-06 20:51:51
321
原创 pgd(Page Global Directory)
在 Linux 内核中,pgd(Page Global Directory)是一个指向页全局目录的指针,用于管理虚拟内存到物理内存的映射。它是 struct mm_struct 中的一个重要字段,负责描述一个进程的虚拟地址空间的页表结构。每个进程都有自己的页全局目录,用于管理该进程的虚拟内存。页面错误处理: 在处理页面缺失(page fault)时,内核会使用 pgd 来查找缺失页面的映射关系,并进行相应的处理。PGD: 使用虚拟地址的高位部分索引到 PGD,找到对应的页中间目录(PUD)。
2025-02-06 20:50:49
204
原创 struct mm_struct 简介
struct mm_struct 是 Linux 内核中用于描述进程的内存管理信息的关键数据结构。它包含了与进程虚拟内存相关的所有信息,包括虚拟内存区域、页表、内存使用统计等。在内核中,struct mm_struct 的使用通常与内存管理相关的函数一起进行。页面错误处理: 在处理页面缺失(page fault)时,内核会查找 mm_struct 中的虚拟内存区域,以确定如何处理缺失的页面。虚拟内存区域管理: 通过 mmap 系统调用,动态管理进程的虚拟内存区域。
2025-02-06 20:49:51
411
原创 struct mm_struct 简介
struct mm_struct 是 Linux 内核中用于描述进程的内存管理信息的关键数据结构。它包含了与进程虚拟内存相关的所有信息,包括虚拟内存区域、页表、内存使用统计等。在内核中,struct mm_struct 的使用通常与内存管理相关的函数一起进行。页面错误处理: 在处理页面缺失(page fault)时,内核会查找 mm_struct 中的虚拟内存区域,以确定如何处理缺失的页面。虚拟内存区域管理: 通过 mmap 系统调用,动态管理进程的虚拟内存区域。
2025-02-06 20:49:10
394
原创 struct vm_area_struct 简介
每个进程都有一个或多个虚拟内存区域,这些区域用于管理进程的内存分配,包括代码段、数据段、堆、栈和映射的文件等。在内核中,struct vm_area_struct 的使用通常与内存管理相关的函数一起进行。内存映射: 当使用 mmap() 系统调用映射文件或设备内存到进程的虚拟地址空间时,内核会创建相应的 vm_area_struct 实例。遍历虚拟内存区域: 内核可以通过 vm_area_struct 的链表结构,遍历进程的所有虚拟内存区域,以执行各种内存管理操作。
2025-02-06 20:48:05
397
原创 /dev/mem 驱动层实现
dev/mem 在 Linux 内核中的实现是通过字符设备接口和内存管理机制来实现的。当用户空间程序打开 /dev/mem 时,内核会调用 mem_open() 函数。在 Linux 内核中,/dev/mem 的实现涉及多个关键组件,包括字符设备驱动、内存管理子系统以及安全机制。权限检查: 在 mem_open() 函数中,使用 capable(CAP_SYS_RAWIO) 检查调用者是否有权限进行原始 I/O 操作。打开设备: 使用 open(“/dev/mem”, O_RDWR) 打开设备。
2025-02-06 20:46:35
303
原创 【mmap 使用】
在 ARM Linux 系统中,将硬件寄存器映射到用户空间通常涉及使用 mmap() 函数。通过这种方式,用户空间程序可以直接访问特定的寄存器地址范围。以下是一个示例,说明如何将地址范围为 0x10000 到 0x11000 的寄存器映射到用户空间。以下是一个示例 C 程序,演示如何将寄存器地址范围 0x10000 到 0x11000 映射到用户空间,并进行读写操作。确保你有足够的权限(通常需要超级用户权限)来访问 /dev/mem,并且内核配置允许访问该内存区域。
2025-02-06 20:42:31
177
原创 【dump mmu 页表】
在 Linux 内核中,每个进程都有一个 task_struct 结构体,包含了该进程的所有信息。你可以通过进程的 PID(进程标识符)来获取对应的 task_struct。在方法 3 中,编写内核模块以 dump 进程的 MMU 页表时,你需要在模块中指定要操作的进程。内核版本:上述代码在不同的内核版本中可能会有所不同,确保根据你的内核版本进行调整。加载模块:使用 insmod 命令加载模块,并指定目标进程的 PID。通过这种方式,你可以指定要 dump 的进程,并获取其 MMU 页表的信息。
2025-02-06 15:55:17
306
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人