多任务

单核CPU执行多任务

  • 方法:操作系统控制CPU轮流让各个任务交替执行。
例如:
任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。
表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。

因此,真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,
所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

并发与并行

  • 并发:任务数多余cpu核数(通过操作系统的各种任务调度算法,实现用多个任务“一起”执行,看上去一起执行)
  • 并行:任务数小于等于cpu核数(任务一起执行)

CPU执行程序的原理

  1. RAM、ROM、CPU、Instruction指令的含义:
  • RAM:内存,断电后内容无法保存,也称为易失性存储
  • ROM:外存,指硬盘等
  • CPU:计算机的所有计算操作都由CPU执行(有输入和输出的集成电路)
  • Instruction指令:CPU进行操作的基本单元(包括操作对象、操作对象的地址、对操作对象进行何种操作)
  1. RAM、ROM、CPU的联系:
    (1)RAM的速度远快于ROM
    (2)CPU与内存直接进行数据交换

  2. RAM相关结构:
    程序被CPU执行之前,首先要被编译成CPU可执行的指令。
    内存中存放的数据分为两类,一类是指令;另一类是数据。
    不管是指令还是数据,都有其相对应的地址

  3. CPU相关结构(下面指CPU执行指令时所涉及的基本结构):

  • Program Counter(程序计数器)
  • Instruction Register(指令寄存器)
  • Data Register(数据寄存器)
  • ALU(算数逻辑单元)
  1. 作用:
    (1)计数器、寄存器:相当于存放数据的器件
    (2)程序计数器用来存放指令的地址
    (3)指令寄存器用来存放指令
    (4)数据寄存器用来存放参与计算的数据
    (5)ALU用来计算的器件

程序、进程、线程

  1. 含义:
  • 程序(静态代码)是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中。
  • 进程(动态的)是程序的一次执行过程,是系统运行程序的基本单位。
  • 线程(轻量级进程)
  1. 联系:
    (1)系统运行一个程序即是一个进程从创建、运行到消亡的过程;
    (2)一个进程就是一个执行中的程序,进程在计算机中一个指令接着一个指令地执行,每个进程还占某些系统资源;
    (3)当程序在执行时,进程将会被操作系统载入内存中;
    (4)一个进程在其执行的过程中可以产生多个线程;

  2. 区别:
    进程与线程:同类的多个线程共享同一块内存空间和一组系统资源。
    所以系统在产生一个县城或者在各个线程之间作切换工作时,负担要比进程小得多。

  3. 结论:
    进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高程序的运行效率。

进程、线程和协程

  • 单进程(批处理):程序由头执行到尾后,才让出CPU,让另一个程序去执行。
  • 主线程+子线程:存活在一个进程中,不同线程处理不同的事情。
  • 协程:用来处理队列问题(例如生产者消费者问题),类似于是对线程的改进。对于线程处理不同的事情时相互之间有联系,协程完全被程序员所调度和掌控,不用操作系统介入

【拓展】

  • IO密集型:用多线程、多协程完成

  • 计算密集型:用单进程(进程里不用再分多线程)

根据处理问题的不同,使用线程、进程、协程
Python是少量可以处理协程的编程语言之一,
而其他编程语言都能处理线程和进程。

你可能感兴趣的:(多任务)