- 博客(8)
- 收藏
- 关注
原创 搞清楚linux系统中MMU和mmap区别
MMU是集成在CPU中的硬件单元,负责将虚拟地址转换为物理地址;mmap则是操作系统提供的系统调用,用于将文件或设备映射到进程的虚拟地址空间。MMU位于硬件与内核层之间,通过页表实现地址转换,而mmap位于应用层与内核层之间,通过减少数据拷贝提高效率。内核借助MMU将物理页映射到进程空间,用户访问映射区时直接通过MMU访问物理页,避免了read/write系统调用的开销。驱动中的mmap实现通常是将已分配的物理内存映射到用户空间,而非新建内存区域。
2025-06-27 10:24:36
577
原创 快速理解不同锁以及并发控制
本文介绍了并发控制的基本概念和实现机制。首先阐述了并发控制的核心问题是资源抢占,需要通过锁等工具实现互斥访问。文章详细分析了内核态和应用层的不同场景:内核态依靠时间片轮转调度任务,需使用原子操作保护关键代码;应用层则面临线程间资源共享问题。重点讲解了多种并发控制工具,包括原子操作、自旋锁、互斥锁、信号量等,并对比了自旋锁(忙等待)和互斥锁(可睡眠)的特点。最后解释了Linux内核的调度机制,指出调度以task_struct为单位,线程和进程都是调度任务。
2025-06-14 20:36:58
858
原创 简要阐述linux系统中断关键点
本文介绍了Linux中断处理机制的关键要点。中断处理分为上半部和下半部:上半部要求快速执行以确保实时性,采用不可抢占的轮询机制;下半部处理耗时操作,可使用tasklet或softirq,但禁止使用可能导致睡眠的函数。更复杂的任务可安排到work queue中执行。文章还通过一个按键中断驱动的代码示例,展示了如何利用设备树获取GPIO、申请中断以及使用devm系列函数安全分配资源。重点强调了中断上下文的特殊性(不能睡眠)以及资源管理的注意事项。
2025-06-06 16:07:44
301
原创 一文速通Linux字符设备驱动
字符设备是 Linux 和 Unix 系统中的一种特殊文件类型,它与硬件设备直接交互,用于处理数据流的输入和输出。字符设备是通过字节流来与设备进行通信,数据的传输通常是顺序的,即一次处理一个字节。常见的字符设备包括终端、串口设备、键盘和鼠标等。这些设备的特点是数据的读写是逐个字符进行的,且在访问时无需按照特定的块进行读取,因此它们适用于那些数据处理量较小、速度要求较高的场景。字符设备的设备文件通常位于 /dev 目录下,例如 /dev/ttyS0 可能表示一个串口设备。
2025-04-26 10:45:45
870
原创 为什么用脚本方式编译linux内核
每个文件都有一个最后修改时间戳。如果依赖文件的时间戳比目标文件更新(即依赖文件被修改过),make 会判断目标文件过时,需要重新编译生成。而脚本通常只修改或执行必要的步骤,利用内核编译系统的增量编译特性,只编译变化的部分,从而缩短编译时间。
2025-03-07 22:24:19
212
原创 GIC400 的运行基本逻辑
它可以根据 GIC 的配置来选择是否触发中断,根据系统需要屏蔽低优先级的中断,或只允许高优先级的中断通过,从而保证系统的稳定性和高效响应。它的作用是控制 CPU 的中断处理行为。在中断由CPU interface传入CPU CORE时, GICD_IGROUPRn 负责 控制每个中断属于 Group 0 还是 Group 1,GICD_IGROUPRn 是一个 32 位的寄存器,每一位对应一个中断源。,它的作用是将外部和内部的中断请求分发给相应的处理器核心,根据中断请求的优先级顺序来决定处理顺序。
2025-02-27 15:51:09
1007
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅