以前咱们已经了解了操做系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,咱们容许多个程序同时加载到内存中,在操做系统的调度下,能够实现并发地执行。这是这样的设计,大大提升了CPU的利用率。进程的出现让每一个用户感受到本身独享CPU,所以,进程就是为了在CPU上实现多道编程而提出的。编程
进程有不少优势,它提供了多道编程,让咱们感受咱们每一个人都拥有本身的CPU和其余资源,能够提升计算机的利用率。不少人就不理解了,既然进程这么优秀,为何还要线程呢?其实,仔细观察就会发现进程仍是有不少缺陷的,主要体如今两点上:并发
若是这两个缺点理解比较困难的话,举个现实的例子也许你就清楚了:若是把咱们上课的过程当作一个进程的话,那么咱们要作的是耳朵听老师讲课,手上还要记笔记,脑子还要思考问题,这样才能高效的完成听课的任务。而若是只提供进程这个机制的话,上面这三件事将不能同时执行,同一时间只能作一件事,听的时候就不能记笔记,也不能用脑子思考,这是其一;若是老师在黑板上写演算过程,咱们开始记笔记,而老师忽然有一步推不下去了,阻塞住了,他在那边思考着,而咱们呢,也不能干其余事,即便你想趁此时思考一下刚才没听懂的一个问题都不行,这是其二。操作系统
如今你应该明白了进程的缺陷了,而解决的办法很简单,咱们彻底可让听、写、思三个独立的过程,并行起来,这样很明显能够提升听课的效率。而实际的操做系统中,也一样引入了这种相似的机制——线程。线程
60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了不少弊端,一是因为进程是资源拥有者,建立、撤消与切换存在较大的时空开销,所以须要引入轻型进程;二是因为对称多处理机(SMP)出现,能够知足多个运行单位,而多个进程并行开销过大。设计
所以在80年代,出现了能独立运行的基本单位——线程(Threads)。进程
注意:进程是资源分配的最小单位,线程是CPU调度的最小单位。每个进程中至少有一个线程。内存
在操做系统中,每一个进程有一个地址空间,并且默认就有一个控制线程,cpu真正的执行单位是线程。资源
在工厂中, 每一个车间都有房子,并且每一个车间默认就有一条流水线.效率
操做系统 ===> 工厂程序
进程 ===> 车间
线程 ===> 流水线(启动线程须要启动电源也就是CPU)
cpu ===> 电源