原语:由若干条指令组成用于完成一定功能的一个过程。用于实现进程的通信和控制。
原语与一般过程的区别:原语是原子操作。
原子操作:指一个操作中的所有动作要么全做,要么全不做。是一个不可分割的基本单位。
原子操作在管态下执行,常驻内存。
2.3.1 进程的创建
1.进程图
2.引起创建进程的事件
(1) 用户登录。
分时系统中增加新用户。
(2) 作业调度。
(3) 提供服务。
(4) 应用请求。
3.进程的创建过程
调用进程创建原语Creat( ) 。
(1)申请空白PCB。
(2)为新进程分配资源。
主要是内存资源
(3)初始化PCB。
①初始化标识信息
②初始化处理机状态信息
③初始化处理机控制信息
2.3.2 进程的终止
1.引起进程终止的事件
1)正常结束
在程序结尾一般有一个用于表示进程已经运行完成的指令。当运行到该指令时,将产生一个中断去通知OS本进程已经完成。
2)异常结束
运行中出现某些错误和故障
(1)越界错误。
所访问的存储区超出。
(2)保护错。
进程对资源的访问方式不当。
(3)非法指令。
进程试图去执行一条不存在的指令。
(4)特权指令错。
进程试图去执行OS的指令。
(5)运行超时。
进程的执行时间超过了指定的最大值。
6)等待超时。
进程等待某事件的时间超过了规定的最大值。
(7)算术运算错。
进程试图去执行错误的运算。
(8)I/O故障。
在I/O过程中发生了错误等。
3) 外界干预
指进程应外界的请求而终止运行。
(1) 操作员或操作系统干预。
由于某种原因,例如,发生了死锁,由操作员或操作系统终止该进程。
(2) 父进程请求。
(3) 父进程终止。
2.进程的终止过程
OS调用进程撤销原语destroy()。
(1)根据进程标识符,检索出该进程的PCB,从中读出该进程的状态。
(2)若被终止进程正处于执行状态,应立即终止该进程的执行,并重新进行调度。
(3)终止所有子孙进程。
(4)将全部资源归还给其父进程或系统。
(5)将被终止进程(PCB)从所在队列(或链表)中移出。
2.3.3 进程的阻塞与唤醒
1. 引起进程阻塞和唤醒的事件
1)等待资源
2)等待I/O
3)新数据尚未到达
4)无新工作可做
如系统中的发送、接受进程。
2.进程阻塞过程(Block原语过程)
1)立即停止执行,改变PCB中状态信息
2)将进程放入阻塞队列中
3.进程唤醒过程(wakeup原语过程)
1)把被阻塞的进程从等待该事件的阻塞队列中移出
2)将其PCB中的现行状态由阻塞改为就绪
3)将该PCB插入到就绪队列中
2.3.4 进程的挂起与激活
1.进程挂起的原因(回忆)
1)终端用户请求
2)父进程请求
3)负荷调节需要
2.挂起过程(Suspend原语过程)
1)查PCB状态信息,由活动状态改为静止状态。思考:进程能否由执行到挂起?
2)将PCB中信息复制到内存指定区域。
3)将进程移除内存。
3.进程的激活过程(Active原语过程)
1)将进程从外存调入内存
2)检查PCB状态,由静止改为活动,并送入相应队列。
3)若进入就绪队列,则与当前进程比较优先级的。