线程:
指
运行
中的程序的调度单位,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
另外,线程是
进程中的一个实体,是被
系统独立调度和分派的基本单位,线程自己不拥有
系统资源,只拥有一点在
运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和
撤消另一个线程,同一
进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在
运行中呈现出间断性。线程也有
就绪、
阻塞和
运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为
多线程
属性:
1)轻型实体
线程中的实体基本上不拥有
系统资源,只是有一点必不可少的、能保证独立
运行的资源,比如,在每个线程中都应具有一个用于控制线程运行的
线程控制块
TCB,用于指示被执行指令序列的
程序计数器、保留
局部变量、少数状态参数和返回地址等的一组
寄存器和
堆栈。
2)独立调度和分派的基本单位。
在多线程OS中,线程是能独立
运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小。
3)可并发执行。
在一个
进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行。
4)共享
进程资源。
在同一
进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的
地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开
文件、定时器、
信号量机构等。
那么什么又是进程呢?
进程
线程和进程的区别在于,子进程和父进程有相同的代码段,不同的数据段,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。
通常在一个
进程
中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的
操作系统
中,通常都是把
进程
作为分配资源的基本单位,而把线程作为独立
运行
和独立
调度
的基本单位。由于线程比
进程
更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。