详解进程和线程的区别

1进程和线程基本概念

1.进程:进程是操作系统中资源分配的基本单位。进程是操作系统对正在运行程序的一种抽象,可以将进程看作程序的一次运行。

2.线程:线程是cpu调度执行的基本单位。一个线程是一个“执行流”,每个线程之间按照顺序执行自己的代码,多个线程“同时”执行多份代码

 1.1.认识线程

线程是进程的一个实体,一个进程至少包含一个线程,一个进程也可以包含多个线程,线程是CPU调度和分派的基本单位,他是比进程更小且能独立运行的基本单位,线程自己基本上不拥有系统资源(用的是进程的资源),只拥有一点在运行中必不可少的资源(如程序计数器(寄存器),存放独立于其他线程的数据(栈空间)),一个线程可以创建和撤销另一个线程。

那么为什么会有线程的存在?

早在80年代时,就由于进程的创建和销毁以及切换存在较大的空间开销,因此人们急需一种轻型的进程技术来减少资源的开销.于是便线程的概念便但诞生了.线程作为进程内的一个实体被设计,同一个进程中的线程共享进程资源.因此系统对于线程的调度远远小于进程.

虽然说线程之间的切换开销小,由于多个线程共享同一个进程的资源,如果一个线程崩溃,那么就可能导致整个进程被系统抹杀.但是进程不用担心,每个进程都有独立的代码和数据空间(程序上下文),即使这个进程崩了也不会影响到其他的进程,就类似于我QQ崩了跟我微信有什么关系.

一个进程中包含多个线程,通俗点理解的话就是,我的B站,可以一边看视频,一边投币,顺便再点个收藏这些都是由不同的线程来完成的任务.所以这里就体现了进程和线程的包含关系.

2. 进程和线程的关系


(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

(2)资源分配给进程,同一进程的所有线程共享该进程的大部分资源(线程本身有独立空间)。

(3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

(4)真正在cpu上运行的是线程。

(5)线程是指进程内的一个执行单元,也是进程内的可调度实体。

3. 进程和线程的区别

本质区别: 进程是操作系统进行资源分配的基本单位,线程是cpu调度和分派的基本单位。


包含关系: 如果一个进程内有多个线程,则执行过程并不是一条直线(顺序执行),而是多条线(并行执行)共同完成的.线程是进程的一部分,所以线程也被称为轻量级进程或轻权进程.


资源开销: 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销:线程可以看作轻量级的进程,同一类线程共享进程代码和数据空间,但每个线程都有自己独立的栈空间和程序计数器(所维护的资源远远小于进程),所以线程之间切换的开销小


进程和线程的创建和销毁: 创建:操作系统在内存里边开辟一块空间出来给进程,把进程维护的PCB加载到对应的队列中排队,通过调度器去调度,销毁:找到对应的进程PCB,从队列中移除,把资源还给操作系统。如果是创建一个线程,我们可以认为该进程是一个酒店,当我想创建一个线程时,直接开一个房间就好了,销毁线程时直接退房,此时可以看出,进程的创建和销毁在资源分配上浪费了很多时间,但是线程的创建和销毁则不需要那么麻烦.


内存分配: 同一个进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的.


影响关系: 一个进程崩溃后,在保护模式下并不会对其他进程产生影响,但是一个线程崩溃,可能会导致包含该线程的整个进程都直接死掉.所以多进程要比多线程健壮.


操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。


执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程的执行控制,两者均可并发执行.

4. 线程

上边说过线程共享进程的资源并且有其相对其他线程独立的资源;下边就来解释一下。

首先说一下线程的私有资源:程序计数器和栈空间

程序计数器(PC)其实就是cpu的一个寄存器,存放下一条指令的地址,来让程序往下一直执行,这里说的线程中的程序计数器是记录对应寄存器中的指令地址的值,通过维护这个值来保证代码的正确执行,因为线程也不是一直被调度,当下次调度的时候需要找到上次执行过的下一条指令继续执行。

栈空间:线程的执行是函数的执行,既然线程共享了进程的资源,要做到线程实现不同功能,那就需要在继承进程资源的基础上有自己的独立数据,这些数据就被维护在线程自己独立的栈空间中,线程也不可能执行就需要进程所有资源,所以也需要自己的程序上下文,这些也是线程自己需要维护的。

所以说线程共享的是,在同一个进程内的,除了其他线程自己维护的空间以外的进程资源。

参考以下博客链接:

http://t.csdnimg.cn/uxmxC

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值