为什么要引入线程?线程是如何引入的?

进程是一个可拥有资源的独立单位,进程同时又是一个可独立调度和分派的基本单位。正是由于进程有这两个基本属性,才使进程成为一个能独立运行的基本单位,从而也就构成了进程并发执行的基础。 为使程序能并发执行,系统必须对进程进行以下的一系列操作:创建进程、撤销进程以及进程间切换。据此可知,由于进程是一个资源的拥有者,因而在创建、撤消和切换中,系统必须为之付出较大的时空开销。这就限制了系统中所设置进程的数目,而且进程切换也不宜过于频繁,从而限制了并发程度的进一步提高。 要设法将进程的上述两个属性分开,由OS分开处理,亦即并不把作为调度和分派的基本单位也同时作为拥有资源的单位,以做到“轻装上阵”,而对于拥有资源的基本单位,又不对之施以频繁的切换。正是在这种思想的指导下,形成了线程的概念。 随着 VLSI 技术和计算机体系结构的发展,出现了对称多处理机( SMP )计算机系统。它为提高计算机的运行速度和系统吞吐量提供了良好的硬件基础。但要使多个 CPU 很好地协调运行,充分发挥它们的并行处理能力,以提高系统性能,还必须配置性能良好的多处理机 OS 。但利用传统的进程概念和设计方法已难以设计出适合于 SMP 结构计算机系统的 OS。其最根本的原因是进程“太重”,致使为实现多处理机环境下的进程的创建、调度、分派,都需花费较大的时间和空间开销。如果在 OS 中引入线程,以线程作为调度和分派的基本单位,则可以有效地改善多处理机系统的性能。

经验分享 程序员 微信小程序 职场和发展