1.进程通信就是进程之间进行信息交换。系统中各进程异步执行,但有些进程之间必须保持一定的联系,以便协调一致地完成指定任务。这种联系就是通过交换一定数量的信息来实现的。 消息缓冲通信技术是一种高级通信机制,由Hansen首先提出。其基本思想是:根据"生产者-消费者关系"原理,利用公共消息缓冲区实现进程之间的信息交换。 (1)试叙述高级通信机制与低级通信机制P、V原语操作的主要区别。(5分) (2)试叙述解释消息缓冲通信技术的基本原理。(10分) (3)消息缓冲通信机制中提供发送消息原语。Send(receiver,a)和接收消息原语Receive(a)。调用参数a分别表示发送消息的内存区首地址或接收进程的内存消息区首地址。试设计相应的数据结构,并用P、V操作原语实现Send和Receive原语。(15分)
答案: (1)要点:进程间通信时所交换的信息量可多可少。少者仅是一些状态和数据的交换,或者仅是一个简单的唤醒信号;多者可交换大量信息。前者称为进程同步与进程互斥,亦称进程间低级通信;后者通信方式称为进程间高级通信。 (答出要点给3分,根据组织情况再给2分) (2)要点: ①由操作系统在系统空间维护一组缓冲区; ②由操作系统提供两个进程高级通信原语Send和Receive; ③发送进程要发送消息时,执行Send系统调用命令,产生自愿性中断 进入操作系统 核心; ④操作系统为发送进程分配一个空缓冲区,并将所发送的消息内容从发送进程空间拷贝到该缓冲区中;然后将此缓冲区连接到接收进程的消息队列尾;发送进程就完成了发送,返回到用户态继续执行; ⑤当接收进程执行到receive系统调用命令时,也产生自愿性中断,进入操作系统核心; ⑥操作系统将载有消息的缓冲区从消息队列中取出,并将消息内容拷贝到接收进程空间中,然后收回空闲缓冲区;接收进程完成了消息接收,返回到用户态继续执行; (①、②、④、⑥为2分;③、⑤为1分) (3)要点:①消息缓冲区的数据结构为: TypeMessage=Recoud Sender(消息发送者) Size(消息长度) text(消息正文) pointer(消息队列指针) End, ②设置信号如下: *每个接收进程有一个m-mutex:互诉对消息队列的操作,初值为1; *buffe:管理空闲缓冲区,初值为空闲缓冲区个数; *b-mutex:互诉操作空闲缓冲区,初值为为1; *message:管理接收进程消息,初值为0; ③Send(receiver,a) Begin 根据参数R寻找接收进程,如果未找到,则出错返回; P(buffer); P(b-mutex); 从消息缓冲区链上摘取一个空闲消息缓冲区; V(b-mutex); 将消息长度及消息正文由a指示由发送区拷贝到消息缓冲区中; 将发送进程的名字也记录在该缓冲区中; P(m-mutex); 将消息缓冲区挂到接收进程消息链的尾部; V(m-mutex); V(mmssage) End. ④Receive(a) Begin P(message); P(m-mutex); 从消息队列中取一个载有消息的缓冲区; V(m-mutex); 将消息长度及肖息正文由消息缓冲区拷贝到接收区(由a指示); P(b-mutex); 将空闲缓冲区挂到系统消息缓冲区链尾; V(b-mutex); V(buffer); End. (①3分②4分③4分④4分③,④重点在P,V操作)
2 . (1).进程调度的主要功能。(8分) (2).何时可进行进程调度?(8分) (3).进程调度算法解决以何种次序对各就绪进程进行处理机的分配以及按何种时间比例让进程占用处理机。时间片轮转进程调度算法的基本思想是什么?时间片的大小对系统有什么影响?在选取时间片时应考虑哪些因素?(14分)
答案:(1).进程调度的主要功能是: ①.记录系统中所有进程的执行状况;(2分) ②.根据一定的调度算法,从就绪队列中选出一个进程来,准备把CPU分给它;(2分) ③.把CPU分配给进程,即把选中的进程控制块内在关的现场信息,如程序状态字,通用寄存器的内容送入处理器相应的寄存器中,从而让它占用CPU运行.(4分) (2).进程调度的时机是: ①.正在执行的进程运行完毕;(1分) ②.正在执行的进程调用阻塞原语或P原语操作将自己阻塞起来进入等待状态;(2分) ③.执行中的进程提出I/O请求后被阻塞;(1分) ④.在分时系统中时间片已经用完;(2分) 以上都是在CPU为不可剥夺方式下引起进程调度的原因.在CPU方式为可剥夺时,有以下原因: ⑤.就绪队列中的某个进程的优先级变得高于当前运行进程的优先级,从而也将引起进程调度.(2分) (3).时间片轮转法(RR): 这主要是分时系统中使用的一种调度算法.时间片轮转法的基本思想是:将CPU的处理时间划分成一个个时间片(2分),就绪队列中的诸进程轮流运行一个时间片(2分).当时间片结束时,就强迫运行进程让出CPU,该进程进入就绪队列,等待下一次调度(1分).同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行(1分) 在轮转法中,时间片长度的选择非常重要,将直接影响系统开销和响应时间(1分).如果时间片长度很小,则调度程序剥夺处理机的次数频繁,加重系统开销(2分);反之,如果时间片长度选择过长,比方说一个时间片就能保证就绪队列中所有进程都执行完毕,则轮转法就退化成先进先出算法(2分) 影响时间片大小设置的主要因素有:系统响应时间(1分),就绪进程数目(终端数目)(1分)和计算机处理能力(1分).
|