应用消息缓冲机制完成进程间通信的过程中,下列哪一项是所必需的?
A.同步互斥信号量
B.消息缓冲区
C.send/receive原语
D.消息队列(指针)
- · 有3位网友选择 D,占比33.33%
- · 有3位网友选择 B,占比33.33%
- · 有2位网友选择 A,占比22.22%
- · 有1位网友选择 C,占比11.11%
A.同步互斥信号量
B.消息缓冲区
C.send/receive原语
D.消息队列(指针)
给定消息缓冲区队列通信机制实现方案如下: typedef unsigned int PID; //进程标识符类型 typedef struct { PID sndPID; unsigned int length; char text[1024]; } BUFFER; //消息类型 typedef struct Node { BUFFER msg; struct Node *next; } Node; //消息缓冲区结点类型 typedef struct { Node *front; Node *rear; semaphore mutex; //消息缓冲区队列互斥信号量 semaphore msgSem; //消息缓冲区队列资源信号量 } MsgQueue; //消息缓冲区队列类型 strcut { PID pid; //进程标识符 MsgQueue msgQueue; //消息缓冲区队列 ...... } PCB[8192]; //进程控制块集合,全局变量 //发送原语,参数1给定接收者进程标识符,参数2给定发送区地址 void Send(PID rcvPID, BUFFER *pSndArea) { _①__________________________________ insert(PCB[rcvPID].msgQueue, pSndArea); //用于把消息缓冲区内容拷贝和插入到消息缓冲区队列上,纯粹的队列操作,不考虑同步互斥问题 _②__________________________________ _③__________________________________ } //接收原语,参数给定接收区地址 void Receive(BUFFER *pRcvArea) { selfPID = getpid(); _④__________________________________ _⑤__________________________________ remove(PCB[selfPID].msgQueue, pRcvArea); //用于从消息缓冲区队列摘取队首缓冲区下来并将其内容拷贝到接收消息缓冲区里,纯粹的队列操作,不考虑同步互斥问题 _⑥__________________________________ } ①处应填入哪个选项?
A、wait(PCB[rcvPID].msgQueue.msgSem);
B、wait(PCB[rcvPID].msgQueue.mutex);
C、signal(PCB[rcvPID].msgQueue.mutex);
D、wait(PCB[selfPID].msgQueue.mutex);
下列()进程间的通信方式不能传递大量信息。
A)消息缓冲
B)信箱通信
C)共享内存
D)信号量及P、V操作
进程间的通信方式不能传递大量信息的是()。
A)共享内存
B)消息缓冲
C)信箱通信
D)信号量及P、V操作
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!