点击查看《Xenomai/IPIPE源代码情景解析》
原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!
6.3.3 Xenomai/Linux进程/多线程描述符之间的关联
本章节在《6.3.2 Xenomai/Linux进程/主线程描述符之间的关联》的基础上,增加多线程的分析。
为了简化,仅分析新建一个子线程的情况。

- Linux子线程描述符struct task_struct的创建
参考《6.2 Xenomai线程的创建流程》,helloworld.c中的pthread_create被改头换面为__wrap_pthread_create,走到pthread_create_ex()函数,最终会调用__real_pthread_create意味着直接调用pthread库中的pthread_create函数。但是线程入口函数并不是原始入口函数,而被移花接木的改为跳板入口函数cobalt_thread_trampoline!
重点是,pthread_create最终依赖 clone 系统调用来创建新线程,当 clone 系统调用被触发时,控制权从用户空间转移到内核空间。Linux内核开始处理这个系统调用请求。
Linux内核会为新线程创建一个新的 task_struct 数据结构,如图中的右上角所示。task_struct 是 Linux 内核中用于表示进程或线程的数据结构,包含状态、调度信息、资源管理等信息。
内核将新线程的 task_struct 插入到调度器的就绪队列中,以便它可以被调度运行。
- Xen

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



