程序、进程、线程、协程
进程和程序的区别:
程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合
进程(Process):是动态的,是程序的一次执行过程,同一个程序多次执行会对应多个进程
进程和线程的区别:
- 调度:进程是资源管理的基本单位,线程是程序执行的基本单位。
- 切换:线程上下文切换比进程上下文切换要快得多。
- 拥有资源: 进程是拥有资源的一个独立单位,线程不拥有系统资源,但是可以访问隶属于进程的资源。
- 系统开销: 创建或撤销进程时,系统都要为之分配或回收系统资源,如内存空间,I/O设备等,OS所付出的开销显著大于在创建或撤销线程时的开销,进程切换的开销也远大于线程切换的开销。
线程和协程的区别:
线程和进程都是同步机制,而协程是异步机制。
线程是抢占式,而协程是非抢占式的。需要用户释放使用权切换到其他协程,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力。
一个线程可以有多个协程,一个进程也可以有多个协程。
协程不被操作系统内核管理,而完全是由程序控制。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。
协程的暂停完全由程序控制,线程的阻塞状态是由操作系统内核来进行切换。
因此,协程的开销远远小于线程的开销。
协程能保留上一次调用时的状态。
PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB