学习过操作系统(下面简称OS)的都清楚,计算机计算的核心是CPU,操作系统是计算机资源的管理者 同事也是软硬件之间的接口。为了实现程序的并发,而引入了进程的概念。
在传统OS中,进程是个很重要的概念,它是系统能够独立分配资源、接受调度和运行的基本单位。进程使得程序能够并发执行,且得以控制。
进程
进程是是计算机中具有一定独立功能程序在某数据集合上的一次动态执行过程,是系统进行资源分配和调度的基本单位。
进程是一个“执行中的程序”,是程序的实体,有自己独立的地址空间。进程一般有程序段、数据段及进程控制块构成,即进程实体。
进程实体:程序段、数据段和PCB(Process Control Block)。
PCB:进程控制块,它是OS中核心的一种数据结构,它存放了OS所有进程的相关信息和描述。OS根据PCB对并发进程进行控制和管理。
定义
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
特征
结构性:进程实体是由程序段、数据段和PCB三部分组成,很多时候说的进程指的是进程实体。
动态行:进程实质是进程实体的一次执行过程。“它由创建而产生,由调度而执行,由撤销而消亡”。
并发性:多个进程实体同驻内存,在一段时间内能同时运行
独立性:它是系统分配资源和调度的基本单位。
异步性:进程实体异步方式运行,进程按各自独立、不可预知速度向前推进。
状态
下图显示了主要的进程的状态及各个状态之间的转换。这里不做过多说明,具体可自行查阅资料。
进程在创建、撤销和切换,系统都会为之付出较大的时空开销,用以分配或回收各种资源、创建或回收PCB以及处理CPU环境状态等。
因此OS中,进程数量不能太多 ,切换也不能太频繁,从而限制了OS的并发性能。特别是多处理机系统发展中,线程能更好的提高程序的并发性,充分发挥了多处理机的优越性。
线程
线程就是在上述条件下,OS引入的概念,有效改善了多处理机系统的性能。
线程也被称作轻型进程,以线程作为调度和分派的基本单位。
进程与线程的区别
- 调度
引入线程前,进程是系统进行资源分配和调度的一个独立单位。
引入线程后,线程作为系统调度和分派的基本单位,进程作为资源拥有者基本单位。
即,线程基本不拥有资源。同一进程中不同线程切换不会引起进程切换(进程中线程切换到另一进程中线程 会引起进程切换)。
- 并发
进程间可以并发,同一进程间多个线程也可以并发。
- 资源
线程基本不拥有资源(也有一点必不可少的资源,线程控制块TCB、用于指示被执行指令序列的程序计数器,保留局部变量、少数状态参数和返回地址 等的一组寄存器和堆栈),但它可以访问所隶属的进程的所有资源,即进程的代码段、数据段以及系统资源(如打开的文件、I/O设备)。
- 开销
进程的创建、终止和切换都会产生较大时空开销(如前面线程引言所述),而线程只需设置少量寄存器即可,代价远低于进程。
进程和线程区别的简单图表对比
进程(Process) | 线程(Thread) |
重量级 | 轻量级 |
进程间通信较慢(不同内存地址) | 同进程中线程间通信较快(共享内存地址) |
切换代价大 | 切换代价低 |
独立的代码、数据、资源 |
同进程中不同线程共享隶属进程的代码、 数据和资源 |
进程是独立的 | 线程依赖进程,是进程的子集 |
资源拥有者基本单位 | 系统调度和分派的基本单位 |
线程在进程中的简单示意图
同一进程中多个线程也是并发的。线程共享隶属进程的代码、数据和资源。
1.进程/线程的相关知识点来自于《计算机操作系统》
2.题外:PCB,这里是指进程控制块。
但在手机主板过程中也经常提到的PCB是:(Printed Circuit Board)印制电路板,又称印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的载体。它是采用电子印刷术制作的。
3.如有不对或不足,欢迎指正。
--------------------