我已经被赋予了修复用C/C++编写的嵌入式操作系统的任务。当前正在使用的线程调度程序与Round Robin Scheduling非常相似,只是它缺少一个非常重要的功能,即中断线程并返回执行的能力,从而创建可执行时间的“切片”。实时嵌入式操作系统的线程调度程序
我的问题是,一个人如何去中断运行的代码,执行另一个任务,然后优雅地恢复执行?我相信这种行为需要特定于架构的汇编器。这是操作系统将运行的芯片:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC860
在附注中,这是航空电子软件,因此它必须是“确定性”。除此之外,没有堆用法,所有内存都必须有界。
目前的系统是“周期性的过程”中的下一个任务必须等待第一个完成。这很简单可怕,如果操作系统的某个部分崩溃了,让我们说ATN堆栈,那么整个操作系统就会陷入困境。 (插入失事飞机在这里......虽然这是B类的软件,这意味着如果系统的飞机将不会崩溃。)
把时间从航空公司拉出来。我想认为编写航空电子软件的人知道这些答案! – 2010-01-18 17:42:18
不幸的是,'导航危害'不是一个有效的密切原因。 – bmargulies 2010-01-18 17:49:37
废话,不要试图自己在(大概)安全关键软件中做到这一点。航空电子不适用于业余爱好者。目前已有数百万种商业实现需求,其中许多已经在飞行认证应用中使用。去买那些。 – Novelocrat 2010-01-18 17:58:36