- 用户需要计算机完成某项任务时要求计算机所做的工作的集合;
- 一个作业中可以有多个程序;
- 一组用计算机语言编写的命令序列的集合,没有任何执行含义;
- 一个程序可以对应一个主进程和若干个子进程;
为了使多道程序能并发执行,以提高资源利用率和系统吞吐量。
- 进程是程序的一次执行过程;
- 进程是一个程序及其数据在处理器上顺序执行时所发生的活动;
- 进程是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位;
- 进程只作为除CPU以外的系统资源的分配单元;
- 一个进程至少有一个线程,可以有多个线程;
- 为了使参与并发执行的程序能独立的运行,必须为之配置一个专门的数据结构,称之为进程控制块(Process Control Block),系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。
- 进程实体(进程映像)由程序段、相关数据段和PCB三部分构成。
- 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
- 线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成;
- 线程是进程中的一个实体,是被系统独立调度和分派的基本单位;
- 线程只作为处理器的分配单元;
- 线程里有多条指令,但是线程是不可分割的;
不管是进程还是线程,调度算法对于程序来说都是“被动”式的。那么就会出现线程不需要CPU而操作系统依然分配了CPU给线程,为了解决这种问题就出现了协程的概念。
协程是主动的通知操作系统将CPU控制权交给期望的协程,所以协程可以认为是主动性的用户态进程。