1. 进程
1.进程的概念
进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
当操作系统把执行程序调入到内存之后,让这个程序可以执行起来。就是把静态的程序通过cpu动态执行起来的过程就是进程
2.进程的组成
进程包括程序的代码,程序处理的数据,程序计数器的值即下一条指令的地址,寄存器的值,系统的资源(打开文件,内存占用等)
1.进程和程序的区别
- 程序是进程的基础
- 程序是静态的,进程是动态的
- 程序每次运行都会构建不同的进程(输入的数据不同,产生的结果也会不一样,所以会构建不同的进程)
- 通过多次调用,一个程序可以对应多个进程,一个进程可以包含多个程序,程序和进程之间是多对多的关系
2.进程的特点
- 动态性:可以动态地创建,结束进程
- 并发性:进程间可以被独立调度并占有处理机运行(并发:是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,并行:同一时刻,有多个程序同时运行)
- 独立性:不同进程的工作不互相影响,也就是进程之间不会破坏数据的正常执行(页表的支持)
- 制约性:访问共享数据/资源或者进程间同步而产生制约
第一张图体现了动态性,第二张图体现了独立性,第三图体现了制约性
3.进程控制块(PCB,Process Control Block)
进程控制块是描述进程的数据结构,每个进程在操作系统中都有一个对应的PCB,PCB是唯一的,是操作系统管理控制进程运行所用的信息集合
4.进程控制块的使用
- 进程的创建:生成该进程的PCB
- 进程的终止:回收它的PCB
- 进程的组织管理:通过对PCB的组织管理来实现
1.进程控制块的组成
-
进程标识符:本进程的标识(进程号,执行的次数),本进程的产生者标识(父进程的标识),用户进程。
-
处理机状态信息保护区
用户可见的寄存器:用户程序可以使用的数据,地址寄存器等
控制和状态寄存器:PC计数器,程序状态字
栈指针: 过程调用/系统调用时,保存当前运行的位置 -
进程控制信息
调度状态信息:
进程通信信息:进程之间的通信
进程存储信息:指向进程映像存储空间数据结构
进程所用资源:进程使用的系统资源(打开文件,网络等)
有关数据结构的连接信息:PCB相关的队列 -
进程控制块的组织
进程控制块的组织有两种方式,一直链表,一种索引表
链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表
索引表:同一状态的进程归入一个索引表(由索引指向PCB),多个状态对应多个不同的索引表
3.进程的生命周期
-
进程创建
系统初始化,用户请求创建一个进程,正在运行的进程创建了系统调用 -
进程执行
内核选择一个就绪的进程,让它处理机并运行,怎么选择是按照调度算法来的 -
进程等待
需要的资源不满足
启动某种操作,无法马上完成
请求并等待系统服务,无法马上完成 -
进程唤醒
被阻塞的进程所需的资源已准备好
被阻塞进程等待的事件到达
将该进程的PCB插入到就绪队列 -
进程结束
正常退出(自愿)
错误退出(自愿)
致命错误(操作系统强制性)
被其他进程杀死(强制性)
4.进程的挂起
进程状态与挂起中相关的状态转换
状态队列
操作系统维护的一组队列,不同的状态表示不同的队列,根据进程状态的不同,PCB加入不同的队列
2.线程
进程当中的一条执行流程
进程中的堆、代码段、数据段是线程共享的内容。堆栈、程序计数器、寄存器是线程独立的部分。
3.上下文切换
停止当前运行的进程并且调度其他进程运行的过程。
- 必须在切换之前保存进程运行的状态
- 必须在之后能恢复
- 必须快速
进程上下文切换的时候需要将该进程使用的寄存器(PC寄存器,堆栈指针)中的信息保存到进程控制块的某一个地方上