线程

线程的定义:

①线程(thread)是操作系统能够进行运算调度的最小单位。
②它被包含在进程之中,是进程中的实际运作单位。
③一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

线程是处理器任务调度和执行的基本单位。

同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈,自己的寄存器环境,自己的线程本地存储。

一个进程可以有很多线程,每条线程并行执行不同的任务。

在同一个进程 中,线程的切换不会引起进程的切换,但是从一个进程中的线程切换到另一个进程中的线程时,必然就会引起进程的切换。

在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。

线程具有以下属性:

①轻型实体:
线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。

线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。

TCB包括以下信息:
(1)线程状态。
(2)当线程不运行时,被保存的现场资源。
(3)一组执行堆栈。
(4)存放每个线程的局部变量主存区。
(5)访问同一个进程中的主存和其它资源。

> 用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。

②处理器任务调度和执行的基本单位:
在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

③可并发执行:
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。

④共享进程资源:
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。

线程运行的三种状态:

①执行状态:表示线程已获得处理机而正在运行;
②就绪状态:指线程已具备了各种执行条件,只需再获得CPU便可立即执行;
③阻塞状态:指线程在执行中因某件事受阻而处于暂停状态,例如:当一个线程执行从键盘读入数据的系统调度时,该线程就被阻塞。

线程状态之间的转换和进程状态之间的转换是一样的,如图:

在这里插入图片描述