![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kernel
文章平均质量分 59
研究内核,学无止境
编码小哥
嵌入式系统研发工程师
展开
-
【解答】关于Linux内核的一些疑问
此后这个方向上的研究导致了九号计划的出现,这是一个新的分布式操作系统。GNU的命名是"GNU's Not Unix"的递归缩写,因为它的设计与Unix相似,但并不包含具有著作权的Unix代码。尽管GNU计划下有许多项目和工作被完成,如核心的gcc和glibc,但由于缺少操作系统内核,原定的内核叫HURD一直未能完成。在一些错误修复修订后,它们可以达到“生命周期结束”,这意味着内核维护者将不再发布此内核版本的错误修复,或者它们可以投入“长期”维护,这意味着维护者将在更长的时间内为这个内核修订版提供错误修复。原创 2023-11-26 14:15:46 · 103 阅读 · 0 评论 -
Linux内核的内存管理
6. 页面替换算法:这部分主要负责在内存不足时选择合适的页面进行替换,以保持内存的可用性。1. 物理内存管理:这部分主要负责将物理内存划分为不同的页表项,以便操作系统能够快速地访问和操作内存。/* 将选定的页面添加到最近最少使用列表中 *//* 将用户空间的地址映射到物理内存中 *//* 将物理内存中的地址映射回用户空间 *//* 获取CPU缓存行的大小 *//* 合并相邻的空闲页面 *//* 设置页表项的保护位 *//* 清除页表项的保护位 *//* 从缓存中读取数据 *//* 选择要替换的页面 */原创 2023-11-22 22:57:41 · 191 阅读 · 0 评论 -
从哪些方面分析Linux内核源码
1. 什么是Linux内核?2. Linux内核的主要功能3. Linux内核的版本控制4. Linux内核的组织结构。原创 2023-11-20 22:48:24 · 147 阅读 · 0 评论 -
Linux内核中的container_of
具体而言,宏定义的函数体包含了一个指针类型变量p,它被赋值为ptr减去结构体成员变量member在结构体中的偏移量的值。(type*)( (char *)__mptr - offsetof(type,member) ):使用offsetof宏计算出type结构体中成员变量member的偏移量后,用char指针__mptr将ptr指针转换为字符类型进行指针运算,并且将结果重新转换为指向结构体变量type的指针。总的来说,该宏用来获取结构体成员变量在结构体中的偏移量,从而得出指向整个结构体的指针。原创 2023-06-28 13:52:25 · 183 阅读 · 0 评论 -
Linux内核中的offsetof
在一些内核编程实践中,有些时候我们并不知道结构体成员的偏移量,此时可以利用这个宏来获取偏移量,并进行访问结构体成员的操作。宏定义中的关键点是利用了一个指针(TYPE *)0,得到它地址上成员MEMBER的地址,再求出两者之间的偏移量,利用C语言中两个指针相减的结果就是它们之间的距离,即偏移量。整个宏定义的过程中,会进行一次取地址和强制类型转换,最终得到的是被强制转换的类型和成员相对于结构体首地址的偏移量。这就为以后在使用结构体成员时提供了便利,可以直接使用结构体首地址加上成员的偏移量来访问结构体中的成员。原创 2023-04-26 23:59:23 · 522 阅读 · 0 评论 -
内核编译
内核编译分为两种: (1)编译成模块(.ko文件) (2)直接编进内核 两种方式各有千秋,根据具体需求而定,第一种方式比较灵活,用则插入(insmod/modprob),不用则删除(rmmod),第二种方式与内核文件共存,直接增大了内核镜像文件,用的时候不用单独插入(insmod/modprob)。 ...原创 2021-08-31 22:58:05 · 58 阅读 · 0 评论