zoukankan      html  css  js  c++  java
  • 操作系统--进程管理(Processing management)

    一、进程的组成

    进程通常由程序、数据和进程控制块(Process Control Block,PCB)组成。

    二、 进程的状态以及状态切换

      进程执行时的间断性决定了进程可能具有多种状态,最基本的三种状态如下

      ① 就绪状态,当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,就可以立即运行,进程这时的状态称为就绪状态。在一个系统中可能多个进程处于就绪状态,通常将它们排成一个队列,称为就绪队列。

      ② 执行状态,进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态,在多处理机系统中,则有多个进程处于执行状态。

      ③ 阻塞状态,处于执行状态的线程由于发生某事件而暂停无法继续执行时,便放弃处理机而处于暂停状态,此时进程的状态称为阻塞状态,或等待状态或封锁状态。如IO请求,申请缓存空间等,处于阻塞状态的进程也会排成一个队列,可能还会根据不同的阻塞原因排成多个队列。

      说明:上图表示三种基本状态之间的相互转化。

      除了上述三种基本状态外,在一些系统中,新增了挂起状态,引入挂起状态的原因如下

      ① 终端用户的请求,当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来,即使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改,这种状态就称为挂起状态。

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

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

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

      引入了挂起状态后,又增加了如下几种状态的转化

      ① 活动就绪->静止就绪,当进程处于未被挂起的就绪状态时,称为活动就绪状态;当挂起时,变为静止就绪状态,处于静止就绪状态的进程不接受调度。

      ② 活动阻塞->静止阻塞,当进程处于未被挂起的阻塞状态时,称为活动阻塞状态;当挂起时,变为静止阻塞状态,处于该状态的进程在其所期待的事件发生后,将从静止阻塞变为静止就绪。

      ③ 静止就绪->活动就绪,使用激活原语激活。

      ④ 静

    止阻塞->活动阻塞,使用激活原语激活。

      为了进程的管理,还存在着两种常见的状态,即创建状态和终止状态。

      ① 创建状态,创建一个进程一般需要两步。首先,为一个新进程常见PCB,并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列之中。当创建一个新进程时,系统为其分配了PCB,填写了进程标志等信息,但由于该进程所必需的资源或其他信息(如内存)尚未分配等,此时,进程虽拥有了PCB,但是其自身却未进入内存,即创建工作尚未完成,此时进程还不能被调度运行,其所处的状态就是创建状态。

      ② 终止状态,进程的终止也需要两步。首先,等待操作系统进行善后处理,其次,将其PCB清零,并将PCB空间返回给操作系统。进入终止状态的进程以后不能再执行,但是在操作系统中任然保留一个记录,其中保存状态码和一些计时统计数据,供其它进程收集,一旦其它进程完成对终止状态进程的信息提取后,操作系统将删除该进程。

      说明:上述为七种状态之间的转化。

    三、进程间的通信

    1.互斥

    2.同步

    3.信号量

    PV操作

    管程

    4.死锁

     

  • 相关阅读:
    协方差矩阵
    SLAM中的关键帧是什么?有什么用?如何选择关键帧?
    EKF算法与非线性优化算法的比较
    LC217 存在重复元素
    LC42 接雨水
    LC20 有效的括号
    LC3 无重复最长子串
    LC4 寻找两个有序数组的中位数
    ubuntu16.04下安装g2o
    小米 各版本手机系统包 线刷包 卡刷包
  • 原文地址:https://www.cnblogs.com/feipeng8848/p/8955035.html
Copyright © 2011-2022 走看看