Java教程

二--3.进程控制

本文主要是介绍二--3.进程控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

进程控制是进程管理中最基本的功能,包括:

  创建新进程

  终止已完成的进程

  将因发生异常情况而无法继续运行的进程置于阻塞状态

  负责进程运行中的状态转换等功能

进程控制一般由OS的内核中的原语实现

1.操作系统内核

  通常将与硬件密切相关的模块(如中断处理模块)、各种常用设备的驱动程序、运行频率较高的模块(如时钟管理、进程调度和许多模块所公用的一些基本操作),安排在紧靠硬件的软件层次,将他们常驻内存,即通常被称为的OS内核。

  将处理机的执行状态分为系统态和用户态

  (1)系统态:又称为管态、内核态。具有较高特权,能执行一切指令,访问所有寄存器和存储区,传统OS都在系统态运行。

  (2)用户态:又称为目态,执行规定指令,访问指定寄存器和存储区。应用程序只能在用户态运行,防止对OS的破坏。

  1.1OS内核功能:

  (1)中断管理

  (2)时钟管理

  (3)原语操作。原语(primitive)就是由若干条指令组成的,用于完成一定功能的一个过程。它们是原子操作(Action Operation),即一个操作中的所有动作要么全做,要么不做。执行过程中不允许被打断。原子操作在系统态执行,常驻内存。

  1.2资源管理功能:

  (1)进程管理

  (2)存储器管理

  (3)设备管理

2.进程的创建

  2.1进程的层次结构

    OS中允许一个进程创建另一个进程

      把创建进程的进程称为父进程,被创建的进程称为子进程,子进程可创建更多的孙进程。

    子进程可继承父进程所拥有的资源,子进程撤销时,归还从父进程获得的资源,父进程撤销时,必须同时撤销子进程,PCB中设置了家族关系表项,以标明自己的父进程和所有的子进程。

    进程不能拒绝其子进程的继承权。

    但windows不存在任何进程层次结构,即所有进程地位相同。

    一个进程创建另一个进程时获得一个句柄,其作用相当于令牌,用来控制创建的进程。

    句柄可传递,有了句柄就能控制进程的权力。

    进程之间不再是层次关系,而是获得句柄与否,控制与被控制的关系。

  2.2进程图(Process Graph)

    用于描述进程关系的一棵有向树

    创建父进程的进程称为祖先进程,树的根节点作为进程家族的祖先(ancestor)

  2.3引起进程创建的事件

    (1)用户登录:分时系统中,用户登陆成功,为其建立进程,插入就绪队列

    (2)作业调度:多道批处理系统中,作业调度程序调度到某些作业,将他们装入内存,为他们创建进程,插入就绪队列

    (3)提供服务:运行中的用户程序提出请求,创建进程供用户服务,如打印。

    (4)应用请求:上面三类都是系统创建进程,这类事件由用户进程自己创建新进程,以便新进程以同创建者进程并发运行的方式完成特定任务。

  2.4进程的创建(Creation of Process)

    在系统中出现了创建新进程的请求后,OS便调用进程创建原语Creat按下列步骤创建新进程

    (1)申请空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。

    (2)为新进程分配其运行所需的资源,包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等。这些资源或从操作系统或仅从其父进程获得。

    (3)初始化PCB

      ①初始化标识信息

      ②初始化处理机状态信息

      ③初始化处理机控制信息

    (4)如果进程就绪队列能接纳新进程,便将新进程插入就绪队列。

3.进程的终止

  3.1引起进程终止(Termination of Process)的事件

    (1)正常结束

    (2)异常结束

      ①越界错

      ②保护错

      ③非法指令

      ④特权指令错

      ⑤运行超时

      ⑥等待超时

      ⑦算术运算错

      ⑧I/O故障

    (3)外界干预

      ①操作员或操作系统干预

      ②父进程请求

      ③因父进程终止

  3.2进程的终止过程

    调用终止原语,按下列过程终止

    (1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态

    (2)若被终止进程处于执行状态,立即终止执行,并置调度标志为真,指示该进程被终止后应重新进行调度

    (3)若该进程还有子孙进程,将所有子孙进程终止,防止他们成为不可控的进程

    (4)将被终止进程所拥有的全部资源或者归还给其父进程,或系统

    (5)将被终止进程PCB从所在队列(或链表)中移出,等待其他程序来搜集信息

4.进程的阻塞与唤醒

  4.1引起进程阻塞和唤醒的事件

    (1)请求共享资源失败/共享资源得到释放

    (2)等待某种操作的完成/操作完成

    (3)新数据尚未到达/新数据到达

    (4)等待新任务到达/新任务到达

  4.2进程阻塞过程(Block原语)

    立即停止执行,把PCB中的现行状态由执行改为阻塞,并将PCB插入阻塞队列

    转调度程序重新调度

  4.3进程唤醒过程

    从阻塞队列移出,将PCB先行状态改为就绪

    插入就绪队列

5.进程的挂起和激活

  5.1进程的挂起(Suspend原语)

    检查状态

      活动就绪->静止就绪

      活动阻塞->静止阻塞

      执行态->静止就绪

    为方便用户或父进程考察该进程的运行情况,复制PCB到指定区域

    若被挂起的进程正在执行,重新调度

  5.2进程的激活过程(Activate原语)

    将进程从外存调入内存

    检查状态

      静止就绪->活动就绪

      静止阻塞->活动阻塞

    若采用抢占调度策略,则比较被激活进程与当前进程优先级

      被激活进程优先级低,不调度,否则,剥夺当前进程的运行并切换

这篇关于二--3.进程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!