线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】

Introduction

刚刚看博客的时候看到了多线程与多线程,然后想起了两周前的组会上就提到了这个概念,当时忘记记录下来,首先得借鉴一下来自我们实验室的一位学霸的图作为引入,具体概念区别后文会讲解
线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】_第1张图片

任务调度(包括操作系统基础)

  • 大部分的OS(例如:Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式(即:A任务执行一段时间后被强制暂停,然后去执行另外下一个任务,各个任务轮流执行,依次类推)。
  • 具体过程描述:任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发(别觉得并发有多高深,它的实现很复杂,但它的概念很简单,就是一句话:多个任务同时执行)。多任务运行过程的示意图如下:
    线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】_第2张图片
  • 计算机的核心是中央处理器(CPU),它承担了所有的计算任务;
  • 计算机的管理者操作系统(OS),它负责任务的调度、资源的分配和管理,统领整个计算机硬件;
  • 应用程序侧是具有某种功能的程序,程序是运行于操作系统之上的。

进程

  • 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序、数据集合和进程控制块三部分组成。(程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。)

  • 进程具有的特征

    动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;

    并发性:任何进程都可以同其他进程一起并发执行;

    独立性:进程是系统进行资源分配和调度的一个独立单位;

    结构性:进程由程序、数据和进程控制块三部分组成。

线程

  • 回顾:在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离

后来随着计算机的发展,对CPU的需求越来越高,进程与进程之间的切换的Cost较大,已经无法满足越来越复杂的程序的要求了,线程的概念应运而生:

  • 线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。

进程与线程的区别

现在一起来梳理一下进程与线程之间的关系与区别

  • 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
  • 一个进程可以由一个或者多个线程组成(也可以说线程是一个进程中代码的不同执行路线)
  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见,如下图所示;
    线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】_第3张图片
  • 调度和切换:线程上下文切换比进程上下文切换要快得多
    线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】_第4张图片
  • 对于早期的操作系统,并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。它相当于一个进程里只有一个线程,进程本身就是线程。所以线程有时被称为轻量级进程(Lightweight Process,LWP),如下图所示(早期的计算机只有进程,没有线程,可以说简化的进程就是线程)
    在这里插入图片描述
  • 随着计算机的发展,对多个任务之间上下文切换的效率要求越来越高(一般进程与进程之间的切换会很费时费计算资源),就抽象出一个更小的概念——线程,一般一个进程会有多个(也可是一个)线程

总之,线程和进程都是一种抽象的概念,线程是一种比进程更小的抽象,线程和进程都可用于实现并发,那么什么是并发?

并发与并行

  • 并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)

  • 并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)

  • 区别:并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。

多线程与多核

上面提到的时间片轮转的调度方式说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。很多操作系统的书都说“同一时间点只有一个任务在执行”。那有人可能就要问双核处理器呢?难道两个核不是同时运行吗?其实“同一时间点只有一个任务在执行”这句话是不准确的,至少它是不全面的。那多核处理器的情况下,线程是怎样执行呢?这就需要了解内核线程。

多核(心)处理器是指在一个处理器上集成多个运算核心从而提高计算能力,也就是有多个真正并行计算的处理核心,每一个处理核心对应一个内核线程。内核线程(Kernel Thread, KLT)就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。一般一个处理核心对应一个内核线程,比如单核处理器对应一个内核线程,双核处理器对应两个内核线程,四核处理器对应四个内核线程。(怎么看拥有几个内核线程?在资源管理器里面的CPU监视器,如下图右所示,有CPU0、CPU1、CPU2、CPU3)。现在的电脑一般是双核四线程、四核八线程,是采用超线程技术将一个物理处理核心模拟成两个逻辑处理核心,对应两个内核线程,所以在操作系统中看到的CPU数量是实际物理CPU数量的两倍,如你的电脑是双核四线程,打开“任务管理器\性能”可以看到4个CPU的监视器,四核八线程可以看到8个CPU的监视器。
线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】_第5张图片
如下为本人笔记本的任务管理器中对CPU的描述,2014年的电脑采用的是Intel公司的双核四线程的i5-4210U低压版的CPU(CPU主频:1.7GHz,最大睿频:2.7GHz,核心数量:双核心,线程数:四线程,热设计功耗(TDP):15W,三级缓存:3MB)
线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】_第6张图片

CPU型号参数的识别

英特尔cpu的酷睿系列后面都带着四个数字,用于表示区别不同处理器的型号、参数。

  1. 第一位代表CPU的代数。比如i5 2500,2开头就是第二代,3开头就是三代,4开头就是四代;再如:i7 4790K中的4是代表第四代酷睿i7处理器。
  2. 第二位“5”“6”“7”“8”“9”:这些数字代表处理器等级排序,数字越大性能等级相对越高。
  3. 第三位“3”“5”“0”:这一位基本上就是对应核芯显卡的型号,其中“3”代表高性能处理器配HD 4600;“5”代表核芯显卡采用的是Iris 5000、5100或者Pro 5200;而“0”则是HD 4600。
  4. 第四位“0”“2”“8”:“0”在标准电压中代表47W,而在低电压中是代表15W;“2”则代表37W,“8”在低电压处理器中代表28W;
  5. 不同字母含义分别为:
    K代表不锁倍频的处理器
    “U”代表超低电压,以15W和28为主
    M代表标准电压cpu
    U代表低电压节能的
    H是高电压的
    X代表高性能
    Q代表至高性能级别
    Y代表超低电压的
    以上两个字母组合,含义分别是字母的组合
    字母“MX”代表旗舰级,
    “HQ”封装方式FCBGA1364,并且部分支持Trusted Execution Technology和博锐技术
    “MQ”版本封装方式FCBGA946。

Reference

  1. https://blog.csdn.net/luoweifu/article/details/46595285
  2. https://blog.csdn.net/Leo_csdn_/article/details/83338871

你可能感兴趣的:(计算机原理)