- 进程的概念
- 进程的结构和特征
- 进程与线程
什么是进程
进程(Process)是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分调度的一个独立单位
进程的结构
- 控制块(PCB,Process Control Block)——新建进程是创建,常驻内存,是进程唯一标识,OS根据PCB来对进程进行控制和管理
- 数据段——在数据区,存储变量和进程期间使用的动态分配的内存,堆栈区域存储指令和本地变量
-
进程的特点
动态性
- 并发性
- 独特性
- 异步性
什么是线程
线程(Thread)是运行在进程中的执行路径,是操作系统运算调度的最小单位。一个进程可以有多个线程,统一进程中的多个线程共享进程资源。线程与进程相比,降低了创建、撤销和切换的成本和难度。
线程与进程对比
- 调度——线程是独立调度的基本单位,进程是资源分配的基本单位
- 资源——线程不拥有资源,一个进程的多个线程共享进程资源
- 并发性——线程提高OS的并发性能
- 系统开销——创建、撤销进程,需要分配、回收相关资源,开销大;切换线程开销相对小。
- 地址空间和其他资源——进程间的地址空间互相对立;同一进程中的多线程共享进程资源
通信——多进程之间通信需要同步或互斥手段,线程可以通过多义性数据段进行通信。同一进程多线程通信更易实现
线程的实现方式
用户级线程(ULT,User Level Thread)—— 线程管理在用户空间由应用程序完成,内核感受不到线程成长,应用程序中通过线程库创建新的线程
- 内核级线程(KLT,Kernel Level Thread)——线程管理在内核空间由内核完成,由内核内部需要进行创建和撤销,应用程序通过一个内核级线程的编程接口访问线程,内核为进程及其内部线程维护上下文信息,需要内核参与来完成线程调度
多线程模型
- 多对一 —— 多个用户线程对应一个内核线程,线程在用户空间进行管理,切换调度高效。若一个线程使内核服务阻塞,整个进程阻塞。
- 一对一 —— 每个用户线程对应一个内核线程,并发能力较强,一个线程阻塞不会影响其他线程。内核线程创建较多,影响性能。
- 多对多 —— 多个用户线程对应多个内核线程,克服多对一、一对一的缺点