目录
一、并发和并行有什么区别
1、概述
2、摘取
3、参考文章
二、线程和进程有什么区别
1、进程
2、线程
3、关系
4、小结
一、并发和并行有什么区别
1、概述
并行:多个事件在同一时间发生(同时执行);
并发:多个时间在同一时间段发生(同一时间段内,交替执行);
2、摘取
《并发的艺术》中大概是这样写的,系统中有多个任务同时存在可称之为“并发”,系统内有多个任务同时执行可称之为“并行”;并发是并行的子集。比如在单核CPU系统上,只可能存在并发而不可能存在并行。
3、参考文章
二、线程和进程有什么区别
1、进程
进程,资源分配的最小单位。计算机的核心是cpu,进程和线程都是一个时间段的描述,是CPU工作时间段的描述。
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
2、线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
3、关系
一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。同时, 每个线程还拥有自己的寄存器和栈,其它线程可以读写这些栈内存;
线程是进程的一个特定执行路径。当一个线程修改了进程中的资源, 它的兄弟线程可以立即看到这种变化;
4、小结
- 进程是系统进行资源分配的基本单位,有独立的内存地址空间; 线程是CPU调度的基本单位,没有单独地址空间,有独立的栈,局部变量,寄存器, 程序计数器等;
- 创建进程开销大,包括创建虚拟地址空间等需要大量系统资源; 创建线程开销小,基本上只有一个内核对象和一个堆栈;
- 一个进程无法直接访问另一个进程的资源;同一进程内的多个线程共享进程的资源;
- 进程切换开销大,线程切换开销小;进程间通信开销大,线程间通信开销小;
- 线程属于进程,不能独立执行。每个进程至少要有一个线程,称为主线程;