自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-03-31 19:44:33 880

原创 【deepseek】cbo 指令简介

使用cbo指令是 RISC-V 生态中的最佳实践,它在标准化、可移植性和功能明确性之间取得了平衡。在开发底层缓存管理代码时,优先遵循 RISC-V 标准扩展,仅在必要时依赖厂商特定指令。

2025-03-19 09:13:00 442

原创 【deepseek】位置无关代码介绍

好的,我来为你详细解释这些概念,并附上 RISC-V 的代码示例。PC 相对寻址auipc%pcrel_hi%pcrel_lo0x10000x800000000x200000000x80000000。

2025-03-10 10:56:42 550

原创 Run Queue

就绪状态(Ready)**的进程或线程。它直接决定了调度器如何选择下一个要执行的任务,是影响系统性能(如吞吐量、延迟、公平性)的关键组件。(支持多核/异构架构)之间取得平衡。理解其原理是优化系统性能(如降低延迟、提高吞吐量)和调试复杂调度问题的关键基础。Run Queue 是调度器的“心脏”,其设计需要在。在操作系统中,**Run Queue(运行队列)(合理分配CPU时间)、

2025-02-17 10:53:19 731

原创 调度器原理

理解调度原理不仅需要掌握算法理论,还需结合具体硬件架构(如缓存一致性、中断频率)进行优化,这是操作系统内核开发中最具挑战性的领域之一。是资源分配的核心机制,其本质是在。

2025-02-17 10:52:35 946

原创 中断上半部和下半部

通过合理分割中断处理流程,系统既能快速响应硬件事件,又能高效完成复杂任务,是操作系统高可靠性与高性能的关键设计之一。在操作系统中,中断处理分为。,这种分割的目的是为了平衡。

2025-02-17 10:46:57 350

原创 OpenSBI架构

OpenSBI 的架构设计旨在为 RISC-V 处理器提供一个灵活且可扩展的引导加载程序和运行时环境。通过将不同功能模块化,OpenSBI 能够支持多种硬件平台和操作系统,使得开发者可以轻松地在 RISC-V 生态系统中进行开发和部署。架构中的每一层都发挥着重要的作用,确保系统的稳定性、安全性和性能。

2025-02-10 21:22:13 374

原创 OpenSBI 目的与功能

OpenSBI 通过提供一个标准化的引导加载程序和运行时环境,使得 RISC-V 架构的开发变得更加高效和一致。它不仅负责硬件的初始化和管理,还为操作系统提供了必要的接口和服务,从而推动了 RISC-V 生态系统的发展。通过理解 OpenSBI 的目的与功能,开发者可以更好地利用 RISC-V 平台进行嵌入式和高性能计算的开发。

2025-02-10 21:19:49 379

原创 OpenSBI 的一些关键点和学习资源

目的与功能OpenSBI 主要负责在 RISC-V 处理器上进行初始化,并为操作系统提供一个标准的运行时环境。它提供了一组 API,供操作系统访问硬件功能,包括中断管理、定时器、内存管理等。架构OpenSBI 通常运行在 RISC-V 的超级用户模式(Supervisor Mode),并提供一个抽象层,使操作系统能够以一致的方式访问硬件。它支持多种 RISC-V 硬件平台,包括不同的 SoC(系统级芯片)和开发板。与其他组件的关系。

2025-02-10 21:17:24 619

原创 一些文档的整理

网络DPDK

2025-02-08 15:38:25 72

原创 struct page 介绍

每个物理内存页面在内核中都有一个对应的 struct page 实例,内核通过这个结构来管理和跟踪物理内存的使用情况。以下是对 struct page 的详细介绍。页面引用计数: 通过 _count 字段,内核能够跟踪页面的引用情况,确保在没有引用时可以安全地释放页面,避免内存泄漏。页面状态管理: 通过 flags 字段,内核可以管理页面的状态,例如标记页面为脏页(需要写回)或清洁页(不需要写回)。文件系统缓存: 在文件系统中,内核使用 struct page 来管理页面缓存,以提高文件读取的效率。

2025-02-06 20:51:51 297

原创 pgd(Page Global Directory)

在 Linux 内核中,pgd(Page Global Directory)是一个指向页全局目录的指针,用于管理虚拟内存到物理内存的映射。它是 struct mm_struct 中的一个重要字段,负责描述一个进程的虚拟地址空间的页表结构。每个进程都有自己的页全局目录,用于管理该进程的虚拟内存。页面错误处理: 在处理页面缺失(page fault)时,内核会使用 pgd 来查找缺失页面的映射关系,并进行相应的处理。PGD: 使用虚拟地址的高位部分索引到 PGD,找到对应的页中间目录(PUD)。

2025-02-06 20:50:49 172

原创 struct mm_struct 简介

struct mm_struct 是 Linux 内核中用于描述进程的内存管理信息的关键数据结构。它包含了与进程虚拟内存相关的所有信息,包括虚拟内存区域、页表、内存使用统计等。在内核中,struct mm_struct 的使用通常与内存管理相关的函数一起进行。页面错误处理: 在处理页面缺失(page fault)时,内核会查找 mm_struct 中的虚拟内存区域,以确定如何处理缺失的页面。虚拟内存区域管理: 通过 mmap 系统调用,动态管理进程的虚拟内存区域。

2025-02-06 20:49:51 381

原创 struct mm_struct 简介

struct mm_struct 是 Linux 内核中用于描述进程的内存管理信息的关键数据结构。它包含了与进程虚拟内存相关的所有信息,包括虚拟内存区域、页表、内存使用统计等。在内核中,struct mm_struct 的使用通常与内存管理相关的函数一起进行。页面错误处理: 在处理页面缺失(page fault)时,内核会查找 mm_struct 中的虚拟内存区域,以确定如何处理缺失的页面。虚拟内存区域管理: 通过 mmap 系统调用,动态管理进程的虚拟内存区域。

2025-02-06 20:49:10 371

原创 struct vm_area_struct 简介

每个进程都有一个或多个虚拟内存区域,这些区域用于管理进程的内存分配,包括代码段、数据段、堆、栈和映射的文件等。在内核中,struct vm_area_struct 的使用通常与内存管理相关的函数一起进行。内存映射: 当使用 mmap() 系统调用映射文件或设备内存到进程的虚拟地址空间时,内核会创建相应的 vm_area_struct 实例。遍历虚拟内存区域: 内核可以通过 vm_area_struct 的链表结构,遍历进程的所有虚拟内存区域,以执行各种内存管理操作。

2025-02-06 20:48:05 375

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

原创 【mmap 使用】

在 ARM Linux 系统中,将硬件寄存器映射到用户空间通常涉及使用 mmap() 函数。通过这种方式,用户空间程序可以直接访问特定的寄存器地址范围。以下是一个示例,说明如何将地址范围为 0x10000 到 0x11000 的寄存器映射到用户空间。以下是一个示例 C 程序,演示如何将寄存器地址范围 0x10000 到 0x11000 映射到用户空间,并进行读写操作。确保你有足够的权限(通常需要超级用户权限)来访问 /dev/mem,并且内核配置允许访问该内存区域。

2025-02-06 20:42:31 154

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

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

2025-02-06 18:03:27 211

原创 【dump mmu 页表】

在 Linux 内核中,每个进程都有一个 task_struct 结构体,包含了该进程的所有信息。你可以通过进程的 PID(进程标识符)来获取对应的 task_struct。在方法 3 中,编写内核模块以 dump 进程的 MMU 页表时,你需要在模块中指定要操作的进程。内核版本:上述代码在不同的内核版本中可能会有所不同,确保根据你的内核版本进行调整。加载模块:使用 insmod 命令加载模块,并指定目标进程的 PID。通过这种方式,你可以指定要 dump 的进程,并获取其 MMU 页表的信息。

2025-02-06 15:55:17 296

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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