进程
1.1 进程的定义
定义:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程
运行的程序的一种执行过程可以理解为进程,进程消耗一定资源
程序的源文件是静态的,系统将程序调用到内存中执行是动态的
1.2 进程的组成:
- 程序的代码;
- 程序处理的数据;
- 程序计数器中的值,指示下一条将运行的指令;
- 一组通用的寄存器的当前值,堆、栈;
- 一组系统资源(如打开的文件)总之,进程包含了正在运行的一个程序的所有状态信息。
- 程序是产生进程的基础(程序限制了进程能够完成什么样的功能)
进程与程序的联系:
- 程序是产生进程的基础(程序限制了进程能够完成什么样的功能)
- 程序的每次运行构成不同的进程(程序只有一份(放在硬盘中),但是一个程序可以执行多次(数据可能不同,效果不同))
- 进程是程序功能的体现
- 通过多次执行,一个程序可以对应多个进程,通过调用关系,一个进程可以包括多个
进程和程序是多对多的关系
进程和程序的区别
1.进程是动态的,程序是静态的,程序是有序代码的集合,进程是程序的执行,进程有核心态和用户态
核心态(操作系统在内核中执行)进程在执行过程中有时候需要完成一些操作系统才能完成的功能
进程向操作系统发出请求,操作系统代表进程在内核中执行(这叫做进程的核心态)
用户态
2.进程是暂时的,程序是永久的,进程是一个状态变化的过程,程序可以长久保存
3.进程和程序的组成不同,进程的组成包括程序,数据和进程控制块(即为进程状态信息)
1.3 进程的特点
- 动态性:可动态的创建和结束进程
- 并发性:进程可以被独立调度并占用处理机运行;并发并行
- 独立性:不同进程的工作不相互影响(正确性方面)其他进程不会破坏进程的正确性(独立性通过页表保证,通过页表可以使得不同的程序访问不同的地址空间,越过地址空间会产生缺页错误和异常)
- 制约性:因访问共享数据/资源或进程间同步而产生制约
并发:一段时间内多个进程在执行,时间段很小,给人感觉是在一块执行一样
并行:一个时刻多个进程执行(所以一个cpu无法并行(要多核多cpu才可以))
(a)动态性(b)独立性(c)制约性
1.4 进程控制块 进程控制结构
描述进程的数据结构:进程控制块
(PCB)
操作系统为每个进程都维护了一个PCB,用于保存该进程有关的各种状态信息
一个进程存在则必定会有一个PCB(PCB是进程存在的唯一的标志)(如果进程消失,则对应PCB也随之消失)
进程控制块:操作系统管理控制进程运行所用的信息集合
操作系统用PCB来描述进程的基本情况以及运行变化的过程
2.1 PCB具体包含什么信息?如何组织?进程的状态转换?
三大类:
1.信息:
(一)进程标识信息。如本进程的标识,本进程的产生者标识(父进程标识)﹔用户标识。
(二)处理机状态信息保存区。保存进程的运行现场信息:用户可见寄存器,用户程序可以使用的数据,地址等寄存器。
控制和状态寄存器,如程序计数器(PC),程序状态字(PSW)。
栈指针,过程调用/系统调用/中断处理和返回时需要用到它。(栈指针寄存器)
(三)进程控制信息:·调度和状态信息,用于操作系统调度进程并占用处理机使用。·进程间通信信息,为支持进程间的与通信相关的各种标识、信号、信件等,这些信息存在接收方的进程控制块中。·存储管理信息,包含有指向本进程映像存储空间的数据结构。·进程所用资源,说明由进程打开、使用的系统资源,如打开的文件等。
·有关数据结构连接信息,进程可以连接到一个进程队列中,或连接到相关的其他进程的PCB。
2.组织方式:
3.进程状态
3.1 进程的生命期管理
- 进程创建(三个事件)
– 系统初始化时创建第一个进程,这个进程再负责创建新的进程
– 用户请求创建一个新的进程:给操作系统提出请求,创建进程
– 正在运行的进执行了创建进程的系统调用
形成的新的进程需要经过操作系统选择出可以执行的进程(称为就绪进程)
就绪进程也有多个,内核要选择某进程占用cpu并执行
进程等待:
运行态到等待状态需要状态转换
等待事件的触发一般是由自己来触发
进程唤醒:
从等待状态变为就绪状态