线程和进程的区别?
答:
- 根本区别:进程是一段正在执行的程序,是资源分配的基本单元;而线程是CPU调度(程序执行)的基本单元。
-
地址空间:进程有自己独立的地址空间(锁在房子里工作),系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段;线程没有独立的地址空间(在公共区工作),同一进程的线程共享本进程的地址空间。
-
资源拥有:进程之间的资源是独立的;同一进程内的线程共享本进程的资源。
- 系统开销:进程执行开销大,线程执行开销小。
原文链接: https://jingyan.baidu.com/article/11c17a2cf213eff446e39d1d.html (图片)
原文链接: https://www.jianshu.com/p/354066717f78 (概念)
拓展:
-
进程:是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
-
线程:是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
-
联系:线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。