- 博客(14)
- 收藏
- 关注
原创 Linux 内核常用编程方法
SYSCALL_DEFINE:用于定义系统调用函数。例如SYSCALL_DEFINE1(brk,unsingned long,brk),相当于定义了sys_brk(unsigned long brk)。直接内核代码直接搜索sys_brk的实现是找不到对应结果的。
2021-05-20 09:37:59
141
原创 Linux 内存管理
在slab分配器中,每一类objects拥有一个"cache"(比如inode_cache, dentry_cache)。之所以叫做"cache"(不同于硬件上的cpu cache),是因为每分配一个object,都从包含若干空闲的同类objects的区域获取,释放时也直接回到这个区域,这样可以缓存和复用相同的objects,加快分配和释放的速度。object从"cache"获取内存,那"cache"的内存又是从哪里来的呢?还是得从buddy分配器来。slab层直接面向程序的分配需求,相当于是前端,而b
2021-05-17 14:45:26
444
原创 linux 进程调度
kernel/sched/core.c一、主调度器pick_next_task();判断当前cpu就绪队列rq-running中的进程数目是否与普通进程的就绪队列中的进程数目相同,如果相同就说明系统中全是普通进程,直接通过cfs算法的调度类的pick_next_task_fair函数来从普通进程的就绪队列中寻找进程即可。 否则,遍历调度类的链表,并从中选择一个优先级最高的进程。调度器类已经按如下顺序排序:rt_sched_class → fair_sched_class → idle_sc.
2021-05-14 16:04:59
216
原创 Linux 名词概念
NMI:不可屏蔽中断。 per-cpu:linux系统一个非常有趣的特性,它为系统中的每个处理器都分配了该变量的副本。 seqlock:顺序锁。 threaded interrput:中断线程化。
2021-05-12 11:14:48
158
原创 PREEMPT RT 实现原理
在使用PREEMPT RT时,源文件可分为两种形式:一个大的patch文件包含所有功能;或一系列分离的patch文件,每个只实现特定的功能,例如https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/[version]/patches***.xz。每个patch文件中都有各自实现功能的简要介绍。blk-mq-Don-t-complete-on-a-remote-CPU-in-force-threa.patch 在block mq中,中断
2021-05-12 11:14:33
1210
转载 linux内核源码结构
转自:https://www.cnblogs.com/amanlikethis/p/3641504.html一、源码结构表目录名 描述 arch 体系结构相关的代码,对于每个架构的CPU,arch目录下有一个对应的子目录,比如arch/arm、arch/i386 block 块设备的通用函数 crypto 常用的加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法 drivers 所有的设备驱动程序,里面每一个子目录对一个一类驱动程序,比如
2021-05-12 09:23:32
328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人