os学习笔记之 线程

线程

什么是线程

在进程之中增加一类实体,满足

  • 实体之间可以并发执行

  • 实体之间共享地址空间

    此类实体为线程

为什么要引入线程

减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能

线程易忘点

  • 线程可以创建和撤销另外一个线程

  • 线程也拥有就绪、阻塞和运行三种状态

  • 同一个线程共享内存和文件资源,可不通过内核项直接通信

线程时cpu的基本调度单元

在引入线程之后进程只作为除cpu外的系统资源的分配单元(

线程和进程的比较

  • 调度

线程是资源分配单元,线程是cpu调度单位,线程为独立调度的基本单位

在同一个进程之中,线程的切换不会引起进程切换,从同一个进程中的线程切换到另外一个进程的线程会引起进程切换。

  • 拥有资源

进程是系统之中拥有资源的基本单位,而线程不拥有系统资源

  • 并发性

进程可以相互并发,且一个进程之中的不同线程可以并发执

  • 独立性

进程有独立的地址空间和资源

同一个进程中线程共享地址空间和资源

  • 系统开销

进程切换时涉及进程上下文的交换()

线程只需要保存和设置少量寄存器内容

上下文切换

概念:

操作系统通过处理器调度让处理器轮流执行多个进程。实现不同进程中指令交替执行的机制称为进程的上下文切换。

进程的上下文

进程的物理实体(代码和数据等)和支持运行的环境合称为进程的上下文。

线程的实现方式

分为三种,用户级线程(User-Level Thread,ULT)、内核级线程(Kernel-Level Thread , KLT)、组合方式。

用户级别线程

线程功能通过一组用户级线的线程库函数来完成线程的管理,包括调度、创建、终止同步等。

请添加图片描述

其中线程库(库函数)存在于用户空间之中,因此称之为用户级别线程

特点

  • 不依赖操作系统来实现,可用于不支持线程的多进程操作系统;

  • 在用户空间形成线程机制;

  • 同一进程内的用户线程切换速度快;

  • 允许每个进程拥有自己的线程调度算法。

设置用户级线程之后,cpu的基本调度单位不是线程而是进程

缺点

  • 当进程之中的一个线程被阻塞的时候,存在于其中的所有线程都会被相应的阻塞

  • 由于在内核之中只存在一个进程,因此只能够分配一个cpu,所以只有一个进程之中的线程会被执行,无法实现同一进程中的线程并发

内核级别线程

由内核通过系统调用实现的线程机制,由内核完成线程的创建、终止和管理

请添加图片描述

特点

  • 内核维护PCB和TCB

  • 线程执行系统调用被阻塞时候不影响其他线程

  • 线程的创建、终止和切换相对消耗较大

  • 内核以线程为单位进行CPU时间分配

  • 内核本身可采用多线程技术,提高系统的执行速度和效率

多线程模型

多对一模型

将多个用户级线程映射到一个内核级线程之中

优点

线程管理在用户空间进行,无须切换到核心态,效率较高

缺点

一个线程在访问内核时候发生阻塞,整个进程阻塞。

只有一个线程能进行访问内核,多线程不能在多cpu上运行

一对一模型

将每个用户级线程映射到一个内核级线程中。

优点

当一个线程被阻塞的时候,运行调度另外一个线程运行,并发能力强

缺点

开销大,创建一个线程用户级线程,就要创建一个内核级线程,极大的限制了系统所支持的线程数量

多对多模型

将n个用户级线程映射到m个内核级别线程上,要求n>=m

拥有上述两种模型的优点

度另外一个线程运行,并发能力强

缺点

开销大,创建一个线程用户级线程,就要创建一个内核级线程,极大的限制了系统所支持的线程数量

多对多模型

将n个用户级线程映射到m个内核级别线程上,要求n>=m

拥有上述两种模型的优点

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值