【Linux:线程概念】

目录

概念:

创建线程的函数:​编辑 ​编辑

有多进程为什么还需要有多线程?

线程调度的成本为什么低?

 进程与线程的区别:


概念:

  • 线程是CPU的基本调度单位,在进程内部运行。在内核中,进程是分配系统资源的基本实体。
  • 在Linux系统中没有线程,只有轻量级进程(没有单独设计PCB)。
  • Linux系统没有struct thread结构体,原因是系统统一用PCB表示执行流,就不用单独给线程设计数据结构和调度算法

创建线程的函数:
 

上图可以看见创建了两个线程,但是俩线程的pid却是一样的。 

pid和lwp一样的线程叫做主线程。操作系统调度线程时根据LWP来调度

有多进程为什么还需要有多线程?

  • 线程的创建成本比进程的低,但一个线程运行崩溃会影响其他线程
  • 线程删除仅仅只需要销毁一个tcp即可,但进程的销毁需要销毁pcb,页表,地址空间等
  • 进程切换需要切换页表,地址空间等等,但线程不用,线程的调度成本低

线程调度的成本为什么低?(面试

热数据: 高频访问的数据、极其重要的文件

在CPU中存在一个cache,用于存放热数据,在进程切换时,不仅要切换地址空间,页表,上一个进程cache的热数据也要做清空然后重新加载该进程的热数据。但线程是共享地址空间,CPU 中cache的数据每个线程都有可能用上,就不需要清空cache中的数据重新加载。

 进程与线程的区别:

  • 进程是资源分配的基本单位
  • 线程是调度的基本单位
  • 线程共享数据,但也有自己的数据:
    1.线程ID  2.一组寄存器(硬件的上下文数据)  3.栈 (线程在运行时会形成各种临时变量,这些临时变量会被每个线程保存在自己的栈区) 4.信号屏蔽字  5.errno  6.调度优先级
  • 多个线程之间共享以下资源:
  1. 文件描述符
  2. 每种信号的处理方式
  3. 当前的工作目录
  4. 用户id和组id

进程与线程之间的关系:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dongliner~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值