处理器管理补充——线程

本文介绍了线程的概念,包括线程的组成、特点和实现方式(用户级线程和内核级线程),探讨了多线程编程的优点,分析了多对一、一对一和多对多模型,并重点讲解了线程池的原理及其优势。
摘要由CSDN通过智能技术生成

传送门:操作系统——处理器管理icon-default.png?t=N7T8http://t.csdnimg.cn/avaDO

1.1 线程的概念

回忆:[未引入线程前] 进程有两个基本属性:拥有资源的独立单位、处理器调度和分配的基本单位。

引入线程以后,线程将作为处理器调度和运行的基本单位,进程作为分配资源的基本单位,计算机可以通过创建线程来完成任务,以减少程序并发执行时的时空开销。

线程的组成

  • 线程ID

  • 程序计数器

  • 寄存器集合

  • 堆栈

一个线程与同属一个进程的其它线程共享其代码段数据段和其它操作系统资源(如打开文件和信号)。

一个进程可以有多个控制线程,它就能同时做多个任务。因此,我们可以得知引入线程的目的是提高系统内程序并发执行的程度,进一步提高系统的吞吐量。

线程的特点

  • 线程是程序中一个单一的顺序控制流程

  • 在单个程序中可以同时运行多个线程完成不同的工作,称为多线程

  • 多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率

  • 多线程是在同一时间需要完成多项任务的时候实现的

1.2 多线程编程优点

  1. 响应程度高。如果对一个交互式应用程序采用多线程,即使它部分阻塞或执行较冗长的操作,那么,该程序仍然能继续工作,从而提高对用户的响应程度。

  2. 资源共享。线程默认共享自身所属进程的内存和资源。

  3. 经济。创建进程所需要的内存和资源的分配比较昂贵,而由于线程允许共享自身所属进程的资源,所以,创建线程和上下文切换会更经济。

  4. 多处理器体系结构的利用。多线程的优点之一是能充分使用多处理器体系结构,以便每个线程能够并行运行在不同的处理器上。

1.3 线程的实现

线程的实现主要分为两种方式:用户级线程内核级线程

用户级线程

  • 用户级线程仅存在于用户空间中

  • 用户级线程的创建、撤销、线程间的同步与通信等功能都无需通过系统调用来实现

  • 用户级线程的切换,常发生在一个应用进程的诸多线程之间,且无需内核的支持

  • 线程间的切换速度非常快(线程的切换规则简单)

  • 因为用户级线程与内核无关,所以,内核完全不知道用户级线程的存在

内核级线程

  • 内核级线程是在内核的支持下运行的

  • 内核线程的创建和管理要慢于用户线程的创建和管理(用户线程 > 内核线程)

  • 内核为每个内核级线程设置了一个PCB,内核根据该PCB感知线程的存在,并对其进行控制

1.4 多线程模型

多对一模型

  • 多对一模型将许多用户级线程映射到一个内核线程

  • 线程管理是在用户空间进行的,因此效率比较高

  • 如果一个线程执行了阻塞系统调用,那么,整个进程就会阻塞,而且,由于任何时刻只允许一个线程访问内核,因此多个线程不能并行运行在多处理器上

  • 该模型,处理器调度的单位仍然是进程

一对一模型

  • 一对一模型将每个用户线程映射到一个内核线程

  • 当一个线程执行阻塞时,该线程模型能够允许另一个线程继续执行,所以,它提供了比多对一模型更好的并发功能

  • 该模型允许多个线程运行在多处理器系统上

缺点:

  • 每创建一个用户线程就需要创建一个相应的内核线程。由于创建内核线程的开销会影响应用程序的性能,所以,这种模型的绝大多数实现限制了系统所支持的线程数量。

多对多模型

  • 多对多模型使用多路复用技术,使许多用户级线程映射到同样数量或更小数量的内核线程上

  • 多对多模型克服了前两种模型的缺点,开发人员可以创建任意多个必要的线程,并且相应的内核线程能够在多处理器系统上并行运行

  • 当一个线程执行阻塞系统调用时,内核能够调度另一个线程来执行

线程实现模型

1.5 线程池

流程:

  • 预先创建若干数量的线程,并让这些线程都处于睡眠状态,不消耗CPU资源

  • 当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求

  • 当处理完这个请求后,线程又处于睡眠状态

基于这种预创建技术,线程池将线程创建和销毁所带来的开销均摊到各个具体的任务上,执行次数越多,每个任务分担到的线程自身开销就越小。

线程池具有以下优点:

  • (1) 用现有线程处理请求通常比等待创建新线程快

  • (2) 线程池限定了任何时候可存在线程的数量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值