[操作系统] 进程和线程的区别以及使用场景

简单介绍下进程线程

进程

进程是拥有一个执行流的 | 多个执行流的线程组
是一个可以独立运行的基本单位, 也是系统分配资源的基本单位, 可以将进程看作是一个动态执行的程序
操作系统通过在进程之间快速切换来实现并发执行任务

线程

线程可以当做是一种轻量级的进程,是一种比进程还小的能够独立运行的单位,是进程中的一个执行流程
每个线程都有独立的寄存器和栈,同一个进程下的线程会共享代码段,数据段,打开的文件等资源

进程和线程的区别

不同点

  1. 进程是资源分配的基本单位, 线程是调度的基本单位
  2. 进程拥有一个完整的资源平台, 而线程只独享必不可少的资源, 所以线程的资源开销比进程要少, 可以减少并发执行的时间和空间开销
  3. 线程缺乏访问控制, 进程中的任意一个线程出错都会导致整个进程下的线程连带着进程也一起被终止
  4. 同一进程下的线程之间通信方便, 因为同一进程下的线程是共享数据的

相同点

进程和线程之间同样存在就绪, 阻塞, 执行这些基本的状态, 同样具有状态之间的转换关系

什么时候该使用线程 | 进程

多线程场景

数据需要修改, 不同任务需要大量共享数据或频繁通信的情况下使用线程模型会比进程模型要来的好
可以用在非CPU繁忙型的任务中, 因为IO密集型的情况下大多数情况下线程都会处于等IO的情况, 此时可以快速的在多个线程之间切换来提高CPU利用率

多进程场景

对于不同任务之间无需进行大量交互, 上下文切换不频繁的就可以使用多进程模型

  • 比如守护进程, 无序和主任务进行交互, 使用多进程模型不会就信息交互的损耗, 同时可以防止多线程模型下线程崩溃导致的整个服务的崩溃

总结

进程和线程各自有各自的有点, 在具体的使用场景上可以从线程和进程的具体性能差异来分析研究

  • 进程和线程的主要性能差异来源于1. 上下文切换 2. 线程和进程创建的成本 3. 任务之间交互的成本

当进程和线程的性能差异相对于任务的消耗成本来说比例足够小的情况下, 选择多进程和多线程模型交互的差别就不大了

  • 当进程线程切换的成本差占整个任务执行的消耗的0.01%时候, 使用进程和使用线程在切换上并不能对整个系统的性能造成很大影响
    此时可以更多考虑任务交互的成本和任务之间的隔离性上去考虑选择使用多进程还是多线程模型
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值