操作系统--进程
进程
进程的定义: 一个具有独立功能的程序在一个数据集合中的一次动态执行过程
进程与程序的联系:
- 程序是产生进程的基础
- 程序的每次运行构成不同的进程
- 进程是程序功能的体现
- 通过多次执行, 一个程序可以有多个进程; 通过多次调用, 一个进程可以包括多个程序(例如: 一个进程同时需要多个程序进行运算)
进程与程序的区别
- 进程是动态的, 程序是静态的, 程序是有序代码的集合; 进程是程序的执行, 进程有核心态/用户态(进程需要在操作系统的内核中执行此时为核心态. ps:中断,异常,系统调用这三种情况出现时, 由用户态转为内核态)
- 进程是暂时的, 程序是永久的;
- 进程和程序的组成不同: 进程包括程序, 数据以及进程状态信息
进程的特点
- 动态性: 可动态创建和结束进程
- 并发性(注意!!! 并发 != 并行): 一个单核cpu在一段时间内只能执行一个进程
- 独立性: 不同进程之间工作互不影响
- 制约性: 因多个进程访问共同资源或者进程间同步而产生制约
进程控制块(PCB)
PCB是进程存在的唯一标志
PCB含有的信息
(1) 进程标识信息(进程标识, 父进程标识, 用户标识等)
(2) 处理器(CPU)的信息保存区
(3) 进程控制信息
(4) PCB组织方式
进程管理
1.进程生命周期管理:
(1) 创建:
引起创建线程的三个主要事件:
- 系统初始化
- 用户请求创建一个新进程
- 正在运行的进程执行了创建进程的系统调用
(2) 运行
- 内核选择一个就绪进程让它占用cpu执行
(3) 等待
- 请求并等待系统服务, 无法马上完成
- 启动某种操作, 无法马上完成
- 需要的数据没有到达
ps:只有进程自己可以阻塞自己
(4) 唤醒
- 阻塞的进程需要的资源可满足
- 阻塞的进程等待的事件到达
- 将该进程的PCB插入到就绪队列
ps:进程只能被其他的进程或者操作系统唤醒
(5) 结束
结束的四种情形:
- 正常退出(自愿)
- 错误退出(自愿)
- 致命错误(非自愿)
- 被其他进程杀死(非自愿)
进程状态变化模型
1. 进程的三种基本状态(ps: 不同系统设置的状态数不同)
- 运行状态: 进程正在cpu上运行
- 就绪状态: 进程获得了除cpu以外的所有资源
- 阻塞状态: 进程正在等待某一事件而暂停运行
2. 进程五状态模型
进程挂起
什么是进程挂起? 进程没有占用内存空间称为进程挂起
挂起状态
- 阻塞挂起状态: 进程在外存等某件事件出现
- 就绪挂起状态: 进程在外存, 只要进入内存即可运行
挂起相关状态转换
- 把一个进程从内存转到外存有以下几种情况:
-
阻塞到阻塞挂起
-
就绪到就绪挂起
-
运行到就绪挂起
- 在外存时的状态转换:
- 阻塞挂起到就绪挂起
- 把一个进程从外存转到内存有以下几种情况:
-
就绪挂起到就绪
-
阻塞挂起到阻塞
状态队列
- 由操作系统来维护一组队列, 用来表示系统当中所有的进程状态
- 不同状态分别用不同队列表示
- 每个进程的PCB都根据当前状态进入到相应队列中, 当某个进程状态发生改变时, 它的PCB会从当前状态队列转换到另一个状态队列中