114 线程的概述

一、线程概念的引入背景

1.1 进程

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

1.2 有了进程为什么要有线程

进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上:

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

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

现在你应该明白了进程的缺陷了,而解决的办法很简单,我们完全可以让听、写、思三个独立的过程,并行起来,这样很明显可以提高听课的效率。而实际的操作系统中,也同样引入了这种类似的机制——线程。

1.3 线程的出现

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

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

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

二、初识线程

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

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

2.1 形象比喻

操作系统 ===> 工厂

进程 ===> 车间

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

cpu ===> 电源

原文地址:https://www.cnblogs.com/xichenHome/p/11569056.html

时间: 2024-11-17 03:31:32

114 线程的概述的相关文章

C#之线程基础概述

1.概述: 每个正在操作系统上运行的应用程序都是一个进程,一个进程可以包括一个或多个进程.线程是操作系统分配处理器时间的基本单元. 在进程中可以有多个线程同时执行代码,每个线程都维护异常处理程序.调度优先级和一组系统用于在调度该线程前保存线程上下文的结构. 线程上下文包括为使线程在线程的宿主进程地址空间中无缝地执行所需的所有信息,包括线程的CPU寄存器组和堆栈. 线程是进程中的执行流程,一个进程中可以同时包括多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线

进程通信、线程同步 概述

进程通信.线程同步  概述 线程同步 CRITICAL_SECTION 临界区. 同一时刻只能由一个线程访问的资源,叫临界资源,比如打印机.访问临界资源的代码叫临界代码区域. CRITICAL_SECTION对象没有句柄,不能被其他线程共享. 线程同步之 CRITICAL_SECTION . http://blog.csdn.net/chuchus/article/details/24494253 MUTEX 互斥量. MUTEX对象有句柄,所以也可用于不同进程的线程之间做同步. MUTEX有超

一起talk C栗子吧(第一百一十二回:C语言实例--线程同步概述)

各位看官们,大家好.上一回中咱们说的是线程间通信的样例,这一回咱们说的样例是:线程同步.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,提到同步.我想大家都不陌生,由于我们在前面章回中介绍过进程同步的内容. 大家都知道线程是轻量级的进程,尽管线程不像进程一样须要专门的通信机制,可是线程须要专门的同步机制. 今天我们来介绍一下线程同步的内容. 同步的含义对于进程和线程是同样的.仅仅是进程和线程实现同步的方式不同样.关于同步的含义,我们就不做具体的介绍了,假设大家忘记了,能够点击这里查看

线程状态概述

线程状态概述: TIMED_WAITING: BLOCKED: 以下是重点: WAITING: 等待唤醒机制即线程通信:Object.wait() 和 Object.notify 原文地址:https://www.cnblogs.com/wmqiang/p/10666818.html

线程进程概述

进程和线程目的,提高执行效率 1,单进程单线程,主进程,主线程 2,自定义线程: 主线程 主线程 子线程 进程: 优点,同时利用多个CPU,能同时进行多个操作 缺点,耗费资源,(重新开辟内存) 线程: 优点,共享内存,IO操作时候,创造并发操作 缺点,抢占资源 进程不是 越多越好,CPU个数=等于进程个数 线程也不是越多约好,具体案例具体分析 计算机中执行任务的最小单元是:线程 IO 操作利用CPU GIL,全局解释器锁 IO密集型(不用CPU) 多线程 计算密集型(用CPU) 多进程

线程的概述

进程:正在运行的程序,负责了这个程序的内存空间分配,代表的内存中的执行区域 线程:就是在一个进程中负责一个路径 多线程:就是在一个进程中多个执行路径同时执行 进程负责了一个程序的内存空间 线程负责了一个程序的执行路径 假象: 电脑上的程序同时在运行."多任务"操作系统能同时运行多个进程(程序)--但实际是由于CPU分时机制的作用,使每个进程都能循环获得自己的CPU时间片.但由于轮换速度非常快,使得所有程序好象是在"同时"运行一样. 多线程的好处: 解决了一个进程里面

线程优先级概述

线程的状态分为:新.可运行.等待/阻塞/睡眠.运行.死 1.所谓的线程同事执行的背后含义. 线程的执行和操作系统cpu有关,当你的cpu是单核,其实是一个线程在执行,4核cpu是4个线程再执行.单核cpu执行时,在这个时间段,划分为多个时间片,单线程轮换执行每个时间片.由于运行速度快,可以看作是多线程同时执行. 2.Thread.sleep(); 线程睡眠,让其它线程有机会执行,时间到期后自动苏醒,该线程变为可运行状态.(不能保证睡眠到期后就开始执行) 3.Thread.jiled();(线程的

进程与线程的概述

1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在. 2:什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,我们发现只有运行的程序才会出现进程. 进程:就是正在运行的程序. 进程是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 3:多进程有什么意义呢? 单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情. 举例:一边玩游戏(游戏进程),一边听音乐(音乐进程). 也就是说现在的计算机都是支持多进

进程和线程的概述

1. 程序,线程,进程的概念: 程序:编写的静态代码进程:程序的一次执行的过程.线程:能在进程中独立完成的子任务. 2 Java实现多线程的两种方法: 继承Thread类代码: public class MyThread extends Thread{ @Override public void run() { // TODO Auto-generated method stub super.run(); System.out.println("继承Thread的线程:"+Thread