本文参考于《操作系统真相还原》
1、执行流的概念
我们首先来介绍一下执行流的概念,执行流就是一段逻辑上独立的指令区域,对应于代码,大到可以是整个程序文件,即进程,小到可以是一个功能独立的代码块,即函数,而线程本质上就是函数。执行流是独立的,其独立性体现在每个执行流都有自己的栈、一套自己的寄存器映像和内存资源,其实这就是执行流的上下文环境。因此,我们要想构造一个执行流,就要为其提供一整套的资源。因此,任何代码块,无论大小都可以独立成为执行流,只要在它运行的时候,我们提前准备好它所依赖的上下文环境即可,这里的上下文环境就是它所使用的寄存器映像、栈、内存等资源。
那么,成为独立的执行流有什么用呢?在任务调度器的眼里,只有执行流才是调度单元,即处理器上运行的,每个任务都是调度器给分配的执行流,只要成为执行流就能够独立上处理器运行了,也就是说可以分配处理器的时间,处理器会专门分时来处理这个执行流中的指令。
2、线程到底是什么?
首先,我们通过一段代码来感受一下线程的创建:
#linclude<stdio.h>
#include<pthread