首页 > 代码库 > 第二章:进程管理

第二章:进程管理

概念一个具有一定独立功能的程序对某个数据集合的一次动态执行过程和资源分配过程。 

相关元素代码、数据、进程表

进程和程序的区别和联系:

    ·进程是动态的,程序是静态的

    ·进程是暂时的,程序是永久的

    ·程序和进程都包含代码数据,进程还还有进程表

    ·程序经过多创建,可以对应不同的进程

    ·一个进程通过系统调用,可以被多个程序所调用

 性质:

    ·动态性 

    ·并发性

    ·独立性

   ·异步性

 进程的三种主要状态:

    ·运行状态

    ·阻塞状态:由于各种原因,进程放弃处理机的运行,而且不再期望被调用进行处理。

      阻塞分为两种:

        ·被迫阻塞

         ·自我阻塞

   ·就绪状态:准备好资源等待由调度器调度进入运行状态

 三种状态之间的转换:

   ·运行状态 --> 阻塞状态

   ·运行状态 --> 就绪状态

   ·就绪状态 --> 运行状态

   ·阻塞状态 --> 就绪状态

 进程控制:

   ·进程创建:

       首先查找系统的PCB表(进程控制表),查询有无空的PCB表,如果有 ,则申请一个,并对其进行初始化。初始化的项目有进程标识符(PID)、进程状态和运行程序的起    始地址等。如果申请不成功,要么继续等待有空闲PCB表时继续申请,要么返回创建失败信息。

   ·进程的创建:

     申请空白进程表—>为新进程分配资源—>初始化进程表—>如果进程就绪队列能够接纳新进程,便将进程插入就绪队列。

 创建进程的典型事件:

   ·用户登录 

   ·作业调度 

   ·提供服务

   ·应用请求

 进程撤销:

    撤销原语首先检查PCB链表,寻找索要撤销的进程是否存在,如果找到了相应的表项,则撤销原语就释放该进程占用的资源并回收对应的PCB数据结构, 如果该进程还有子进     程,则进程撤销原语必须先撤销子进程的PCB表并释放其占用的资源。

 进程撤销的情况:

    ·正常结束(自愿的)

    ·异常结束

        ·普通错误退出(自愿的)

       ·致命错误退出(非自愿的)

   ·外界干预(非自愿的)

 进程阻塞:

     进程阻塞原语先停止处理机并同时保存该进程的处理现场,然后将阻塞进程插入到等待队列中,再将控制权交给调度程序,调度程序会按调度算法从就绪队列中选择一个进        程投入运行。

 进程唤醒:

      唤醒原语将被唤醒的进程从相应的等待队列移除,并将其PCB中状态置为就绪状态,并将其送入就绪队列。此时,唤醒原语既可以从调度程序处直接返回,也可以转向进程        调度程序,由调度进程选择一个合适的进程去运行。

     进程由运行状态变为阻塞状态时,是这个进程自己调用阻塞原语去完成的,而进程由阻塞状态到就绪状态却是另一个进程调用唤醒原语实现的,一般情况下,这个进程与被        唤醒进程是具有一定相关性的并发进程。

 可能引起阻塞和唤醒的事件:

     ·请求系统服务

     ·启动某种操作

     ·新数据尚未到达

     ·无新工作可做

 进程挂起:

     挂起原语将进程交换到外存储区挂起,释放其在内存中占用的资源,改写PCB返回系统。

 进程激活:

     激活原语将进程从外存储区交换到内存,进行内存重定位,改写PCB进程状态信息,内存非配信息,程序计数器等,返回激活原语调用处。当激活后进程处于就绪状态时,        返回后,控制权将交还给调度程序,重新调度。

 进程组织:

    ·进程实体:

   ·程序:也称正文,描述进程所要完成的功能,特指二进制的指令代码。

   ·数据集合:程序运行时所需要的数据结构,包括常数、变量、堆、数据栈     等。

   ·进程控制模块:

        ·进程控制模块包含了进程的描述信息、控制信息和资源信息,是进程动态特性的集中反映。

        ·进程控制信息包括:进程的基本信息和处理机管理信息

        ·进程内存资源分配

       ·进程设备和文件的分配使用情况进程同信:进程之间的信息交换工作称为进程间的同信

   ·PV操作称为低级操作

  ·高级通信的方式可分为三类:

      ·共享内存 

      ·消息传递

     ·管道机制

 线程:

    特性:

         ·轻型实体(容易创建和撤销)

        ·独立调度和分配的基本单位

        ·可并发执行

        ·共享进程资源

        ·适应硬件发展

 调度:

     概念:进程的数量多于处理机的个数,竞争处理机。 分配处理机的任务由进程调度机完成,由进程分配程序具体实施。用一定的算法,动态的把处理机分配给进程,使之                       能公平、合理和高效的 运行。

                    调度是分层次的,一个作业从提交开始,直到完成,往往要经历多级调度。

     进程调度:又称为微观调度,是指决定就绪队列中那个进程将获得处理机,并实际将处理机分配给该进程的操作。

 引起进程调度的典型事件:

      ·正在运行的进程发生某事件而不能再继续运行

     ·运行中的进程因提出输入/输出请求而暂停运行

     ·在进程同信或同步过程中运行了某种原语操作,如P操作

     ·在可抢先式调度中,有一个比当前进程优先级更高的进程进入就绪队列

     ·在时间片轮转算法中,时间片用完

 分派程序:分派程序完成进程的切换,是实际操作者:主要为上下文切换

  调度的基本准则包括:

      ·处理机利用率

      ·吞吐量 

      ·周转时间

  调度方式:

      ·可抢先 

     ·不可抢先

  调度的典型算法:

      ·先来先服务(FCFS

      ·短作业或短进(线)程优先(SJF&SPF

      ·时间片轮转调度算法(RR

      ·高优先级优先调度算法

      ·高响应比优先调度(HRRN)算法:

     响应比Rp=(等待时间+预计运行时间)

            预计运行时间=(响应时间/预计运行时间)

     ·多级反馈队列调度算法

  同步与互斥:

    概念:

    ·间接相互制约:源于资源共享-互斥

    ·直接相互制约:源于进程合作-同步

     ·临界资源:一次只允许一个进程实用的资源称为临界资源

            临界区:在每个进程中,访问临街资源的那段代码称为临界区

  同步与互斥的基本准则:

      ·空闲则进 ·遇忙等待 ·有限等待 ·让权等待

  实现临界区互斥的基本方法:

     ·软件实现方法

     ·硬件实现方法

  信号量:信号量的值是可变的,由初始化和PV操作来改变

  ·P(S)操作的定义:

     --S.Q;        //表示申请一个资源

      If(S.Q<0) //若没有空闲资源

    {

         调用进程进入等待队列S.Q

         阻塞调用进程;

     } 

  ·V(S)操作的定义:

       --V(S) //表示释放一个资源

      If(S.Q < 0) 若有进程处于阻塞状态

     {

         从等待队列S.Q中取出一个进程P

        进程P进入就绪队列;

     }

    ·同步时:PV操作一定会是一组,即同时出现

    ·互斥时:PV操作一定是分开的

管程:

      一个管程定义了一个数据结构和能为并发进程所运行的一组操作,这组操作能同步进程和改变管程的的数据。 

     经典的同步问题:

           ·生产者-消费者问题

           ·读者-写者问题 ·哲学家问题

死锁:

    概念:系统中两个或两个以上的进程无限期的相互等待永远不会发生的条 件,系统处于一种停止状态,这种情况称为死锁。

    死锁产生的原因:

         ·进程推进的书序不当

         ·对互斥资源分配不当

   产生死锁的四个必要条件(必须全部具备):

         ·互斥条件:任意时刻只允许一个进程使用资源

        ·非剥夺条件:进程已经占用的资源,不会被强制剥夺

        ·占用并请求资源:进程占有部分资源,并申请更多的资源,且不会主动释放已占有的资源

      ·循环等待:请求资源的进程形成了循环

    死锁的处理策略:

         ·忽略死锁

         ·死锁的检测与恢复

         ·死锁的避免

        ·死锁的预防

   死锁预防:

          条件              方法

          ----------------------------------------------------

         互斥             虚拟设备假摆脱

         占有并等待       一次分配全部资源

         非剥夺           主动放弃

         循环等待          有序分配资源

   死锁避免:

         ·安全状态 

         ·不安全状态

   死锁的检测:

         ·资源分配图算法

        ·资源矩阵算法

   死锁的解除:

        ·资源剥夺法

        ·进程撤销法 

       ·进程回退法

       ·重新启动系统


第二章:进程管理