目录
一,线程的定义
1,线程的普遍定义
线程是进程内部的执行流。
2,线程在Linux中的定义
线程是更加轻量化的进程。
二,线程与进程
1,线程与进程的区别
示意图:
这个图便是进程的示意图。由这个图便可知道:
1,进程 = pcb+进程地址空间+页表+加载到虚拟内存中的代码和数据。
2,线程 = task_struct(pcb)
2,linux中没有真正意义上的线程
由Linux中对线程的定义以及上面的示意图可知,在Linux中并没有真正意义上的线程。在Linux中只是使用pcb来模拟了线程的实现。
3,扩展
1,之前学习到的进程是一个单执行流的进程,现在学习到的进程便是一个多执行流的的进程。第一个task_struct是被叫做主线程。
2,对于cpu而言,线程便成为了cpu调度的基本单位。进程不是cpu调度的基本单位,进程是分配资源的基本实体。
3,对于同一个进程里的线程,每个线程的pid都是一样的,要区别开这些线程则要通过lwp来区分开。
4,如何理解线程是更加轻量化的进程
1,线程的创建更加轻量化
线程的创建不需要申请内存资源,但是进程的创建需要申请内存资源。
2,线程的调度更加轻量化
1,线程在切换时需要清理的寄存器的内容更少。
2,线程在切换时不需要清理cache缓存,但是进程在切换时需要清理cache缓存(主要原因)。