进程与线程的区别及联系

  在我们正式介绍进程与线程的区别的时候,先介绍一下为什么需要线程。

  因为在现在的时代,单核CPU其实已经发展的相对缓慢,形成延缓趋势,所以现在提升算例的比较好的途径就是使用多核CPU,但仅有这些还不够,进程在创建的过程中会占用一些内存资源,为了节省多这部分,我们引出了线程的概念。


进程与线程的资源占用

  进程的创建和销毁是需要占用比较多的内存资源的,进程的创建/销毁有三个阶段:①创建PCB;②分配系统资源(尤其是内存资源)(该步特别费时间!!);③把PCB放入到内核的双向链表中

  而线程的创建只需要经历两个过程:①创建PCB;②将PCB放入内核中

  虽然进程与内存相比只是少了分配系统资源这一步,但是我们每有一个进程要分配系统资源,就需要遍历一次内核系统,这样子大大将时间复杂度提高了,所以相比于进程,线程占用的系统资源就会大大减少。

进程与线程之间的联系

进程与线程的包含关系

  线程是包含在进程里面的关系,一个进程里面可能会有多个线程,这些线程算是包含在进程中的“逻辑执行流”。线程是并发执行的,占用着进程的那部分系统资源,而实际上操作系统进行调度的时候,是依据线程来进行调度的,因为操作系统只认有无PCB。

  一个进程中有太多的线程其实也不太好,因为CPU核心中的资源只有这么多,要是太多线程,不够分,可能会导致核心资源被用完而线程还不够用的情况,可能会导致崩溃。且若线程都使用的是同一个变量,也会发生冲突,出现线程安全问题。那么若在执行的过程中,有一个线程崩溃,或者异常没有抓到,则很有可能导致影响到其他线程,从而整个进程崩溃。


进程与线程的区别与联系

  1. 进程与线程是包含关系,线程是在进程内部的

  2. 每个进程都有独立的虚拟地址空间,都有自己独立的文件描述符表;同一个进程的多个线程之间,会共用这一份虚拟地址空间和文件描述符表。所有进程之间的资源都是独立的,线程之间的资源是共享的。不同进程里的不同线程,是没有资源共享的

  3. 进程是操作系统中资源分配的基本单位,线程是操作系统中,调度执行的基本单位

  4. 多个进程同时执行的时候,如果一个进程挂了,一般包含影响别的进程,但若一个线程挂了,则看你把整个进程,其他的同进程中的线程也会没有了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值