线程

为什么要提出线程的概念?

进程作为计算机的基本计算调度单位,在现代操作系统的发展中出现了一些问题:

  进程的并发执行使得进程调度的工作量日益增大,系统将大量精力耗费在进程调度和分配内存上,系统效率得不到有效的提高。

  进程之间的通信延迟很大,使得频度较高的通信过程效率低下。

  进程间的并行度没有人们预想的效果好

线程的定义

线程也叫轻型进程,是一个可执行的实体单元,它代替以往的进程,称为现代操作系统中处理机调度的基本单位。

线程和进程的关系

1.线程是进程的一个组成部分,线程由进程创建,因此一个进程中至少存在一个线程,线程还可以创建其他线程。

2.进程依然是资源分配和保护的基本单位,线程只能在进程的地址空间活动,线程只能使用其所在进程的资源。

 线程的结构

 线程的特点:

1.线程作为基本的调度单位,其状态有:就绪、运行、阻塞等;

2.进程中所有线程共享进程的存储空间和分配资源

线程优势:

*创建和撤销线程的开销非常小。不需要向系统请求独立的地址空间及进行相关的地址空间复制(例如父子进程),因此创建和撤销线程系统的开销要远小于进程。

*切换迅速。线程的上下文环境要比进程简单的多,因此线程间的切换远比进程快的多。

*通信效率高。同一进程中的线程由于共享同一地址空间,通信时不需要借助内核功能。

*并发度高。在多处理机系统中,对进程的个数是有所限制的,但对线程的个数理论上不存在限制,更发挥了多处理机系统的优势。

线程的实现机制

用户级线程:

 用户级线程的优点:

1、核心不用管理线程的切换,处理机在两个线程间切换时不用进入到核心态执行,节省了用户态与核心态之间切换的开销。

2、用户级线程的管理机制可以运行在各种操作系统中,方便、灵活。

缺点:当线程执行系统调用时,整个进程都被阻塞,不能充分利用多处理机。

核心级线程:

 核心可以调度一个进程中的多个线程同时运行,当某线程发生阻塞,可以调度其他线程执行。

优点:

充分发挥了多处理机的并行工作能力。

缺点:

在同一进程间的线程控制权转移时,用户级与核心级的切换开销很大。

原文地址:https://www.cnblogs.com/fate-/p/12810235.html