线程(一):线程详细理解

一、进程与线程的关系与区别

1、线程描述

线程是进程中执行运算的最小单元,是操作系统执行处理机制的基本单位。

每个进程至少有一个线程,线程可以利用进程所拥有的资源执行调度和运算。

2、进程与线程的关系

图示1:
1
图示2:
2
图示3:
在这里插入图片描述

3、进程与线程的区别

3.1、进程回顾

  • 进程依赖于程序运行而存在,进程是动态的,程序是静态的;
  • 进程是最小的分配资源单位
  • 每个进程都有独立的地址空间,进程之间互不影响。

3.2、区别总结

  • 本质区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
  • 包含关系:一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
  • 资源开销:每个进程都有独立的地址空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。
  • 影响关系:一个进程崩溃后,在保护模式下其他进程不会被影响,但是一个线程崩溃可能导致整个进程被操作系统杀掉,所以多进程要比多线程健壮。
  • 线程是一个上下文的执行指令,而进程则是与运算相关的一簇资源。
    一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。

4、线程资源的共享与私有

4.1、共享资源

1.可执行的指令
2.静态数据****
3.进程中打开的文件描述符
4.当前工作目录
5.用户ID
5.用户组ID

4.2、私有资源

1.每个进程的ID(tid)
2.PC(程序计数器)和其他寄存器
3.堆、栈
4.错误号
5.优先级
6.执行状态和属性

二、并发机制

1、首先理解并行

一个基本的事实前提:一个CPU在一个瞬间只能处理一个任务。

在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;

在多处理器系统中,进程不仅可以交替执行,而且可以重叠执行。在多处理器上的程序才可实现并行处理。

因此,并行是针对多处理器而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

2、并发详解

并发:是指一个时间段中有几个程序都处于已启动运行到运行完毕之间

在这里插入图片描述

  • 并发就是只有一个CPU资源,程序(或线程)之间要竞争得到执行机会。
  • 图中的第一个阶段,在A执行的过程中B,C不会执行,这段时间内这个CPU资源被A竞争到了
    同理,第二个阶段只有B在执行,第三个阶段只有C在执行。
  • 其实,并发过程中,A,B,C并不是同时在进行的(微观角度)。但又是同时进行的(宏观角度)。

3、线程的两种并发关系:同步和互斥。

3.1、临界资源与临界区

临界资源:一次只允许一个任务(进程或线程)访问的共享资源
临界区:访问临界资源的代码

3.2、互斥

mutex互斥锁:防止线程并发访问临界资源,导致错乱,实现同一时间,只有一个线程访问临界资源。

3.3、同步

信号量
条件变量
实现:线程按照一定的顺序,先后对临界资源进行访问。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

好好睡觉好好吃饭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值