Skip to content

程序

一个程序可以由多个进程组成【一个QQ应用可以登录多个qq账号同时执行】

  • 可被 CPU 执行性的 可执行文件
  • 是一个静态的文件,如果被执行了就是变成了动态的 进程

进程

一个进程可以由多个线程组成

  • 系统进行资源分配和调度的基本单位,是操作系统结构的基础。
  • 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;
  • 在当代面向线程设计的计算机结构中,进程是线程的容器。
  • 狭义定义:进程是正在运行的程序的实例

进程的分类

进程的概念主要有两点:

  • 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
  • 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

线程

一个线程可以包含多个协程

  • 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

协程(微线程)

协程是最小的执行单元

  • 因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
  • 与子例程一样,协程也是一种程序组件。
  • 相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。 协程源自Simula和Modula-2语言,但也有其他语言支持。 协程更适合于用来实现彼此熟悉的程序组件,如合作式多任务,迭代器,无限列表和管道。

程序的分类

IO 密集型【input/output 输出/输出行】

  • CPU 操作硬盘
  • 接口发送接收数据
  • 不在 cpu 与 内存 之间操作的
  • 多数与网络有关

CPU 密集型

  • cpu 进行数学计算