多线程编程之:Linux线程概述

日期: 2024-10-12 作者: 固态硬盘

简介

  前面现已说到,进程是体系中程序履行和资源分配的基本单位。每个进程都有自己的数据段、代码段和仓库段,这就造成了进程在进行切换等操作时都需求有很杂乱的上下文切换等动作。为了进一步削减处理机的空转时刻,支撑多处理器以及削减上下文切换开支,进程在演化中呈现了另一个概念线程。它是进程内独立的一条运转道路,处理器调度的最小单元,也能够称为轻量级进程。线程能够对进程的内存空间和资源进行拜访,并与同一进程中的其他线程同享。因而,线程的上下文切换的开支比创立进程小许多。

  同进程相同,线程也将相关的履行状况和存储变量放在线程控制表内。一个进程能够有多个线程,也便是有多个线程控制表及仓库寄存器,但却同享一个用户地址空间。要注意的是,由于线程同享了进程的资源和地址空间,因而,任何线程对体系资源的操作都会给其他线程带来影响。由此可知,多线程中的同步是很重要的问题。在多线程体系中,进程与进程的联系如图9.1所示。

  用户级线程首要处理的是上下文切换的问题,它的调度算法和调度进程悉数由用户自行挑选决议,在运转时不需求特定的

  支撑。在这里,操作体系往往会供给一个用户空间的线程库,该线程库供给了线程的创立、调度和吊销等功能,而

  依然仅对进程来办理。假如一个进程中的某一个线程调用了一个堵塞的体系调用函数,那么该进程包含该进程中的其他一切线程也一起被堵塞。这种用户级线程的首要缺陷是在一个进程中的多个线程的调度中没办法发挥多处理器的优势。(2)轻量级进程。轻量级进程是

  支撑的用户线程,是内核线程的一种笼统目标。每个线程具有一个或多个轻量级线程,而每个轻量级线程别离被绑定在一个内核线)内核线程。

  这种线程答应不同进程中的线程依照同一相对优先调度办法来进行调度,这样就能发挥多处理器的并发优势。现在大多数体系都选用用户级线程与中心级线程并存的办法。一个用户级线程能够对应一个或几个中心级线程,也便是“1对1”或“多对一”模型。这样既可满意多处理机体系的需求,也能够最大极限地削减调度开支。

  运用线程机制大大加速上下文切换速度并且节约许多资源。可是由于在用户态和内核态均要完成调度办理,所以会添加完成的杂乱度和引起优先级翻转的可能性。一个