前言
在没有仔细了解过Linux的进程和线程实现机制之前,看过很多关于进程和线程的博客,从这些博客中我大概知道进程和线程的区别
1、进程拥有独立的内存空间,因此进程与进程之间相对独立,互不影响,但缺点进程间的通信相对复杂
2、同一进程的线程共享进程的内存和资源(线程有自己的私有空间),因此同一进程下的线程之间的通信很方便,缺点是一个线程的出问题会影响到同一进程下的其他线程
看完这些关于进程和线程的博客后,我有一些疑惑如下:
1、细心的小伙伴会发现,在探讨进程和线程的区别时,默认考虑的是同一进程下的线程,那么不同进程下的线程又当如何通信?
2、在初学Linux时,就被告知Linux是一个多进程的操作系统,那么线程在Linux中又是如何体现?
3、Linux中进程和线程的底层实现逻辑是怎么样?
Linux中进程和线程的共性
在Linux中进程和线程,到了内核里面,统一被称为任务,由结构体task_struct进行描述,也就是说关于任务的管理,最终是对结构体task_struct进行管理
task_struct结构分布图如下所示:

如何管理?
1、每一个任务都有一个自己的专属ID,通过这个ID我们可以判断出这是线程任务,还是进程任务(pid是process id,tgid是t

本文详细介绍了Linux中进程和线程的共性和区别。进程和线程在内核中都由task_struct描述,进程通过fork创建,涉及大量资源复制,而线程由clone创建,共享大部分资源。创建线程时,用户态先创建线程栈,内核态则主要负责引用计数增加。总结了进程和线程的创建流程及其核心区别。
最低0.47元/天 解锁文章
850

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



