进程和线程
进程
- 定义
- 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程
- 进程的组成
- 进程包含了正在运行的一个程序的所有状态信息
- 代码
- 数据
- 状态寄存器:CPU 状态 CR0 、指令指针 IP
- 通用寄存器:AX、BX、CX…
- 进程占用系统资源:打开文件、已分配内存…
- 进程包含了正在运行的一个程序的所有状态信息
- 进程的特点
- 动态性:可动态地创建,结束进程
- 并发性:进程可以被独立调度并占用处理机运行
- 独立性:不同进程的工作不相互影响
- 制约性:因访问共享数据/资源或进程间同步而产生制约
- 进程与程序的联系
- 进程是操作系统处于执行状态程序的抽象
- 程序 = 文件 (静态的可执行文件)
- 进程 = 执行中的程序 = 程序 + 执行状态
- 同一个程序的多次执行过程对应为不同进程
- 如命令 " ls " 的多次执行对应多个进程
- 进程执行需要的资源
- 内存:保存代码和数据
- CPU:执行指令
- 进程是操作系统处于执行状态程序的抽象
- 进程与程序的区别
- 进程是动态的,程序是静态的
- 程序是有序代码的集合
- 进程是程序的执行,进程有核心态/用户态
- 进程是暂时的,程序的永久的
- 进程是一个状态变化的过程
- 程序可长久保存
- 进程与程序的组成不同
- 进程的组成包括程序、数据和进程控制块
- 进程是动态的,程序是静态的
进程控制块( PCB,Process Control Block )
- 定义:操作系统管理控制进程运行所用的信息集合
- 操作系统用 PCB 来描述进程的基本情况以及运行变化的过程
- PCB 是进程存在的唯一标志
- 每个进程都在操作系统中有一个对应的 PCB
- 进程控制块的使用
- 进程创建:生成该进程的 PCB
- 进程终止:回收它的 PCB
- 进程的组织管理:通过对 PCB 的组织管理来实现
- 进程控制块内容
- 进程标识信息
- 处理机现场保存
- 进程控制信息
- 调度和状态信息:进程和处理机制使用情况调度
- 进程间通信信息:进程间通信相关的各种标识
- 存储管理信息:指向进程映像存储空间数据结构
- 进程所用资源:进程使用的系统资源,如打开文件等
- 有关数据结构连接信息:与 PCB 相关的进程队列
- 进程控制块的组织
- 链表:同一状态的进程其 PCB 成一链表,多个状态对应多个不同的链表
- 各状态的进程形成不同的链表:就绪链表、阻塞链表
- 索引表:同一状态的进程归入一个索引表(由索引指向 PCB ),多个状态对应多个不同的索引表
- 各状态的进程形成不同的索引表:就绪索引表、阻塞索引表
- 链表:同一状态的进程其 PCB 成一链表,多个状态对应多个不同的链表
进程状态
- 进程的生命周期划分
- 进程创建
- 引起进程创建的情况
- 系统初始化时
- 用户请求创建一个新进程
- 正在运行的进程执行了创建进程的系统调用
- 引起进程创建的情况
- 进程执行
- 内核选择一个就绪的进程,让它占用处理机并执行
- 进程等待
- 进入等待(阻塞)的情况
- 请求并等待系统服务,无法马上完成
- 启动某种操作,无法马上完成
- 需要的数据没有到达
- 只有进程自身才能知道何时需要等待某种事件的发生
- 进入等待(阻塞)的情况
- 进程抢占
- 进程会被抢占的情况
- 高优先级进程就绪
- 进程执行当前时间用完
- 进程会被抢占的情况
- 进程唤醒
- 唤醒进程的情况
- 被阻塞进程需要的资源可被满足
- 被阻塞进程等待的事件到达
- 进程只能被别的进程或者操作系统唤醒
- 唤醒进程的情况
- 进程结束
- 进程结束的情况
- 正常退出(自愿的)
- 错误退出(自愿的)
- 致命错误(强制性的)
- 被其他进程扼杀(强制性的)
- 进程结束的情况
- 进程创建