通常程序不能并发执行,因为程序并发执行的结果是不可再现的。为了使程序可以并发执行,并且能对其加以描述和控制,引入了进程的概念。
1.进程的特征和定义
进程是程序的一次执行,是系统进行资源分配和调度的一个独立单位。
- 结构特征
为了使程序能够独立运行,应位置配置一个进程控制块PCB,进程是由程序段,相关的数据段和PCB(进程控制块)三部分构成的。
- 动态性
进程是程序的一次执行,由创建而产生,由调度而执行,由撤销而消亡,进程存在一定的生命周期。而程序是一组有序指令的集合,存放于某种介质上,其本身并不具有运动的含义,因而是静态的。 - 并发性
多个进程实体同存在于内存中,且能在一段时间内同时运行。 - 独立性
进程实体是一个能独立运行,独立分配资源,独立接收调度的基本单位。 - 异步性
进程按自己独立的不可预知的速度推进
2.进程的状态
- 就绪状态:只要获得CPU便可立即执行。
- 执行状态:进程已获得CPU正在执行,时间片用完会回退到就绪状态。
- 阻塞状态:由于发生某事件而使进程受阻,比如IO请求,当得到IO资源之后回退到就绪状态。
- 挂起状态:被换出内存的状态。
3.进程控制块PCB
- 常驻内存,是进程存在的唯一标示
- 其中包括进程标示,处理机状态,进程调度和控制信息。
- 系统调用和普通调用的区别在于,系统调用会引起从用户态进入核心态
4.进程的创建和终止
进程的创建:(creat原语)
- 申请空白PCB(一个系统的PCB是有限的)
- 为新进程分配资源(不同于一般的分配,PCB-LIST在一个特殊区域)
- 初始化PCB
- 将新进程插入就绪队列
进程的终止:(Holt,Logs off)
- 检查进程状态;
- 执行态――>中止,且置调度标志为真。
- 有无子孙需终止。
- 归还资源给其父进程或系统。
- 从PCB队列中移出PCB.
5.进程的阻塞和唤醒
- 引起进程阻塞和唤醒的事件
1.请求系统服务而得不到满足时,如问系统请求打印。
2.启动某种操作而需同步时:如该操作和请求该操作的进程需同步运行(即非异步操作)。
3.新数据尚未到达:如进程A写,进程B读,则A未写,完B不能读。
4.无新工作可做。
- 进程阻塞过程:是进程自身的一种主动行为
a.调block原语
b.停止执行,修改PCB入阻塞队列(一个或多个),并转调度。
- 唤醒过程:其它相关进程完成。
a.wakeup原语
b.修改PCB,入就绪队列
6.进程的挂起和激活
-
进程的挂起过程
由进程自己或其父进程调suspend原语完成,将该进程PCB移到指定区域,注意状态的改变,有可能要重新调度。
-
进程的激活过程
active原语(如在外存,调入内存,改变状态,根据情况看是否调度,如抢先或非抢先)。阻塞、唤醒一般由OS实现,而挂起与激活可由用户干预。