操作系统 | 关于进程、线程、用户线程、内核线程
一、进程和线程
进程:操作系统分配资源的最小单位
线程:CPU调度的最小单位
- 每个线程共享进程的代码段
- 每个线程共享进程的数据段
- 每个线程共享进程的堆
- 每个线程都有自己的栈和一些私有的数据,所以相互之间可以不受影响
以上的意思就是进程是线程的”容器“,而线程是可以被CPU调度的最小单元。
执行流:逻辑上独立的指令区域,简单点就是能上CPU执行的,它具有:
- 内存资源
- 一套寄存器映像
- 独立体现在每个执行流都有自己的栈
线程就是一套机制,为一般的代码块创造上下文环境,从而让代码块独立,使这块代码块能被调度器认可,从而能被专门调度到处理器上执行。
比如一个进程上有多个函数,那么对函数A pthread_create
,其实就是为函数A创建上下文,让它成为了能在CPU上执行的独立指令区域,即执行流。
线程本质上就是函数。[1]
代码块(函数) + 上下文 = 执行流(线程),可被OS调度。
进程 = 资源 + 线程