进程是操作系统资源分配的基本单位,
线程是处理器任务调度和执行的基本单位。
同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源相互独立。
1. 进程进程是一组离散的(执行)程序任务集合;
2. 线程线程是进程上下文中执行的代码序列;
3. 两者之间具体关系:线程是进程的可执行单元,是计算机分配CPU机时的基本单元。
一个进程可以包含一个或多个线程,进程是通过线程去执行代码的。
同一个进程的多个线程共享该进程的资源和操作系统分配给该进程的内存空间。
每个进程必须有一个主线程,主线程退出之后该进程也就退出了。
一个进程的主线程是由系统创建的。
在单CPU中,表面上看好像是多个进程中的多个线程共同执行,实际上是操作系统根据调度规则、依次的 将一个一个的线程可执行代码加载进CPU中执行的;
即,CPU在同一时刻只能执行一段代码,由于CPU的频率非常快,迅速的在各个线程间进行切换,所以给人的感觉就好像是多个线程共同执行。
在多核CPU的电脑中,确实是多个线程共同执行,因为多核处理器中,每个核拥有自己的缓存、寄存器和运算器。
资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行。
进程和线程的根本区别是进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
https://www.cnblogs.com/outsider0606/p/14345802.html
https://www.yebaike.com/13/202008/447177.html