在20世纪60年代以前,操作系统一直都是以进程作为能独立运行基本单位。
到20世纪80年代,提出了比进程更小的能独立运行的基本单元---线程。
1、 为什么要设计出线程来?
早期的计算机只有一个中央处理器,几个进程同时想占用,这是不可能的啊!
设计者的当时的解决方案: 排队吧,轮流着来呗。这种方案是不是唯一和最好的解决方案呢?
笔者认为肯定不是:因为这个解决方案的局限在与早期的计算机的硬件。
这种轮流来的解决方案:时间片轮询进度调度算法。
就是所有运行的进程轮流使用CPU,只不过轮流的使用的时间特别短,就10毫秒左右。
这样就让用户的所有进程都在不间断的切换运行。
一个cpu ,多个进程 ,还要不停的切换。问题就出在这里
我们知道进程的属性:
即是拥有系统资源(意味着切换状态需要开销的)的独立单位,同时也是一个独立调度和分派的基本单元。
cpu 的进程的状态的切换时非常频繁的,但进程又是系统的资源的拥有着。
这样导致的结果是:进程的切换消耗的大量的系统资源。 着不算进程本身也要系统的资源的。
进程的弊端:进程本身占用系统资源,进程在状态(就绪-运行-阻塞)切换时还要消耗系统资源。
于是设计者再想,能不能设计出来一个东西出来:
这东西可作为独立的调度和分派的基本单元,但不能独自占有系统资源。
于是又了80年代提出来的线程 。 这个东西就是线程。
它是一个可以独立调度和分派的基本单元,但不同时作为资源的拥有者。
这样可以轮流使用CPU ,但不拥有资源,这样在切换状态的时候,不需要开销了。
2、线程带来了什么好处?
就像上面所说的线程:它是一个可以独立调度和分派的基本单元,但不同时作为资源的拥有者。
从两方面减少系统的资源开销:1、不占用系统资源。 2、在状态切换的时候不消耗系统资源
因此线程设计出来的提高了系统吞吐量。