虽然我在C语言方面已经实现了许多项目,但我对操作系统完全是新手。我在Discovery板(STM32)上尝试了实时Linux,并得到了LED闪烁的正确结果,但我并没有真正理解整个过程,因为我只是按照步骤进行操作,在互联网上找不到每个步骤的完整描述。
我想在实时Linux上实现调度。有什么最好的入门方式吗?是否有任何网站、书籍或教程可用?
如果能提供完整的RTLinux过程描述将不胜感激。
谢谢!
虽然我在C语言方面已经实现了许多项目,但我对操作系统完全是新手。我在Discovery板(STM32)上尝试了实时Linux,并得到了LED闪烁的正确结果,但我并没有真正理解整个过程,因为我只是按照步骤进行操作,在互联网上找不到每个步骤的完整描述。
我想在实时Linux上实现调度。有什么最好的入门方式吗?是否有任何网站、书籍或教程可用?
如果能提供完整的RTLinux过程描述将不胜感激。
谢谢!
我曾经反向体验了从“裸机”到基于操作系统的编程的转变。我一开始是完全的软件人员,完全专注于操作系统方面,随着时间的推移,我已经转向相反的方向(甚至使用VHDL设计电路!)。我的建议是从简单的开始。Linux相当复杂,无论你看哪里,都有许多层次的东西一起工作,以交付最终产品。如果你决心要进行实时Linux扩展,我很乐意建议https://xenomai.org/,这是一个针对Linux的实时扩展。
然而,要更具体地回答您关于在Linux中实现调度的问题,是可以的,但这需要大量的工作并且可能非常复杂。操作系统使用完全公平的调度过程(http://en.wikipedia.org/wiki/Completely_Fair_Scheduler),每当您启动一个线程时,它就会被添加到运行列表中。如果您将代码实现为驱动程序在内核空间中,依赖于硬件中断等,则可能略有不同,但通常情况下,Linux的工作方式如此。实时通常意味着它有能力为线程分配几个不同的优先级,并随时充分利用线程抢占,这些概念实际上并不是vanilla Linux的一部分。它有一些概念,但由于其限制,当您从Linux寻求实时行为时可能会出现问题。