操作系统面试题(二)

进程控制

每一个进程都由一个程序段(包括数据)和一个进程控制块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插入就绪队列;

  }

}

 

 

 

 

posted @ 2013-10-01 10:21  野原新之助  阅读(318)  评论(0编辑  收藏  举报