1根本区别(对于操作系统)
进程是操作系统分配资源的基本单位
线程是操作系统任务调度和执行的基本单位
2 系统开销(效率)
切换
进程切换开销较大,线程切换开销较小。
解释:每个进程都有独立的代码和数据内存空间,程序之间切换会有较大的开销。线程可以看做是轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器。
创建
进程创建开销较大,线程创建开销较小。
解释:每启动一个进程,操作系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。
启动一个线程程时不需要操作系统为它创建独立的内存空间。
3 运行环境
进程以操作系统作为运行载体
线程以进程作为运行载体,一个进程至少包含一个线程
4 内存分配
进程有自己独立的地址空间,包括独立的代码段,堆栈段和数据段
线程没有独立的地址空间,多个线程共享所在进程中的代码段,堆栈段和数据段。线程有自己的程序栈,供操作系统切换线程使用。
5 拥有资源
线程有自己的私有属性TCB,线程id,程序计数器,寄存器,线程函数栈。
进程有自己的进程控制块PCB,进程id,内存空间,硬件资源(打开文件等)。
5 通信方式
进程之间通信需要以IPC进行,如共享内存,管道,套接字,信号,消息队列等。
线程之间共享全局变量,静态变量等,通信简单,但是做好同步和互斥较为复杂。
6 同步方式
进程:无名管道、有名管道、信号、共享内存、消息队列、信号量
进程:互斥量、读写锁、自旋锁、线程信号、条件变量
7 安全性
多进程程序更安全,一个进程的出错不会导致其他进程出错。
多线程程序不安全,一个线程出错可能会影响其他线程的正确执行。
1333

被折叠的 条评论
为什么被折叠?



