进程:是程序及其数据再计算机的一次运行活动,是一个运行过程,是动态的概念,进程的运行实体是程序。
程序:是一组有序的指令集合,是静态的概念。
进程与程序:
- 进程是程序的一次执行,属于动态概念,而程序是一组有序的指令,是一种静态概念。但进程离开了程序也就失去了存在的意义。
- 一个进程可以执行一个或几个程序z反之,同一程序可能由几个进程同时执行。
- 程序可作为软件资源长期保留,而进程是程序的一次执行过程,是暂时的。进程具有生命期。
- 进程具有并发性,能与其它进程并发运行。而程序不具备这种特征。
- 进程是一个独立的运行单位,也是系统进行资源分配和调度的一个独立单位。因此,进程具有独立性,但有时进程间又具有相互制约性。
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位。
线程:是进程的一个执行单元,是进程内部的调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。
协程:是一种比线程更加轻量级的存在。一个线程也可以拥有多个协程。协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。
进程与线程:
- 地址空间:
线程之间共享进程内的地址空间,进程之间是独立的地址空间。 - 资源:
线程共享进程的资源(内存、IO等),进程之间的资源是互相独立的。 - 执行:
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程与协程:
- 切换调度:
线程最终在内核态完成,用户态应用层使用代码进行简单的现场保护和恢复即可。