进程
一、简介:
进程是运行在内存中的程序,是执行程序的一个过程。一个进程有输入、输出、程序和状态。操作系统实现进程是维护一张有着所有进程的表格,该表格采用双向链表实现。进程表格中的每一个项被称为PCB(进程控制块)。进程控制块中存储了描述该进程的所有信息。这些信息包括进程的识别信息,说明信息,现场信息,管理信息。
识别信息:进程的唯一标识,比如进程标识符,标识符可以是数字也可以是字符串
说明信息: 进程的状态、等待原因、程序代码存放地址、进程的数据存放地址
现场信息: 寄存器信息、程序状态字寄存器的信息
管理信息:存放程序的优先数和队列指针。
操作系统通过对PCB块的管理来管理和控制进程,PCB是进程的实例。
二、进程的创建:
2.1 创建进程的事件
- 系统的初始化
- 程序执行创建进程的系统调用
- 用户请求创建一个新进程
- 批处理作业的初始化
2.2进程分类: 前台进程、后台进程、守护进程
- 前台进程是与用户进性交互的进程
- 后台进程是与用户没有特定关系的进程
- 守护进程执行某种任务的进程
操作系统启动的时候会初始化很多的进程,与用户交互的图形界面进程,被称为前台进程;不与用户交互,用于执行某些操作的后台进程;还有一类一直停留在后台的进程为守护进程。
进程也可以被进程创建。正在运行的进程可以发出系统调用,来创建新的进程。比如一个正在运行的进程A发出了系统调用创建了一个新的进程B,此时A是B的父进程,B是A的子进程。在windows系统中,进程间的关系是平等的,父进程创建子进程的时候,父进程会获得子进程的一个句柄,以此来控制子进程,该句柄可以在进程间相互传递,所以进程间的关系是相等的。在Linux中,进程间的关系并不是平等的,存在着继承关系。当在一个进程A中执行创建进程的系统调用的时候,Linux操作系统的内核会拷贝父进程的PCB(进程控制块,记录了该进程运行的所有信息和描述该进程的信息)。子进程共享父进程的地址空间采用的是写时复制。
进程可以被用户请求创建,不如点击某个图标或者输入某个指令。
执行批处理任务的时候,操作系统也会创建一个新的进程来执行该批处理任务。
三、进程的销毁
进程的销毁大体可分为两类,一类为自愿销毁,一类为非自愿销毁
自愿销毁:正常退出,错误退出
非自愿销毁: 严重错误退出,被其它进程杀死。
四、进程的层次结构
Linux中以init进程为根节点的树结构,windows没有层次结构。
五、进程的状态
三态模型:
就绪、运行、阻赛
关系:
运行->就绪;运行->阻赛;阻赛->就绪;就绪->运行;
运行:进程实际占用CPU
就绪: 进程做好了准备,但没有获取到cpu
阻赛: 进程无法继续运行,或缺少运行时的必要资源。CPU空闲该进程也不能运行
运行与就绪态的差别在于是否获取到了CPU,而阻赛是整个进程无法进行,需要外部某个事件的发生,才能运行。
运行->就绪;就绪->运行的转换是需要进程调度程序进行控制。进程调度程序是操作系统的一部份。
标签:阻赛,创建,信息,进程,就绪,运行 From: https://www.cnblogs.com/aoCat/p/17103244.html