114 线程的概述

1、线程概念的引入背景

1.1 进程

以前咱们已经了解了操做系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,咱们容许多个程序同时加载到内存中,在操做系统的调度下,能够实现并发地执行。这是这样的设计,大大提升了CPU的利用率。进程的出现让每一个用户感受到本身独享CPU,所以,进程就是为了在CPU上实现多道编程而提出的。编程

1.2 有了进程为何要有线程

进程有不少优势,它提供了多道编程,让咱们感受咱们每一个人都拥有本身的CPU和其余资源,能够提升计算机的利用率。不少人就不理解了,既然进程这么优秀,为何还要线程呢?其实,仔细观察就会发现进程仍是有不少缺陷的,主要体如今两点上:并发

  • 进程只能在一个时间干一件事,若是想同时干两件事或多件事,进程就无能为力了。
  • 进程在执行的过程当中若是阻塞,例如等待输入,整个进程就会挂起,即便进程中有些工做不依赖于输入的数据,也将没法执行。

若是这两个缺点理解比较困难的话,举个现实的例子也许你就清楚了:若是把咱们上课的过程当作一个进程的话,那么咱们要作的是耳朵听老师讲课,手上还要记笔记,脑子还要思考问题,这样才能高效的完成听课的任务。而若是只提供进程这个机制的话,上面这三件事将不能同时执行,同一时间只能作一件事,听的时候就不能记笔记,也不能用脑子思考,这是其一;若是老师在黑板上写演算过程,咱们开始记笔记,而老师忽然有一步推不下去了,阻塞住了,他在那边思考着,而咱们呢,也不能干其余事,即便你想趁此时思考一下刚才没听懂的一个问题都不行,这是其二。操作系统

如今你应该明白了进程的缺陷了,而解决的办法很简单,咱们彻底可让听、写、思三个独立的过程,并行起来,这样很明显能够提升听课的效率。而实际的操做系统中,也一样引入了这种相似的机制——线程。线程

1.3 线程的出现

60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了不少弊端,一是因为进程是资源拥有者,建立、撤消与切换存在较大的时空开销,所以须要引入轻型进程;二是因为对称多处理机(SMP)出现,能够知足多个运行单位,而多个进程并行开销过大。设计

所以在80年代,出现了能独立运行的基本单位——线程(Threads)进程

注意:进程是资源分配的最小单位,线程是CPU调度的最小单位。每个进程中至少有一个线程。内存

2、初识线程

在操做系统中,每一个进程有一个地址空间,并且默认就有一个控制线程,cpu真正的执行单位是线程。资源

在工厂中, 每一个车间都有房子,并且每一个车间默认就有一条流水线.效率

2.1 形象比喻

操做系统 ===> 工厂程序

进程 ===> 车间

线程 ===> 流水线(启动线程须要启动电源也就是CPU)

cpu ===> 电源

相关文章
相关标签/搜索