Algorithm 使用共享通道调度对多个设备的定期请求

Algorithm 使用共享通道调度对多个设备的定期请求,algorithm,architecture,embedded,scheduling,channel,Algorithm,Architecture,Embedded,Scheduling,Channel,我需要以可配置的间隔(每个设备)定期从可配置数量的设备请求数据。所有设备都连接到共享数据总线,因此只有一个设备可以同时发送数据 这些设备的内存非常少,因此每个设备只能将数据保存一段时间,然后才能被下一个数据块覆盖。这意味着我需要确保在任何给定设备仍然可用时从该设备请求数据,否则数据将丢失 我正在寻找一种算法,在给定设备列表及其各自的定时特性的情况下,找到一个可行的调度,以实现最小的数据丢失 我想每个设备都可以使用以下属性进行正式描述: data\u interval:下一块数据可用所需的时间 m

我需要以可配置的间隔(每个设备)定期从可配置数量的设备请求数据。所有设备都连接到共享数据总线,因此只有一个设备可以同时发送数据

这些设备的内存非常少,因此每个设备只能将数据保存一段时间,然后才能被下一个数据块覆盖。这意味着我需要确保在任何给定设备仍然可用时从该设备请求数据,否则数据将丢失

我正在寻找一种算法,在给定设备列表及其各自的定时特性的情况下,找到一个可行的调度,以实现最小的数据丢失

我想每个设备都可以使用以下属性进行正式描述:

data\u interval
:下一块数据可用所需的时间

max\u request\u interval
:请求之间不会导致数据丢失的最长时间

处理时间
:发送请求并完全接收包含请求数据的相应响应所需的时间

基本上,我需要确保在每个设备的数据准备就绪且尚未过期时从其请求数据,同时记住所有其他设备的截止日期


对于这类问题有什么算法吗?我非常怀疑我是第一个遇到这种情况的人。在线搜索现有解决方案并没有产生很多有用的结果,主要是因为调度算法主要用于操作系统等,在这些系统中,调度的进程可以随意暂停和恢复。然而,在我的情况下,我不能这样做,因为请求和接收一块数据的过程是原子的,即它只能完整地执行,或者根本不能执行。

我使用非抢占式期限单调调度解决了这个问题

这里有一些python代码供感兴趣的人使用:

“此模块实现非抢占式截止日期单调调度(NPDMS),以计算周期性,
对连接到共享数据总线“”的从属设备的不可抢占请求
从数学导入gcd
从functools导入reduce
从输入导入列表开始
类从属:
定义初始化(self,名称:str,句点:int,处理时间:int,偏移量=0,截止日期=无):
self.name=名称
self.period=int(句点)
self.processing\u time=int(processing\u time)
self.offset=int(offset)
如果self.offset>=self.period:
raise VALUERROR(“从属%s:偏移量必须<期间”%name)
self.deadline=int(deadline),如果是deadline,则为self.period
如果self.deadline>self.period:

raise VALUERROR(“从%s:截止日期必须是您迄今为止尝试/研究的内容?分享您的想法/发现/代码。我研究过各种调度算法,例如最早截止日期优先(EDF)、循环调度、速率单调、最小松弛优先等,但我没有发现它们适用于手头的问题。