鉴于熟悉的.NET形式在Windows上运行,而Windows不是实时操作系统,而MONO在Linux上运行(标准内核也不是实时操作系统)。同时,任何提供垃圾回收(如“托管” .NET)的内存分配方案,以及任何堆内存方案都会引入非确定性的、潜在的非平凡的延迟到应用程序的执行行为中。
是否存在一种备选主机操作系统和编码范例的组合,可以利用C# .NET的所有功能和便利性,同时实现一个解决方案,该解决方案可以在严格指定的时间限制内执行指定的代码部分?例如,每隔10ms启动一个C#方法,容忍小于1ms的偏差,完成时间仅由方法本身执行的工作决定?
显然,必须仔细编写应用程序;时间关键代码必须避免内存分配;一旦启动了硬实时循环,应用程序必须完成所有内存分配等工作,并且没有其他线程活动。此外,主机操作系统必须支持实时调度。
这在.NET / MONO框架内是否可行,或者是否被.NET运行时、框架和支持它(或兼容的等效物)的操作系统的设计所排除?
例如:使用类似于NETduino的C#语言,是否可能在微小粒度(约1毫秒)机器控制方面进行可靠的操作?它们是否有限制或需要替代策略来满足这些应用程序的需求?
是否存在一种备选主机操作系统和编码范例的组合,可以利用C# .NET的所有功能和便利性,同时实现一个解决方案,该解决方案可以在严格指定的时间限制内执行指定的代码部分?例如,每隔10ms启动一个C#方法,容忍小于1ms的偏差,完成时间仅由方法本身执行的工作决定?
显然,必须仔细编写应用程序;时间关键代码必须避免内存分配;一旦启动了硬实时循环,应用程序必须完成所有内存分配等工作,并且没有其他线程活动。此外,主机操作系统必须支持实时调度。
这在.NET / MONO框架内是否可行,或者是否被.NET运行时、框架和支持它(或兼容的等效物)的操作系统的设计所排除?
例如:使用类似于NETduino的C#语言,是否可能在微小粒度(约1毫秒)机器控制方面进行可靠的操作?它们是否有限制或需要替代策略来满足这些应用程序的需求?