目录
哈喽,小伙伴们大家好。在之前的文章中我介绍过进程,想必小伙伴们对进程也都有一定的了解。今天我将介绍一个新概念——线程,线程的本质是什么呢?线程和进程的联系是什么呢?线程本身又有哪些特性呢?这些问题都将在下面的文章中得到答案,话不多说,我们赶紧开始吧。
线程概念:在一个进程里的执行路线就叫做线程。
我在之前的文章中提到过,每个进程都对应一个task_struct,而每个task_struct都指向不同的地址空间,在不同的地址空间中根据页表映射到物理内存中。这句话其实不太准确,因为这句话成立有一个前提,那就是进程内部只有一个执行流,也就是单线程的。
如果一个进程是多线程的,则如下图所示,每一个task_struct对应的是一个线程,而且这些线程都指向同一张地址空间表。站在内核角度,承担分配系统的基本实体,角度进程。控制块,地址空间,页表共同组成一个进程。
和进程间具有独立性不同,线程间的地址空间和物理内存是共享的,数据改变并不会有写时拷贝发生。

linux线程设计:
从linux内核的角度看,linux下并不存在真正意义上的多线程,所谓线程都是用进程模拟的。如