16、实时编程中的通信机制与资源共享问题

实时编程中的通信机制与资源共享问题

1. 邮箱与消息

在实时编程里,邮箱和消息是重要的通信机制。就像寄信人和收信人要约定好使用的语言一样,消息的发送和接收也需要遵循一定规则。某些内核会对消息施加少量的系统结构。

在受保护模式的系统(如 Linux)中,消息指针指向的内容不能同时被发送者和接收者访问。这种情况下,消息会先从发送者空间复制到邮箱,再从邮箱复制到接收者空间。

邮箱的实现方式多样,有的只能容纳一条消息,有的则能对多条消息进行排队,并按发送顺序传递给接收任务。部分内核还支持发送“高优先级”消息,这类消息会被立即置于队列头部。和信号量类似,任意数量的任务可以在邮箱处等待,排队方式可以是先进先出(FIFO)或按优先级排序。

若一个任务尝试向只能容纳一条消息且当前已有消息的邮箱发送消息,有两种可能情况:邮箱发送服务返回错误,或者任务被阻塞直到能发送消息。此外,当任务向无人等待的邮箱发送消息时,发送者可能会被阻塞,直到有其他任务接收该消息。

邮箱 API

邮箱 API 与信号量 API 很相似,使用前需先创建邮箱。以下是邮箱 API 的相关函数:

mailbox_t *MbxCreate (void *message);
status_t MbxDelete (mailbox_t *mbx);
status_t MbxPost (mailbox_t *mbx, void *msg);
void *MbxPend (mailbox_t *mbx, unsigned int timeout, status_t *status);
status_t Mb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值