(一)传统进程基本属性
1)可拥有资源的独立单位;
2)可独立调度和分配的基本单位。
(二)引入线程的原因
进程在创建、撤销和切换中,时空开销较大,因此进程数不宜设置过多,进程切换频率不宜太高,限制了并发程度的提高。
(三)引入线程的结果
将传统进程两个基本属性分开,线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。
举例:在文件服务进程中可设置多个服务线程,显著提高服务质量及系统吞吐量。
(四)线程特点
1)线程是进程中的一个实体,是被系统独立分配和调度的基本单位。
2)线程基本不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),可与同属一个进程的其他线程共享进程所拥有的全部资源。
3)线程也具有就绪、运行和阻塞3种基本状态。
4)由于线程具有许多传统进程所具有的特性,故称为“轻型进程(Light-Weight Process) ;传统进程称为“重型进程(Heavy-Weight Process) ”。
5)线程可创建另一个线程,同一个进程中的多个线程可并发执行。
(五)线程分类
分类 | 说明 | 备注 | |
1 | 用户级线程(User-Level Threads) | 不依赖于内核,创建、撤销和切换都不利用系统调用来实现。 | 某些系统同时实现了两种类型的线程 |
2 | 内核支持线程(Kernel-Supported Threads) | 依赖于内核,创建、撤销和切换都利用系统调用来实现。 |
(六)进程和线程本质差异
进程在切换时,总是依赖于内核中的进程调度。