目录

​​一、并发和并行有什么区别​​

​​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调度的基本单位,没有单独地址空间,有独立的栈,局部变量,寄存器, 程序计数器等;
  • 创建进程开销大,包括创建虚拟地址空间等需要大量系统资源; 创建线程开销小,基本上只有一个内核对象和一个堆栈;
  • 一个进程无法直接访问另一个进程的资源;同一进程内的多个线程共享进程的资源
  • 进程切换开销大,线程切换开销小;进程间通信开销大,线程间通信开销小;
  • 线程属于进程,不能独立执行。每个进程至少要有一个线程,称为主线程;