Linux 进程和线程比较

进程是操作系统运行的一个程序,线程是执行单元或者是一条执行路径。
以360安全卫士为例,运行360安全卫士即开启了一个进程,执行垃圾清理、木马查杀等功能时即开启了多个线程。
根本区别:进程是资源分配的最小单位,线程是程序调度和执行的最小单位。
调度:每次创建/撤销进程时,系统都要为它分配/撤销独立的资源,建立数据表来维护代码段、堆栈段和数据段;线程是进程的一个执行流,由CPU独立调度执行,且在每个时间片中只有一个线程执行。同一进程中线程切换不会影响进程切换,而由一个进程中的线程切换到另一个进程中的线程时,需要进程切换。
资源分配:进程都是拥有资源的一个独立单位,它可以拥有自己的资源。线程一般不拥有系统资源(只有一些必不可少的资源),在同一个进程中,线程共享进程的所有资源,使用相同的地址空间,每个线程有自己的堆栈和局部变量。
开销:CPU创建/撤销/切换一个线程的花费远比进程要小得多。
通信:线程间可以直接读写进程数据段(如全局变量)来进行通信,需要进程同步和互斥手段辅助,进程之间的通信需要以IPC方式(Socket)进行。
并发性:进程和线程都允许并发。fork()函数可以在父进程中创建一个子进程,当进程接收到来自客户端新的请求时,复制出一个子进程来处理请求(数据不共享),即父进程只需负责监控请求的到来,然后创建子进程让其去处理,实现并发。在多线程中,父进程和子进程共享同一块内存空间,对同一区域执行操作,因此要利用锁机制,避免多个线程同时往同一区域写入数据而造成数据错乱。
图片来源见水印
在这里插入图片描述
(图片来源见水印,如有冒犯,联系即删
Linux系统并发:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
强壮性:多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响(隔离机制)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值