进程和线程的区别

进程和线程的区别

这个问题是面试经常遇到的典型问题,值得归纳总结一下。

首先,总的来说:

  • 进程是资源分配的最小单位,线程是程序执行的最小单位。
  • 一个程序至少一个进程,一个进程至少一个线程。

关于细节,对于进程而言:

  • 它是并发执行的程序在执行过程中分配的和管理资源的基本单位,这是一个动态的概念,是竞争计算机系统资源的基本单位。

对于线程而言:

  • 它是进程的一个执行单元,是进程内的调度实体,是比进程更小的独立运行的基本单位。
  • 线程也被称为轻量级进程。

为何会有线程?

  • 线程的执行过程是线性的,尽管中间会发生中断或暂停,但是进程所拥有的资源只为改变线程执行过程服务,一旦发生线程切换,这些资源就需要被保护起来。
  • 进程分为单线程进程多线程进程。单线程进程宏观来看也是线性执行过程,微观上看则是只有单一的执行过程。多线程进程宏观上看是线性的,微观上看则是由多个执行操作。

线程的改变只代表CPU的执行过程的改变,而不代表进程所拥有的资源的变化

进程和线程的区别:

  • 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
  • 资源拥有:同一进程内的线程共享本进程的资源(如内存、I/O,CPU等),但是进程之间的资源是独立的。
  • 执行过程:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是,线程不能独立执行,必须依存在应用程序中,有应用程序提供多个线程执行控制。
  • 线程是处理器调度的基本单位,但是进程不是。
  • 二者都可以并发执行。

优点和缺点

  • 线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行。
  • 进程执行开销大,但是能很好地进行资源的管理和保护。

使用场景

一个进程发生崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程的崩溃,则会造成整个进程的消亡。因此:

  • 多进程要比多线程更为健壮。

在进程切换时,消耗的资源大、效率高。因此涉及到频繁的切换时,使用线程要好于进程。
总之,

  • 对资源的管理和保护要求高,不限制开销和效率时,使用多进程
  • 要求效率高,频繁切换时,资源的保护管理要求不是很高时,使用多线程

参考文献:
进程和线程的区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值