一.什么是进程
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
(进程是一个 可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统 进行资源分配和保护的基本单位(1978 年全国操作系统学术会议))
二.什么是线程
线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。同一个进程中的所有线程共享进程获得的主存空间和资源,但不拥有资源。
总结:对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。
线程和进程的区别:
1.进程是运行中的程序,线程是进程的内部的一个执行序列(单元),一个进程可以拥有多个线程.
2.进程是资源分配的最小单元,线程是执行调度的最小单元。
3.进程间切换代价大,线程间切换代价小
4.进程拥有资源多,线程拥有资源少
5.多个线程共享进程的资源,进程间的资源是独立的.
三.什么是协程
http://www.cnblogs.com/lxmhhy/p/6041001.html
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
协程遇到I/O操作就切换