- 博客(5)
- 收藏
- 关注
原创 关于中断线程和内核线程抢占自旋锁的情况
如果所有中断都集中在一个核心上处理(例如,所有外设中断都发送到核心 0),那么该核心上的 ISR 执行可能会长时间占用该核心的 CPU,导致该核心的其他任务(比如用户线程)无法执行。现象,具体解释为中断线程具有更高优先级,会抢占内核线程1执行,那么在中断线程2里永远无法获得自旋锁(因为已经锁被线程1占用了)。2、第二种方法,将线程一绑定在其他核上,比如核2,核1被中断占用不会影响核2上线程1的调度,等线程一释放完自旋锁后,中断获取到自旋锁继续执行。分析这两种情况,会带来哪些问题,怎么进行改进。
2025-04-03 11:45:07
110
原创 schedule()
如果没有一个运行任务,则进行负载均衡,选择下一个任务的调度方法一般是根据剩余的时间片counter和优先权priority来选择。禁用抢占 → 获取调度队列 → 任务状态更新 → 选择下一个任务 → 上下文切换 → 恢复调度状态。更新当前任务的状态,确保任务的调度状态正确。主要用来关闭抢占,防止在调度过程中被中断或抢占,确保调度逻辑的。从当前 CPU 的调度队列中选择下一个可运行任务。重新获取内核锁、恢复抢占、检查是否有新的调度请求。将任务移出可调度队列。如果没有任务切换,则释放调度队列锁。
2025-03-23 22:07:30
380
原创 处理器相关寄存器和出入栈规则(异常中断&函数跳转)
几年前学习异常中断和函数跳转的汇编的时候可能是一起学的,记忆模糊了。导致前几天有人问我函数跳转时,我把异常中断的情况答出来了,说明基础知识如果工作中用不到,还是得自己常常温习。2.将PC-4写入LR寄存器(为什么存PC-4参考ARM3级流水线,其实PC现在是PC+8的位置)4.将中断标志位置1,即禁止中断,防止中断嵌套;1、先把局部变量和指针参数保存到R0-R7,如果参数数量超过八个则超出的部分会被压入栈中。1.将LR寄存器的值-4或者-8存入PC。7、PC=LR 开始执行跳转前的下一条指令。
2025-03-23 11:49:46
292
原创 PCIe 设备端驱动详解(dma buffer映射)
最后我想直接使用bar映射后的空间开辟dma buffer应该也是可行的,这样减少了配置ATMU寄存器的步骤,但是要注意:1、内存对齐:DMA 操作通常要求内存是对齐的,因此你需要确保所分配的内存区域满足设备的对齐要求。另外,许多PowerPC处理器使用ATMU寄存器进行存储器域到PCI总线域,以及PCI总线域到存储器域的地址映射。PCIe HOST主桥是一个很特别的桥片,其主要功能是隔离存储器系统的存储器域和处理器系统的PCI总线域,管理PCI总线域,并完成处理器与PCI设备间的数据交换。
2025-02-24 22:10:27
450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人