zoukankan      html  css  js  c++  java
  • 操作系统面试题(二)

    进程控制

    每一个进程都由一个程序段(包括数据)和一个进程控制块pcb组成,程序和数据描述进程应完成的功能;而进程控制块pcb则描述进程的动态特征。

    PCB块的属性:

    1.进程标识符:每个进程必须有唯一的标识符,可以用字符或编号标识,在创建一个进程时,由创建者给出进程的标识符。另外,为了便于系统管理,

    进程还应有一个内部标识符

    2.进程的当前状态status:该项说明本进程目前.处于何种状态(运行、就绪、等待),作为进程调度时分配处理机的主要依据。只有当进程处于就绪状态时,

    才有可能获得处理机。当某个进程处于阻塞状态时,有时要在pcb中阻塞的原因

    3.当前队列的指针:该项登记了处于同一状态的下一个pcb的地址,以此将处于同一状态的所有进程链接起来

    4.总链指针:因为进程的标识符必须是唯一的,由创建者给出的被创建进程的名字是否会重名,必须先检查系统已有的进程名,但若分别在各个队列

    去查询将是十分麻烦的,所以应提供一个进程总链结构。

    5.程序的开始地址:该进程的程序将从地址开始执行

    6.进程优先级:进程的优先级反映了进程要求CPU的紧迫程度,它通常由用户预先提出或由系统指定

    7.CPU现场保护区:当进程由于某种原因释放处理机是,CPU现场信息被保存在pcb的该区域中,以便在该进程重新获得处理机后能继续执行

    8.通信信息:指每个进程在运行过程中与别的进程进行通信时所记录的有关信息

    9.家庭联系:有的系统允许创建一个进程创建自己的子进程,这样会组成进程家族。在pcb中必须指明本进程与家族的联系

    10.占有资源清单

    不同的操作系统所使用的pcb结构式不同的。对于简单操作系统,pcb结构比较小。而在一些较复杂的操作系统中,pcb所包含的内容则比较多,

    比如有关于I/0、文件传输等控制信息。

    进程控制原语:

    1.进程创建:用户不能直接创建进程,而只能通过操作系统提供的进程创建原语,以系统请求方式向操作系统申请创建进程

    必须提供的信息:进程标识符、进程优先级、进程开始地址

    算法:create

    输入:新进程的标识符,优先级,开始执行地址

    输出:新创建进程才内部标识符 pid

    {

      在总链队列上查找有无同名的进程;

      if(有同名进程)

        return(错误码);

      从pcb资源池申请一个空闲的pcb结构;

      if(无空pcb结构)

        return(错误码);

      用入口参数设置pcb内容;

      置进程为“就绪”态;

      将新进程的pcb插入就绪队列;

      将新进程的pcb插入总链表队列;

      return(新进程的pid);

    }

    2.进程撤销:

    算法 kill

    输入:无

    输出:无

    {

      有运行指针得到当前进程的pid;

      释放本进程所占用的资源给父进程;

      该进程从总链队列中摘除;

      释放此pcb结构;

      转进程调度;

    }

    3.进程阻塞:

    算法:susp

    输入:chan等待的事件(阻塞原因)

    输出:无

    {

      保护现行进程的CPU现场到pcb结构中;

      置该进程为“阻塞”状态;

      将该进程pcb插入到等待chan的等待队列中;

      转进程调度;

    }

    4.进程唤醒:

    算法:wakeup

    输入:chan等待的事件(阻塞原因)

    输出:无

    {

      找到该阻塞原因的队列指针

      for(等待该事件的进程)

      {

        将该进程移出此等候队列;

        置进程状态为“就绪”;

        将进程pcb插入就绪队列;

      }

    }

  • 相关阅读:
    spring mvc---web.xml
    javascript:;与javascript:void(0)使用介绍
    JVM的内存区域划分
    获取配置文件内容
    spring获取webapplicationcontext,applicationcontext几种方法详解
    Spring MVC 中 HandlerInterceptorAdapter的使用(拦截器)
    google开发工具指南
    深克隆
    IO优化
    UML类图
  • 原文地址:https://www.cnblogs.com/daimingming/p/3348286.html
Copyright © 2011-2022 走看看