进程和线程的关系/区别
1、根本区别:
进程是操作系统资源分配的基本单位
线程是任务调度和执行的基本单位
线程是轻量级进程。它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
2、开销方面:
每个进程都有独立的代码和数据空间(程序上下文)→→→→程序之间的切换【开销较大】;
线程是进程的一部分→→可以看做轻量级的进程,同进程内线程【通过多种同步互斥机制】共享进程资源【代码和数据空间】,
每个线程的私有资源(见下面)→→→→线程之间切换的【开销小】。
3、内存分配方面:
系统会为进程分配资源:堆、地址空间、全局变量👉被其下的线程所共享
而对线程而言,除了CPU外,系统【不会为线程分配内存】(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
4、包含、依赖关系:进程包含一个or多个线程,线程依赖于进程而存在,随进程结束而结束,而线程结束不会导致进程结束
5、独立部分和共享部分:
线程有自己的私有属性:TCB,线程id,寄存器、硬件上下文