进程管理之进程的控制

  • 进程控制是进程管理中最基本的功能。

  • 进程的创建
    在多道程序环境中,只有(作为)进程(时)才能在系统中运行。因此,为使程序能运行,就必须为它创建进程。
    进程的创建(Creation of Process):
    一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Creat( )按下述步骤创建一个新进程。
    (1) 申请空白PCB:为新进程申请获得惟一的数字标识符,并从PCB集合中索取一个空白PCB。
    (2) 为新进程分配资源:为新进程的程序和数据以及用户栈分配必要的内存空间。
    (3) 初始化进程控制块:
    ① 初始化标识信息: 将系统分配的标识符和父进程标识符填入新PCB中;
    ② 初始化处理机状态信息: 使程序计数器指向程序的入口地址,使栈指针指向栈顶;
    ③ 初始化处理机控制信息: 将进程的状态设置为就绪或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式方式提出高优先级要求。
    (4) 将新进程插入就绪队列: 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
    在这里插入图片描述

  • 进程的终止
    进程的终止过程
    (1) 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
    (2) 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
    (3) 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。
    (4) 将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
    (5) 将被终止进程(PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息。

  • 进程的阻塞与唤醒
    进程的阻塞过程
    在这里插入图片描述
    进程的唤醒过程
    当被阻塞进程所期待的事件出现时,如I/O完成或其所期待的数据已经到达,则由有关进程(比如用完并释放了该I/O设备的进程)调用唤醒原语wakeup( ),将等待该事件的进程唤醒。

  • 进程的挂起和激活
    进程的挂起
    当出现了引起进程挂起的事件时,比如,用户进程请求将自己挂起,或父进程请求将自己的某个子进程挂起,系统将利用挂起原语suspend( )将指定进程或处于阻塞状态的进程挂起。使进程暂不接受调度
    在这里插入图片描述
    进程的激活
    在这里插入图片描述

  • 控制方式
    由OS的内核中的原语来实现。
    原语(Primitive)是由若干条指令组成的,用于完成一定功能的一个过程。它与一般过程的区别在于:它们是“原子操作(Action Operation)”。所谓原子操作,是指一个操作中的所有动作要么全做,要么全不做。换言之,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。原子操作在管态下执行,常驻内存。

猜你喜欢

转载自blog.csdn.net/weixin_37711738/article/details/89497853