linux当中线程的相关概念

线程的基本概念:

线程是(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中的实际运作单位。每个程序至少有一个线程,也就是程序本身。一个程序是进程中一个单一顺序的控制流,每个进程中可以并发多个线程,每条线程并行执行不同的任务。同一进程的不同线程相互独立,各自可以被单独调度和执行。
引入线程后,线程作为独立调度和运行单位,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。线程是进程中的一个实体,一个线程可以创建和撤销另一个线程,同一个进程重的多个线程之间可以并发执行。

线程管理实现机制

线程有时被称为轻量级进程(lightweight process LWP),是程序执行流的最小单元。一个标准的线程由线程ID、程序计数器(PC)、寄存器集合和堆栈组成。每个线程都有一个thread结构,即线程控制块,用于保存自己的私有信息。
与进程相似,线程也有若干状态,主要包括执行状态、就绪状态、阻塞状态和终止状态。

  1. 用户级线程(User-Level Thread)
    是指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心。用户级线程可以在不支持线程的操作系统中实现线程,且线程的调度不需要内核直接参与,控制简单。由于不需要用户态/核心态切换,创建和销毁线程、线程切换代价等线程管理的代价低、速度快。
    但是,操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所有线程)阻塞。资源调度按照进程进行,在有多个处理器的情况下,同一个进程中的线程只能在同一个处理器下分时复用,所以每个线程执行的时间相对减少。
  2. 内核级线程(Kernel-level Thread)
    又称为内核支持的线程或轻量级进程。内核级线程的管理全部由系统内核完成:操作系统内核创践和撤销线程,内核维护进程及线程的上下文信息,以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其他线程的运行。
    内核级的线程优点可以充分利用多个处理器资源,可以让一个进程的多个线程同时执行。并且,进程中的某个线程阻塞不会影响进程中其他线程的调度执行。但是线程切换时会增加开销。

两种模型各有优点,有些系统做出来折中方案,形成了一种混合模式,克服两者的缺点,例如:Solaris.

参考书目:《操作系统原理及应用(linux)》,汪杭军主编,机械工业出版社

猜你喜欢

转载自blog.csdn.net/qq_33647375/article/details/88622096