进程和线程有什么异同详解

进程

  • 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。
  • 操作系统管理核心中的重要对象,从0进程(os不可见),到1号(init)。。。,到N号,人机交互shell。。。
  • 是最小资源分配单位,可看成是只有一个线程的进程。

线程

  • 在Linux环境下的轻量级进程,LWP,light weight progress
  • 在进程内部的并行执行流,无独立资源(使用进程资源)下运行
  • 是最小的执行单位,调度的基本单位。

相同

  • 都是实现多任务并发的技术手段
  • 都可以独立调度,父子进/线程调度时平等竞争
  • 2.4版内核以前,二者实现方式相同,2.6版以后单独实现线程。

复制对方的地址空间,那么就产生一个进程,如果共享对方的地址空间,就产生一个线程。Linux内核是不区分进程和线程的,只有在用户层面上进行区分。所以,线程所有操作函数pthread_*是库函数,而非系统调用,编译和链接时需要加-pthread选项

差异

  • 进程是资源分配的基本单位,线程是调度的基本单位。
  • 每个进程至少包含一个主线程(main函数)
  • 进程之间完全独立,线程只能依附于进程,线程也有PCB,但没有独立的地址空间(共享)

进程与线程特性

  • 线程创建和切换时的系统开销比进程小,效率更高
  • 一个进程内部的线程间信息共享和通信比进程简单高效
  • 线程除了能够使用进程间通信(IPC)的所有方式外,海鸥互斥量、自旋锁、条件变量、读写锁、线程信号与全局变量,方式更多,更灵活高效。
  • 线程ID数量更多,进程退出后,分配和申请的相关资源(如打开的文件描述符等)有操作系统回收,子线程退出后,资源仍在进程空间中,需要人工回收
  • 进程之间“辈分”分级严格,线程之人一个主线程(main函数)
  • 父进程退出后,子进程运行不受影响,主线程(即进程)退出,所有子线程全部消亡。

线程的优缺点

  • 优点:1)提高程序并发性 2)开销小 3)数据通信、共享数据方便
  • 缺点:1)库函数实现,稳定性不如进程 2)编写、测试、测验难度相对更大,gdb不支持 3)对信号支持不好

线程的优点相对突出,缺点均不是硬伤。Linux下由于实现方式使得进程、线程之间的差别不是很大

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行 说法二:进程线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程线程区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程线程的重要区别。 说法三:多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。用过UNIX操作系统的读者知道进程,在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配,但进程线程有什么区别呢? 进程线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程线程区别在于: 线程的划分尺度小于进程,使得多线程程序的并发性搞。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小曾爱吃榴莲

非常感谢你的认可!

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

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

打赏作者

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

抵扣说明:

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

余额充值