Linux底软开发基础路线与学习总结-持续更新


$ Linux学习路线


1. C, C++, Shell-Bash编程

2. Makefile

跟我一起写Makefile

3. CMake

https://github.com/ShieldQiQi/cmake-examples

4. 汇编基础

5. 《程序员的自我修养-链接、装载与库》 《Linux内核设计与实现》 《深入理解Linux内核》 《Linux设备驱动程序》

6. Linux数据结构

7. 刷题Leetcode


$ 学习总结-持续更新


1.为什么Linux不在链表结构体中放数据,而是在数据结构体中放链表结构体struct list_head?

如果使用前一种方法,对于每一个数据结构都需要定义专门的链表,而后一种方法,只需要在新的数据结构体中放入统一的双向链表list_head即可,然后通过list_entry获取该链表指针指向的数据结构体

2.为什么list_entry(ptr, type, member)member使用的是sibling而不是children

这是因为task_struct->children->next指向的是下一个进程的sibling成员而不是children成员

3.task_struct中除了包含parentchildren等可以找出父进程子进程的成员外,还包含tasks成员,这是一个双向循环链表,里面包含了所有的进程结构体

4.Linux内核中条件判断语句使用likelyunlikely正确可以提高程序指令跳转执行速度,其中likely这个宏里面使用!!是将判断表达式转化为bool类型

上一篇:HDU 5074-Hatsune Miku(DP)


下一篇:uniapp开发小程序