进程和线程的区别

1根本区别(对于操作系统)

进程是操作系统分配资源的基本单位
线程是操作系统任务调度和执行的基本单位

2 系统开销(效率)

切换

进程切换开销较大,线程切换开销较小。
解释:每个进程都有独立的代码和数据内存空间,程序之间切换会有较大的开销。线程可以看做是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器。

创建

进程创建开销较大,线程创建开销较小。
解释:每启动一个进程,操作系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。
启动一个线程程时不需要操作系统为它创建独立的内存空间。

3 运行环境

进程以操作系统作为运行载体
线程以进程作为运行载体,一个进程至少包含一个线程

4 内存分配

进程有自己独立的地址空间,包括独立的代码段,堆栈段和数据段
线程没有独立的地址空间,多个线程共享所在进程中的代码段,堆栈段和数据段。线程有自己的程序栈,供操作系统切换线程使用。

5 拥有资源

线程有自己的私有属性TCB,线程id,程序计数器,寄存器,线程函数栈。
进程有自己的进程控制块PCB,进程id,内存空间,硬件资源(打开文件等)。

5 通信方式

进程之间通信需要以IPC进行,如共享内存,管道,套接字,信号,消息队列等。
线程之间共享全局变量,静态变量等,通信简单,但是做好同步和互斥较为复杂。

6 同步方式

进程:无名管道、有名管道、信号、共享内存、消息队列、信号量
进程:互斥量、读写锁、自旋锁、线程信号、条件变量

7 安全性

多进程程序更安全,一个进程的出错不会导致其他进程出错。
多线程程序不安全,一个线程出错可能会影响其他线程的正确执行。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值