【操作系统】线程与进程
一、线程
1.定义
线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
2.特征
⑴轻型实体
线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。TCB包括以下信息:
- 线程状态;
- 当线程不运行时,被保存的现场资源;
- 一组执行堆栈;
- 存放每个线程的局部变量主存区;
- 访问同一个进程中的主存和其它资源。
用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。
⑵独立调度的基本单位
在多线程OS中,线程是能独立运行的基本单位,也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。
⑶可并发执行
同一进程中的多个线程之间,可以并发执行,甚至允许在同一进程中所有线程都能并发执行;
不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
⑷共享进程资源
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:
所有线程都具有相同的地址空间(进程的地址空间),线程可以访问该地址空间的每一个虚地址;
可以访问进程所拥有的已打开文件、定时器、信号量机构等;
由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
二、进程
1.定义
2.特征
⑴动态性
进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
⑵并发性
任何进程都可以同其他进程一起并发执行。
⑶独立性
进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
⑷异步性
由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
⑸结构特征
三、线程与进程的区别和联系
1.区别
- 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位;
- 进程开销大,线程开销小:每个进程都有独立的代码和数据空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一组线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小;
- 进程分配独立资源,线程组共享资源:系统在运行的时候会为每个进程分配不同的内存空间;线程共享系统资源,如虚拟地址空间,文件描述符和信号处理等,拥有自己的调用栈,寄存器环境,本地线程存储。
2.联系
- 操作系统中可执行多个进程,进程中可执行多个线程;
- 进程是线程的容器:如果进程内有多个线程,则很执行过程是多线程共同完成的。线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。