3.1什么是进程
3.1.1定义
程序:就是一个指令序列
由于早期的计算机只支持单道程序,引入多道程序技术后,为了方便操作系统管理,完成各程序并发执行,引入了进程,进程实体的概念
系统为每个运行的程序配置一个数据结构,称为进程控制块PCB,用来描述进程的各种信息。
3.2组成
进程(进程实体)由程序段、数据段和PCB三部分组成
3.2.1PCB
i:进程描述信息:由进程标识符PID(身份证号),用户标识符UID(表示进程所属的用户)
ii:进程控制和管理信息:由进程当前状态和进程优先级组成
iii:资源分配清单:由程序段指针,数据段指针,键盘和鼠标等构成
iv:处理机相关信息:由各种寄存器值,例如PC,IR构成
进程的管理者(操作系统)所需的数据都在PCB中
3.2.2程序段
程序段存放要执行的代码
3.2.3数据段
存放程序运行过程中处理的各种数据
3.3进程的组织
即用适当的方式把PCB组织起来
3.3.1链接方式
即按照进程状态将PCB分为多个队列
操作系统持有指向各个队列的指针
执行指针指向当前处于运行态的进程
就绪队列指针指向当前处于就绪态的进程(通常会把优先级高的进程放在队头)
阻塞队列指针指向当前处于阻塞态的进程,很多操作系统还会根据阻塞原因不同再分为多个阻塞队列
3.3.2索引方式
根据进程状态的不同,建立几张索引表
操作系统持有指向各个索引表的指针
3.4进程的特征
进程和程序是两个截然不同的概念,相比于程序,进程拥有以下特征:
动态性:进程是程序的一次执行过程,是动态的产生、变化和消亡的
并发性:内存中有多个进程实体,各进程可并发执行
独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
异步性:各进程是各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
结构性:每个进程都会配置一个PCB,结构上看,进程由程序段,数据段,PCB组成
3.5进程的状态与转换
3.5.1三种基本状态
运行态(Running):占有CPU,并在CPU上运行
就绪态(Ready):已经具备运行条件,但由于没有空闲CPU,而不能运行
阻塞态(Waiting/Blocked):因等待某一事件而不能运行
3.5.2另外两种状态
创建态(New):进程正在被创建,操作系统为进程分配资源,初始化PCB
终止态(Terminated):进程正在从系统中撤销,操作系统会回收进程进程拥有的资源,撤销PCB
3.5.3进程状态的转换
进程可能的状态转换如下:
空-新建,新建-就绪,就绪-运行,运行-退出,运行-就绪,运行-阻塞,阻塞-就绪,就绪-退出,阻塞-退出
3.6进程控制
即实现进程状态转换
3.6.1用原语实现进程控制
特点:执行期间不允许中断
原语采用“关中断指令”和“开中断指令”实现
原语运行在核心态
无论哪个原语,要做的无非三类事情:
1.更新PCB中的信息(如修改进程状态标志,将运行环境保存到PCB,从PCB中恢复运行环境)
a.所有的进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c.某进程开始运行前必然要恢复期运行环境
2.将PCB插入合适的队列
3.分配/回收资源
3.7进程通信
3.7.1定义
指进程之间的信息交换
为了保证安全,一个进程不能直接访问另一个进程的地址空间
3.7.2通信方法
3.7.2.1共享存储
两个进程共享同一个存储空间来通信,两个进程对共享空间的访问必须是互斥的
3.7.2.2管道通信
管道是指用于连接读写进程的一个共享文件,又名pipe文件,其实就是在内存中开辟一个大小固定的缓冲区。
管道只能采用单向的传输,两个进程必须互斥的访问
3.7.2.3消息传递
进程间的数据交换以格式换的消息为单位,进程通过操作系统提供的“发送消息/接受消息”两个原语进行数据交换。