首页 > 技术文章 > 进程、线程、协程大乱斗

wiesslibrary 2021-12-14 18:06 原文

进程 VS 线程

 

  • 进程是资源分配的最小单位,线程是程序执行CPU 调度的最小单位。这个太老生常谈了。 

  • 在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。

    任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位。

  • 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、数据段、堆空间等。当想进行切换时,保存上下文然后再切换的方式,会让切换开销很大。

  • 这个时候发展出了线程的概念,它共享进程中的刚提到的那些数据,使用着相同的地址空间,CPU创建、切换一个线程的花费远比进程要小很多。

  • 由于多个线程共享进程资源,也让线程之间的同步更方便。而进程之间的通信需要以(IPC)进行。

  • 但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

 

推荐阅读