三分钟操作系统-进程、线程与协程的区别与联系

进程

进程是动态的,而程序是静态的,进程就是将保存在硬盘上的程序运行在内存当中,进程在内存空间当中会存在一个独立的内存体,该内存体有自己的地址空间、有自己的堆,上级挂靠的单位是操作系统。操作系统是以进程为单位分配系统资源的(CPU时间片、内存等资源),进程是资源分配的基本单位。

线程

线程,有时候也会被称为轻量级进程(Lightweight Process,LWP),是CPU调度执行的最小单位。

在这里插入图片描述

进程与线程的区别与联系

联系:

线程属于进程,一个线程只能属于一个进程,一个进程可以拥有多个线程。

系统资源分配给进程,同一个进程的所有线程共享该进程的所有资源。

线程的运行是由CPU进行分配的,真正运行在处理器上的是线程

线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

区别:

调度:线程是CPU调度和分配的基本单位,进程是操作系统分配资源的基本单位。

并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行;

拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源

系统开销:在创建和撤销进程时,系统都要为其分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销。进程有独立的地址空间,一个进程崩溃以后不会影响到其它进程。而线程没有自己的独立地址空间,有自己的堆栈和局部变量,一个进程挂掉时这个进程对应的所有线程都会挂掉。

白话理解进程与线程

计算机的核心就是CPU,它承担着所有的计算任务,它就像一座工厂,时刻在运行。

1

工厂的电力有限,每次只能够运行一个车间,也就是说如果有某一个车间在运行时,其它车间必须停止运作,也就是说在单核CPU中,同一时刻只能有一个进程在运行。

<img src="三分钟操作系统-进程、线程与协程的区别与联系/p-1585014499091" alt="640?wx_fmt=jpeg" style="zoom:30%;" />

​ 进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态 。

640?wx_fmt=jpeg

一个车间里,可以有很多工人。他们协同完成一个任务。线程就好比车间里的工人。一个进程可以包括多个线程。

image-20200324095057176

车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

640?wx_fmt=jpeg

协程

协程可以是“主动式”的,由程序来告诉计算机,我要进入IO行为了,可以把CPU的控制权交给别人,这个实现的基础是用户态的。所以,协程在用户线程中,两个程序协商好了,通过某种方式协作运营,共享CPU控制权的方法。一般来说,这种协商的方法通用的关键字是yield。

0%