进程与线程面试题(亲身经历)
进程与线程是什么?以及它们的区别
答:
我们先说一下进程:
在早期未引入进程的OS中,
例如多机处理系统中,并发执行程序的话(由于并发程序的速度不同与资源竞争导致其执行程序的间断),其会造成数据的不可再现,这样的程序失去其意义。
后来呢为了使得程序能并发执行且有效地对并发程序进行控制与描述,引入了进程的概念。
引入进程的OS:
程序在运行前,系统为之分配一个PCB(进程控制块:系统通过PCB对进程控制与描述),与程序段和程序相关的数据一起构成了进程实体。
而进程的实质就是指进程实体的一次运行过程。且它是资源分配和调度的基本单位。
我们来说一下线程:
进程呢,是一个资源的拥有者,因而在创建,销毁,切换进程时,系统付出的时空开销都很大,因此系统的进程数量不宜多,这限制了并发程度的提高。
后来呢,为了让更多程序更好的并发执行且尽量减少系统的开销,不少OS的学者想到将进程的两个属性分开,
由OS分开处理,(轻装上阵:对可调度和分派的基本单位,不作为拥有资源的单位) 和 (拥有资源的基本单位,又不对之进行频繁的切换),这种思路导致了线程的出现。
引入了线程的OS:
一个进程至少有一个线程:
线程作为一个可调度和分派的基本单位(利用CPU的基本单位),其几乎不拥有资源(必要的TCB),对其创建,销毁,切换开销十分小,且易于调度,进而提升了系统并发程度,且有利于发挥多处理器的功能。
进程作为系统资源分配的单位,为其多个线程提供资源,其已经不能作为可执行的实体,我们看到的执行的进程其实执行的是一个主线程。
我们从进程与线程的 调度,并发,拥有资源 和 系统开销 来对其进行区分和比较:
调度:
- 在同一进程内,线程的切换不会引起进程的切换,但从一个进程的线程切换到另一个进程中的线程时,会引起进程的切换。
并发性:
- 进程可并发执行, 且一个进程中多个线程之间也可并发执行,使得OS有更好的并发性,更加有效地提升系统资源的利用率和系统的吞吐量。
拥有资源:
- OS 的进程可以拥有资源,是