进程和线程

进程(Process)

进程是指计算机中正在运行的一个程序实例,比如打开的 unity 就是一个进程。每个进程都拥有一个属于自己的独立内存空间,由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大。

线程(Thread)

线程是操作系统能够进行资源调度的最小单位,也可以将其当作一种轻量级的进程,是进程中实际运行的单位。线程只拥有一些执行时必不可少的资源(程序计数器,寄存器和栈)。它可与同属一个进程的其他的线程共享进程所拥有的公共资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少

并行与并发

并发

并发就是通过一种算法将 CPU 资源合理地分配给多个任务(例如当一个任务执行 I/O 操作时,CPU 可以转而执行其它的任务,等到 I/O 操作完成以后,或者新的任务遇到 I/O 操作时,CPU 再回到原来的任务继续执行)。虽然 CPU 在同一时刻只能执行一个任务,但是通过将 CPU 的使用权在恰当的时机分配给不同的任务,使得多个任务在视觉上看起来是一起执行的。

并行

并发是针对单核 CPU 的,那么并行就是针对多核 CPU 的。真正实现了同时执行多个任务,每个核心各自执行一个任务。