热爱开源,喜欢分析操作系统架构
发布时间:2013-07-14 21:18:58
前面说了一下任务的数据结构,就算是为了本文做个铺垫,现在我来说一下MQX是如何创建一个任务的。 MQX创建任务有多种方式,但创建任务的前提是必须有task_template_struct。这个task_template_struct可以通过静态的方式添加,也可以动态的添加。 举个静态添加的例子,在hello.c中: const TASK_TEMPLATE_STRUCT MQX_tem.........【阅读全文】
发布时间:2013-05-03 21:54:41
正如前文所说,一旦MQX启用了用户权限任务,就会涉及系统调用的概念。提出所谓用户权限的概念就是为了限制一个任务对系统的影响,防止不健全或是恶意的任务破坏系统的稳定性。这样的机制多适用于windows或linux这样大型的可以自由安装软件的操作系统,毕竟我们这个世界还是充满着各种恶意软件。但在实时性系统中确比较少.........【阅读全文】
发布时间:2013-04-26 15:12:35
对于任何一个多任务系统而言,由于涉及效率和安全性,其任务调度都是一个非常关键的部分。一般而言,由于涉及底层硬件的中断机制,这部分的代码都是用汇编完成的,MQX也不例外。这部分的程序可以在dispatch.s中找到。 在提具体程序之前先要说两个异常,第一个是SVC,另一个是PendSV。这两个异常都拿来给用户自定义用的,前.........【阅读全文】
发布时间:2013-04-25 20:57:34
多任务系统自然以任务为核心,在启动任务机制之后,MQX要么在任务中运行,要么就在中断服务程序里。相比linux还多了一个内核态,MQX则将内核操作也任务化了(权限比较高),如ipc任务。 MQX的任务可以在初始化的时候创建,也可以在任务运行时动态创建,还是比较灵活的,这都是建立在于动.........【阅读全文】
发布时间:2013-04-23 16:56:29
记得当时看linux源码时发现有中断线程化这么一个概念的时候让我很是新鲜,向来中断都是高高在上睥睨茫茫众生,想不到还能被进程拿下马来。当然linux采用这样的机制是为了考虑到实时性的要求,毕竟中断有各种各样的,总不能让一个十万火急的实时性进程等你一个悠哉悠哉相对不是太重要的中断服务结束吧。不过linux的中断线.........【阅读全文】