• 操作系统(二)进程控制


    1 进程状态

    1. 进程的三种基本状态

    1) 就绪(Ready)状态 2) 运行状态3) 堵塞状态(请求I/O,申请缓冲空间等)



















    2. 挂起状态

    引入挂起状态的原因有:

    (1)终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望临时使自己的程序精巧下来。亦即,使正在运行的进程暂停运行;若此时用户进程正处于就绪状态而未运行,则该进程暂不接受调度,以便用户研究其运行情况或对程序进行改动。我们把这样的精巧状态称为挂起状态。

    (2)父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和改动该子进程,或者协调各子进程间的活动。

    (3)负荷调节的须要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制,可由系统把一些不重要的进程挂起,以保证系统能正常执行。

    (4) 操作系统的须要。操作系统有时希望挂起某些进程,以便检查执行中的资源使用情况或进行记账。



    (1) 活动就绪→精巧就绪。当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。当用挂起原语Suspend 将该进程挂起后,该进程便转变为精巧就绪状态,表示为Readys,处于Readys状态的进程不再被调度运行。

    (2)活动堵塞→精巧堵塞。当进程处于未被挂起的堵塞状态时,称它是处于活动堵塞状,表示Blockeda。当用Suspend原语将它挂起后,进程便转变为精巧堵塞状态,表示为Blockeds

    处于该状态的进程在其所期待的事件出现后,将从精巧堵塞变为精巧就绪。

    (3) 精巧就绪→活动就绪。处于Readys 状态的进程,若用激活原语Active 激活后,该进程将转变为Readya 状态。

    (4) 精巧堵塞→活动堵塞。处于 Blockeds 状态的进程,若用激活原语Active 激活后,该进程将转变为Blockeda 状态。























    3.创建状态和终止状态

    为了管理的须要,还存在着两种比較常见的进程状态,创建状态和终止状态

    1) 创建状态

    创建一个进程一般要通过两个步骤:首先,为一个新进程创建PCB,填写必要的管信息;其次,把该进程转入就绪状态并插入就绪队列之中

    当一个新进程被创建时,统已为其分配了PCB,填写了进程标识等信息,但因为该进程所必需的资源或其他信息,如主存资源尚未分配等,一般而言,此时的进程已拥有了自己的PCB,但进程自身还未进入主存,即创建工作尚未完毕,进程还不能被调度执行,其所处的状态就是创建状态.

    2)终止状态

    进程的终止也要通过两个步骤:首先等待操作系统进行善后处理,然后将其PCB 清零,并将PCB 空间返还系统。

    进入终止态的进程以后不能再运行,但在操作系统中依旧保留一个记录,当中保存状态码和一些计时统计数据,供其他进程收集

    一旦其他进程完毕了对终止状态进程的信息提取之后,作系统将删除该进程



































    如图2-8 所看到的,引进创建和终止状态后,在进程状态转换时,相比較图2-7 所看到的的进程五状态转换而言,须要添加考虑以下的几种情况。

    (1)NULL→创建:一个新进程产生时,该进程处于创建状态。

    (2)创建→活动就绪:在当前系统的性能和内存的容量均同意的情况下,完毕对进程创建的必要操作后,对应的系统进程将进程的状态转换为活动就绪状态.

    (3)创建→精巧就绪:考虑到系统当前资源状况和性能要求,不分配给新建进程所需资源,主要是主存资源,对应的系统进程将进程状态转为精巧就绪状态,对换到外存,再參与调度,此时进程创建工作尚未完毕

    (4)运行→终止:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其它有终止权的进程所终结,进程即进终止状态。

    2 进程控制块

    1.进程控制块的作用

    为了描写叙述和控制进程的执行,系统为每一个进程定义了一个数据结构——进程控制块PCB(ProcessControl Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结.

    2.进程控制块中的信息

    1) 进程标识符

    (1) 内部标识符(2) 外部标识符。

    2) 处理机状态

    1 通用寄存器2 指令计数器3 程序状态字PSW 4 用户栈指针

    3) 进程调度信息

    1 进程状态 2 进程优先级3 进程调度所需的其他信息,它们与所採用的进程调度算法有关4事件,指进程由运行状态转变为堵塞状态所等待发生的事件,即堵塞原因.

    4) 进程控制信息

    1 程序和数据的地址,2 进程同步和通信机制3资源清单,即一张列出了除CPU 以外的、进程所需的所有

    资源及已经分配到该进程的资源的清单;4 链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB 的首地址。

    3. 进程控制块的组织方式 1) 链接方式 2) 索引方式

    2 进程 控 制

    1.进程的创建与终止

    引起创建进程的事件

    (1) 用户登录(2) 作业调度。(3)提供服务。(4)应用请求。

    进程的创建(Creationof Process)

    (1) 申请空白PCB(2)为新进程分配资源。(3)初始化进程控制块。(4)将新进程插入就绪队列,假设进程就绪队列可以接纳新进程,便将新进程插入就绪队列。

    2.进程的终止

    引起进程终止的事件

    1) 正常结束2) 异常结束3) 外界干预

    (1) 越界错误。这是指程序所訪问的存储区已越出该进程的区域。

    (2) 保护错。

    这是指进程试图去訪问一个不同意訪问的资源或文件,或者以不适当的方

    式进行訪问,比如,进程试图去写一个仅仅读文件。

    (3) 非法指令。这是指程序试图去运行一条不存在的指令。出现该错误的原因,可能是

    程序错误地转移到数据区,把数据当成了指令。

    (4) 特权指令错。这是指用户进程试图去运行一条仅仅同意OS 运行的指令。

    (5) 执行超时。

    这是指进程的执行时间超过了指定的最大值。

    (6) 等待超时。这是指进程等待某事件的时间超过了规定的最大值。

    (7) 算术运算错。这是指进程试图去运行一个被禁止的运算,比如被0 除。

    (8) I/O 故障。这是指在I/O 过程中发生了错误等

    进程的终止过程

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

    (2) 若被终止进程正处于运行状态,应马上终止该进程的运行,并置调度标志为真,于指示该进程被终止后应又一次进行调度。

    (3) 若该进程还有子孙进程,还应将其全部子孙进程予以终止,以防它们成为不可控的进程。

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

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

    2 进程的堵塞与唤醒

    1.引起进程堵塞和唤醒的事件

    1) 请求系统服务2) 启动某种操作3) 新数据尚未到达4) 无新工作可做

    统往往设置一些具有某特定功能的系统进程,每当这样的进程完毕任务后,便把自己堵塞起来以等待新任务到来。

    比如,系统中的发送进程,其主要工作是发送数据,若已有的数据已所有发送完毕而又无新的发送请求,这时(发送)进程将使自己进入堵塞状态;

    2.进程堵塞过程

    正在运行的进程,当发现上述某事件时,因为无法继续运行,于是进程便通过调用阻塞原语block 把自己堵塞。可见,进程的堵塞是进程自身的一种主动行为。

    3.进程唤醒过程

    当被堵塞进程所期待的事件出现时,I/O 完毕或其所期待的数据已经到达,则由有关进程(比方用完并释放了该I/O 设备的进程)调用唤醒原语wakeup( ), 将等待该事件的进程唤醒.

    3 进程的挂起与激活

    挂起原语的运行过程是:首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为精巧就绪;对于活动堵塞状态的进程,则将之改为精巧堵塞。为了方便用户或父进程考查该进程的运行情况而把该进程的PCB拷贝到某指定的内存区域。最后,若被挂起的进程正在运行,转向调度程序又一次调度

    激活原语先将进程从外存调入内,检查该进程的现行状态,若是精巧就绪,便将之改为活动就绪;若为精巧堵塞,便将之改为活动堵塞。假如採用的是抢占调度策略,则每当有新进程进入就绪队列时,应检查是否要进行又一次调度,即由调度程序将被激活进程与当前进程进行优先级的比較,假设被激活进程的优先级更低,就不必又一次调度;否则,马上剥夺当前进程的执行,把处理机分配给刚被激活的进程。

  • 相关阅读:
    MCU开发之I2C通信
    hibernate特殊的映射
    Hibernate使用
    css设置让a标签充满整个li
    margin
    border属性
    列表
    链接样式
    相机内参外参
    tmux
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7146449.html
Copyright © 2020-2023  润新知