进程
进程就是程序的一次执行过程,同一个程序多次执行对应多个进程;
一、进程的组成
1、PCB
(1)进程描述信息:主要是PID等关键信息;
(2)进程控制和管理信息;
(3)资源分配清单;
(4)处理机的相关信息;
2、程序段
程序的执行代码,指令序列
3、数据段:运行过程中产生的各种数据;
二、进程的状态与转换
运行状态:占有CPU,并在CPU上运行
就绪状态:已经具备运行条件,但是没有空闲的CPU,暂时不能运行(CPUX,其它资源√)
阻塞状态:等在某个事件的发生,暂时不能运行(CPUX,其它资源X)
创建状态:创建PCB,程序段,数据段
终止状态:回收内存,程序段,数据段,撤销PCB
进程状态间的转换(图,且只能这样转化)
创建态->就绪态
就绪态->运行态
运行态->就绪态
运行态->中止态(比如数组越界)
运行态->阻塞态(主动)
阻塞态->就绪态(被动)
三、进程控制
1、进程控制就是实现进程的状态转换;
2、使用原语来保证进程的统一性;
原语的执行具有原子性,即执行过程只能一气呵成,所以有开中断和关中断,在开中断和关中断之间,如果存在其他的中断信号,不会去执行其他的中断信号;
1、进程的创建:
创建原语:申请空白PCB、为新进程分配所需资源、初始化PCB、将PCB插入就绪队列
引起进程创建的事件:用户登录、作业调度、提供服务、应用请求
2、进程的终止:
撤销原语
引起进程中止的事件:正常结束、异常结束、外界干预
3、进程的阻塞:
阻塞原语:运行态->阻塞态
引起进程阻塞的事件:需要等待系统分配某种资源、需要等待相互合作的其他进程完成工作
4、进程的唤醒:
唤醒原语:阻塞态->就绪态
引起进程唤醒的事件:等待的事件发生
5、进程的切换
切换原语
引起进程切换的事件:当前进程事件片到、有更高优先级的进程到达、当前进程主动阻塞、当前进程终止
进程之间的通信方式
共享存储的方式:
(1)基于存储区:进程之间的空间不能互相去访问,所以可以让操作系统申请一份共享存储区;通过P,V操作才防止同时读写;
(2)基于数据结构的共享:可以理解为特殊的全局变量;
消息传递:
(1)直接传递:进程对进程,直接标注PID指出发送给那个进程;
(2)间接传递:进程A发送到中间站,进程B去中间站去取;
管道通信:类似于消息管道,先进先出