为什么要提出线程的概念?
进程作为计算机的基本计算调度单位,在现代操作系统的发展中出现了一些问题:
进程的并发执行使得进程调度的工作量日益增大,系统将大量精力耗费在进程调度和分配内存上,系统效率得不到有效的提高。
进程之间的通信延迟很大,使得频度较高的通信过程效率低下。
进程间的并行度没有人们预想的效果好
线程的定义
线程也叫轻型进程,是一个可执行的实体单元,它代替以往的进程,称为现代操作系统中处理机调度的基本单位。
线程和进程的关系
1.线程是进程的一个组成部分,线程由进程创建,因此一个进程中至少存在一个线程,线程还可以创建其他线程。
2.进程依然是资源分配和保护的基本单位,线程只能在进程的地址空间活动,线程只能使用其所在进程的资源。
线程的结构
线程的特点:
1.线程作为基本的调度单位,其状态有:就绪、运行、阻塞等;
2.进程中所有线程共享进程的存储空间和分配资源
线程优势:
*创建和撤销线程的开销非常小。不需要向系统请求独立的地址空间及进行相关的地址空间复制(例如父子进程),因此创建和撤销线程系统的开销要远小于进程。
*切换迅速。线程的上下文环境要比进程简单的多,因此线程间的切换远比进程快的多。
*通信效率高。同一进程中的线程由于共享同一地址空间,通信时不需要借助内核功能。
*并发度高。在多处理机系统中,对进程的个数是有所限制的,但对线程的个数理论上不存在限制,更发挥了多处理机系统的优势。
线程的实现机制
用户级线程:
用户级线程的优点:
1、核心不用管理线程的切换,处理机在两个线程间切换时不用进入到核心态执行,节省了用户态与核心态之间切换的开销。
2、用户级线程的管理机制可以运行在各种操作系统中,方便、灵活。
缺点:当线程执行系统调用时,整个进程都被阻塞,不能充分利用多处理机。
核心级线程:
核心可以调度一个进程中的多个线程同时运行,当某线程发生阻塞,可以调度其他线程执行。
优点:
充分发挥了多处理机的并行工作能力。
缺点:
在同一进程间的线程控制权转移时,用户级与核心级的切换开销很大。