操作系统中Process和Thread的区别

一个Process的数据结构是这样的:
操作系统中Process和Thread的区别
操作系统中Process和Thread的区别
操作系统中Process和Thread的区别
操作系统中Process和Thread的区别在操作系统中,一个进程是由父进程clone出来的,第一个初始进程的PID是1,所以操作系统中有一个P-tree。
应用软件有并发的需求,当我用网易云音乐听歌的时候不能搜索新歌,这是不可想象的。开多线程可以满足这个需求,那么为什么不开多进程呢?因为成本高,主要是三方面:进程间通信,进程切换,进程之间的内存空间不共享。而线程是存在于进程内的。啥叫在进程内?这个描述有点抽象,我们来讲讲他们之间的关系。
首先进程和线程他们都是通过clone来创建的,区别在于clone的参数不一样(在Linux中有点特殊,使用pthread_create创建,这是历史原因),一个进程A里面一定有一个线程a,且a的LWP(light weight process)就是A的PID,当一个A clone了一个线程b出来,那么a和b的TGID就是A的PID,且她们各自有自己的LWP,PID均为A的pid,如下图:
操作系统中Process和Thread的区别操作系统中Process和Thread的区别
参考资料:https://www.slashroot.in/difference-between-process-and-thread-linux