公司文档-read.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
公司文档-read

djyos特点节选 九九加一原则与中断控制器 让软件设计中的99%工作更加简单易行,从而降低应用程序设计的综合复杂性和难度,对仅有的1%的极端需求更多地考虑可实现性而不是便利性,使应用程序能够实现这些极端功能,又不为了这极少数工作的方便性而使整个系统过于复杂,这个特点在djyos的中断管理中体现得淋漓尽致。 普通的操作系统,只是提供了几个函数,方便程序员编写ISR函数以及开关中断等。而djyos则不同,它把中断看做是一种特殊的事件,把它纳入事件管理的轨道。实际应用中,既有像键盘这样对实时性没有要求的中断,也有对中断响应延时时间非常苛刻的高速信号。 普通操作系统对这两种中断信号不加区分,把所有中断都看做需要快速响应的信号。它为没有实时要求的信号提供快速响应,而不能进一步改善高速信号的响应时间。而djyos却区别对待,它把中断分为实时中断和异步信号,任意一个中断源都可以设定自己属于实时中断还是异步信号。只要你把某中断设为实时中断,它将获得比传统操作系统快得多的响应延时,且在操作系统运行中,永远不会关闭实时中断使能,代价是,实时中断的ISR不能使用所有的操作系统API。而异步信号则响应时间比普通操作系统慢一些,但几乎所有事件服务可以使用的操作系统服务,它都可以使用,比如异步信号ISR允许使用malloc函数,编程上比普通操作系统ISR方便得多。异步信号的第二种响应方式则完全在事件上下文中,比异步信号ISR响应更加慢,但却获得了与主程序相同的操作系统服务。 所以说,在djyos下编程,对于绝大多数实时性要求不是那么高的中断,提供比传统操作系统方便得多的编程环境,而对极少数对响应时间非常苛刻的中断,则提供了比传统操作系统更高的实现的可能性。 事件调度,让工程师解放思想 硬件和操作系统是舞台,程序员是演员,而项目经理、系统工程师则是导演、编剧。舞台可能是木板、沙石、水泥建造的,而软件开发平台则由硬件、操作系统管理下的线程等组成,就像演员不需要知道舞台是什么材料制造的,只需要用心演绎剧本一样,我们不应该要求程序员了解CPU内部运作过程以及线程和进程这些晦涩难懂的机制,只需要把软件功能实现就可以了。 在传统操作系统中,线程的创建、启动、暂停、停止、删除等无一不是由程序员自己控制的,在桌面系统(包括嵌入式的Windows CE)上,有Visual C++等工具替你包装,简化了多线程编程,在嵌入式环境中,程序员需要熟悉线程的一切。更重要的是,由多线程实现应用程序,是CPU执行过程决定的,要求程序员熟练操作线程,实际上就是要求程序员按照CPU执行过程思考问题。 djyos是按事件调度的,它使程序员可以按照人类认知事物的方式编写程序,没有任何跟线程相关的API函数,程序员只需要做以下两件事 (1)登记事件类型把需要计算机做的事情告诉告诉操作系统。 (2)2、编写事件处理函数。 我们知道,软件是用于解决实际问题的,这些问题可能需要很深的行业背景,比如化工、生物科学等,程序员则很可能是这些行业的专家,这些专家对计算机有可能一知半解,在嵌入式领域尤甚。要他们理解并熟练应用线程知识,需要花费很大的代价,以及很多的培训经费,而djyos下编程,他们就可以摆脱这些束缚,可以尽情地发挥自己的专业知识。 小goto与大GOTO 写过C代码的都知道,goto是很受忌讳的语句,甚至有人根本不用。我们对函数内的goto耿耿于怀的同时,却无视长期存在的、组件之间、线程之间的大GOTO,甚至有些操作系统还为提供了丰富的大GOTO为卖点,说什么为应用程序提供丰富的服务。 什么是大GOTO呢?我们看看唤醒休眠中的线程函数的执行结果,假设这个函数的函数名是task_resume,并且假设该该操作系统是按优先级调度的。线程A调用task_resume(taskB_id)后,如果线程B的优先级高于A,则立即切换到B的上下文继续执行。所以,对线程A来说,相当于执行了一个跨组件的GOTO,对于线程B来说,它睡得好好的,却被人无缘无故地叫醒。对项目经理来说,即团队A与团队B之间存在直接的交叉控制,或称交叉跳转。 djyos不提供任何类似的操作,所有事件都是自己控制自己的行为,没有任何事件处理函数间交叉控制的可能,djyos认为,事件处理过程中,不会无缘无故地停止,也不会无缘无故地继续,djyos提供各种服务,让应用程序自己控制自己的行为。程序停下来,必定有其理由,要么是要等待一定的时间,djyos提供闹钟同步功能;要么是等待某个锁可用,djyos提供锁同步功能;要么是等待某事件结束,djyos提供事件同步功能……,总之,这些同步功能的支持下,应用程序每个事件都达到自己控制自己行为的目标,而彻底摒弃了应用程序模块之间的交叉控制。也就是说,djyos中不存在跨事件(对应其他操作系统的线程)的大

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档