线程与轻进程(OS)

目录

1、进程的引入

2、线程的概念

3、线程的结构

 3、线程控制块

5、线程的实现

(1)用户级别线程

(2)核心级别线程

(3)混合线程

6、线程的应用


1、进程的引入

进程切换

  • 上下文涉及内容多,开销大,“笨重” PCB+程序
  • 系统环境:地址空间,系统栈,打开文件表

相关进程之间耦合关系差

解决方案

  • Multi-threading
  • 同一进程中包含多个线程
  • 上下文只涉及寄存器和用户栈,切换速度快
  • 相关线程之间通讯方便、快捷

2、线程的概念

线程,又称为轻进程(light weight process,LEP),是进程中一个相对独立的执行流。

进程 vs.线程

  • 进程是资源分配单位
  • 线程是执行单位

多线程优点

  • 切换速度快(地址空间不变)(light weighted)
  • 系统开销小
  • 通讯容易(共享数据空间)

3、线程的结构

线程与轻进程(OS)_第1张图片 多进程结构

 

线程与轻进程(OS)_第2张图片 多线程结构
线程与轻进程(OS)_第3张图片 线程结构(另一种表达方式)

 3、线程控制块

线程控制块 TCB(Thread control block) 标志线程存在的数据结构, 其中包含对线程管理需要的全部信息。

与进程相似,线程也是并发执行的,即时断时续的。

内容:线程标识 、线程状态 、调度参数 、现场(通用寄存器,PC,SP) 、链接指针

存放位置

  • 用户级线程:目态空间(运行系统)
  • 核心级线程:系统空间

5、线程的实现

(1)用户级别线程

实现方法:

  • 基于library函数,系统不可见
  • 线程创建、撤销、状态转换在目态完成
  • TCB在用户空间,每个进程一个系统栈

优点: 不依赖于操作系统,调度灵活

            同一进程中多线程切换速度快(不需进入操作系统)

缺点: 同一进程中多个线程不能真正并行

           一个线程进入系统受阻,进程中其它线程不能执行

线程与轻进程(OS)_第4张图片

对于用户级别线程,

若同一进程中的多个线程中至少有一个处于运行态,则该进程的状态为运行态;

若同一进程的多个线程均不处在运行态,但至少有一个线程处于就绪态,则该进程处于就绪态;

若同意进程的多个线程均处于等待状态,则该进程处于等待状态。

(2)核心级别线程

实现方法:

  • 基于系统调用
  • 创建、撤销、状态转换由操作系统完成

优点: 同一进程内多线程可以并行执行

           一线程进入核心等待,其它线程仍可执行

缺点: 系统开销大,同一进程内多线程切换速度慢

           调度算法不能灵活控制

线程与轻进程(OS)_第5张图片

(3)混合线程

Solaris例子

User level thread:

  • 由Lib程序支持(创建,调度)

Light weighted process(LWP):

  • 由Lib程序支持
  • 每个task至少一个LWP
  • 用戶级别线程与LWP可以多对多
  • LWP对操作系统可见
  • 只有与LWP相联系的用户线程向前推进

Kernel level thread:

  • 由kernel 支持
  • 每个LWP与唯一一个核心线程对应 核心线程可与CPU多对多,可对一

线程与轻进程(OS)_第6张图片

 

6、线程的应用

内在的多控制流,需要共享数据 :生产-消费问题

多线程优于多进程 快100倍!

提高处理机与设备的并行性

多处理机环境:提高处理机利用率,加快进程推进速度

 

 

你可能感兴趣的:(计算机操作系统,java,服务器,开发语言)