进程映像(进程实体)是静态的;
进程映像=程序段+相关数据段+PCB(进程控制块)
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程的区别与联系 |
---|
1、进程是程序及数据在计算机上的一次运行活动,是一个动态的概念。进程的运行实体是程序,离开程序的进程没有存在的意义。从静态角度看,进程是由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合,是一种静态的概念 |
2、进程是程序的一次执行过程,它是动态地创建和消亡的,具有一定的生命周期,是暂时存在的;而程序则是一组代码的集合,是永久存在的,可长期保存【同一个程序多次执行会对应多个进程】 |
3、一个进程可以执行一个或者几个程序。一个程序也可以构成多个进程。进程可以创建进程,而程序不能形成新的程序。 |
4、进程与程序的组成不同。进程的组成包括程序、数据和PCB。 |
进程包括:
当前活动,如程序计数器的值和处理器寄存器的内容等
进程堆栈:包括临时数据,如函数参数、返回地址和局部变量
数据段:包括全局变量
堆:这是进程运行时动态分配的内存
动态性:是程序的一次执行
并发性:引入进程的目的是为了使程序并发执行,以提高资源利用率
独立性:是指进程实体可以独立运行,独立获得资源和独立接受调度的基本单位
凡是没建立PCB的程序,都不能独立运行
异步性:进程制约性,进程执行的间断性
解决异步问题:OS中配置相应的进程同步机制
结构性:进程实体=程序段+数据段+进程控制块
一次只有一个进程可以在一个处理器上运行。但许多进程可以处于就绪态和阻塞态。
只有就绪进程可以获得处理器资源,被唤醒的进程并不能直接转换为运行态。
运行态:进程正在处理机上运行
就绪态:进程已经获得了除处理机之外的一切资源;占用CPU,并在CPU上独立运行【仅缺少处理机】
阻塞态(等待态):进程需要其他资源(除了处理机)或者等待某事件
创建态:进程正在被创建,尚未转到就绪态
【初始化PCB】创建进程:1、申请一个空白PCB。2、向PCB中填写控制和管理进程的信息。3、系统为该进程分配运行时所需要的资源。4、转入就绪态
结束态:进程正从系统消失,分为正常结束和异常退出
【撤销PCB】处理资源释放和回收工作
状态转化:
创建态→就绪态:系统完成就绪工作
运行态→终止态:运行结束或者遇到不可修复的错误
就绪态→运行态:就绪态经过处理机调度后获得处理机资源
运行态→就绪态:(中断)时间片用完或在可剥夺系统中有更高优先级,让出处理机
运行态→阻塞态:主动的行为,请求资源使用和分配,等待某事件发生(进程的某一资源还没有准备好)
阻塞态→就绪态:被动的行为,资源分配到位
**原语:**进程用的程序段 特点:执行期间不允许中断,他是一个不可分割的基本单位
**进程的创建:**父进程:创建者 子进程:被创建者
**引起进程创建的事件:**终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求等
子进程可以继承父进程,子进程撤销时将资源归还给父进程,父进程撤销时,同时撤销子进程
创建原语:
1、 为新进程分配一个唯一的进程标志号,申请空白PCB(PCB有限),若申请失败,则创建失败
2、 为进程分配资源,若资源不足,则处于阻塞态,等待资源
3、 初始化PCB【初始化:标识信息、处理机状态信息、处理机控制信息、设置进程优先级】
4、 若进程就绪队列能够接纳新进程,则新进程插入就绪队列,等待被调度运行
进程的终止:
引起进程终止的事件:1、正常结束 2、异常结束 3、外界干预:进程应外界请求而终止运行
撤销原语:
1、 根据被终止进程的标识符,检索PCB,从中读取该进程状态
2、 若处于执行状态,立即终止,将处理机资源分配给其他进程
3、 若进程有子孙进程,则终止子孙进程
4、 将全部资源归还父进程或操作系统
5、 将PCB从列表删除
进程的阻塞和唤醒
进程的阻塞(主动行为:等待资源)【BLOCK】
1、 找到被阻塞进程的标识号对应对的PCB
2、 运行态→阻塞态
3、 PCB插入等待队列,将处理机调度给其他就绪进程
进程唤醒(资源到达)【Wakeup】
1、 找到被阻塞进程的标识号对应对的PCB
2、 阻塞态→就绪态
3、 PCB插入等待队列,将处理机调度给其他就绪进程
进程切换:从一个进程运行转到另一个进程运行
引起进程切换的事件:时间片用完、主动放弃处理机、被更高优先级的进程剥夺处理机
切换原语:
1、 将运行环境信息存入PCB
2、 PCB移入相应队列
3、 选择另一个进程执行,并更新PCB
4、 根据PCB恢复进程所需运行环境
调度:决定资源分配给哪个进程;切换:实际分配行为。先有调度再有进程切换
进程控制块PCB【保存进程运行期间的相关数据】
进程存在的唯一标志。OS通过PCB表来管理和控制进程
常用组织方式:链接方式,索引方式
进程控制块PCB(是一个数据结构)是进程存在的唯一标志,保存进程运行期间的相关数据
程序段:能被进程调度程序调度到CPU运行的程序的代码段
数据段:存储程序运行期间的相关数据,可以是原始数据也可以是相关结果
进程控制块包含程序的相关信息
程序状态 | 状态可以包括创建态、就绪态、运行态、阻塞态、终止态 |
---|---|
程序计数器 | 计数器表示程序将要执行的下个指令的地址 |
CPU寄存器 | 计算机体系结构不同寄存器类型和数量不同。包括累加器、索引寄存器、堆栈指针、通用寄存器、和其他条件码信息寄存器。在发生中断时,这些状态信息与程序计数器一起需要保存,以便进程以后能正确继续执行 |
CPU调度信息 | 包括进程优先级、调度队列的指针和其他调度参数 |
内存管理信息 | 根据OS使用的内存系统,这类信息可以包括基地址和界限寄存器的值、页表或者段表 |
记账信息 | 包括CPU时间、实际使用时间、时间期限、记账数据、作业或者进程数量 |
I/O状态信息 | 这类信息包括分配给进程I./O设备列表,打开文件列表等 |
共享存储
低级方式的共享:基于数据结构
高级方式的共享:基于存储区
OS只负责为通信进程提供可共享使用的存储空间和同步互斥工具,数据交换则由用户自己安排读写指令完成
消息传递
进程间数据交换是以格式化消息为单位
直接通信方式:直接把消息挂到接收进程的消息队列
间接通信方式:发送进程把发送消息发送到某个中间实体,接受进程从中间实体取得消息
管道通信**【半双工通信】**:利用一种特殊的pipe文件连接两个进程
管道:指链接一个读进程和一个写进程以实现通信的共享文件【在内存中开辟一个大小固定的缓冲区】