自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 【deepseek】remap_pfn_range 做了哪些事情

是 Linux 内核中实现的核心函数,它的作用是将物理内存页映射到用户进程的虚拟地址空间。

2025-05-22 15:52:10 977

原创 【DeepSeek】为什么需要linux-header

而不是完整的源代码(linux-source)。编译Linux驱动程序时,通常需要。

2025-05-20 16:43:28 383

原创 费曼技巧及提高计划

(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

原创 RISC-V入门资料

根据需要选择资源,保持对官网和社区的定期关注以获取更新!《RISC-V 体系结构编程与实践》

2025-05-08 15:56:05 809

原创 【deepseek】C 语言运行环境的核心组件

【代码】【deepseek】C 语言运行环境的核心组件。

2025-03-31 19:44:33 1341

原创 【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

原创 一些文档的整理

网络DPDK

2025-02-08 15:38:25 83

原创 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

原创 自己写完代码,总是担心有测试不到的问题怎么办?

在软件开发中,特别是在编写驱动程序或其他低级代码时,担心未测试到的问题是很常见的。

2025-02-06 18:03:27 223

原创 【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关注的人

提示
确定要删除当前文章?
取消 删除