📄 00000000.htm
字号:
一般而言CPU在执行中断处理程序的时候是禁止中断的,因为这样可以避免编写 <br />可重入的处理程序,如果此时允许中断,那么处理程序必须是可重入的,这在内核 <br />代码中是很麻烦,很耗资源的事情。 <br />要更快更即使地响应中断必须使真正的中断处理程序足够短,只做一些必须做 <br />的事情,比如从外设读数据到缓冲区,这也可以叫做前台程序,而处理缓冲区数据 <br />的工作则又后台程序完成,一般CPU在处理后台程序的时候是允许中断的。 <br />Linux里也是这样的,它的中断处理程序有一个上半部和下半部机制,上半部和前台 <br />程序类似,一般禁止中断,下半部类似于后台程序,允许中断。 <br />在《Linux设备驱动程序》里有个例子,可以让并口拼命发中断(需要9,10脚短接) <br />中断处理程序用上下半部机制实现时的中断处理速度比普通方式实现快很多。 <br />有些事情不是想当然就可以的,实际问题需要一些实际的经验和技巧。 <br /> <br />【 在 wangyyff (郁闷的大面瓜) 的大作中提到: 】 <br />∶<i> 我的理解和你的好像不太一样耶, </i><br />∶<i> 前后台这种概念在没有操作系统的嵌入式系统里讲的很多,并不仅仅是限制在网络应用 </i><br />∶<i> 下面引述邵老师的一段话: </i><br />∶<i> 前后台系统是指不使用实时操作系统的嵌入式应用程序。一般做法是,写一个无限循环 </i><br />∶<i> 的程序 </i><br />∶<i> ,在程序中查询每个事件是否发生,每个任务是否具备运行条件,如果是,则处理这个 </i><br />∶<i> 事件或执行这个任务。这可以看成是一个后台程序。 </i><br />∶<i> 而系统对中断的响应可以看成是前台程序,中断的打入表示某事件的发生,在中断服务 </i><br />∶<i> 子程序中,一般对中断做一些简单的处理,然后给出一个某事件发生了的标志,待后台 </i><br />∶<i> 程序来处理。后台可以叫作任务级,前台叫作中断级。 </i><br />在中断服务程序里不对中断作处理,只是置一个标志位,或者写一个状态字,然后由一个 <br />短时定时程序或无限循环程序来扫描这些标志位或状态字,再启动相应的处理程序,这不 <br />就相当于把原本可以一次完成的事情,拆成了两段吗?肯定要引入新的变量,增加跳转时 <br />间,也就相当于增加了系统被干扰的机会,跳转是程序最容易跑飞的时候,这样做的好处 <br />是什么呢? <br />如果一次发生了多个中断,那么启动的处理程序应该是相当于一个线程,或是一个任务, <br />应该是独立运行的,这时这个短时定时程序或无限循环程序要启动多个线程,而此时多线 <br />程之间的通讯以及对线程根据优先级进行频繁的执行、挂起,却要由内核来做?那么这个 <br /> <br />核来管理这些中断信号?还是你说的这个程序本身就是内核呢? <br />我觉得这个流程就好像是 <br /> <br />中断信号1,2,3。。。->程序,得到标志位或状态字->启动线程->内核管理线程 <br /> <br />那么为什么不直接 <br /> <br />中断信号1,2,3。。。->内核->启动和管理线程 <br /> <br />愚人之见。 <br />请大家就这个问题深入探讨探讨吧! <br /> <br /> <br /> <br /> <br />-- <br /> <br /> <br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.33.82] <br />发信人: hongchen (kissing-fire), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Thu Nov 8 22:00:10 2001) <br /> <br /> <br />【 在 ncic (yiran) 的大作中提到: 】 <br />∶<i> 大面瓜说的是有道理,有依据的, </i><br />∶<i> 中断处理程序分成两部分可以更快更及时地的响应中断,更少地丢失中断信号 </i><br />∶<i> 一般而言CPU在执行中断处理程序的时候是禁止中断的,因为这样可以避免编写 </i><br />∶<i> 可重入的处理程序,如果此时允许中断,那么处理程序必须是可重入的,这在内核 </i><br />∶<i> 代码中是很麻烦,很耗资源的事情。 </i><br />内核是不是指嵌入式操作系统的内核? <br />还是泛指任何操作系统? <br />还是任何核心程序? <br />∶<i> 要更快更即使地响应中断必须使真正的中断处理程序足够短,只做一些必须做 </i><br />∶<i> 的事情,比如从外设读数据到缓冲区,这也可以叫做前台程序,而处理缓冲区数据 </i><br />∶<i> 的工作则又后台程序完成,一般CPU在处理后台程序的时候是允许中断的。 </i><br />∶<i> Linux里也是这样的,它的中断处理程序有一个上半部和下半部机制,上半部和前台 </i><br />∶<i> 程序类似,一般禁止中断,下半部类似于后台程序,允许中断。 </i><br />∶<i> 在《Linux设备驱动程序》里有个例子,可以让并口拼命发中断(需要9,10脚短接) </i><br />实际系统中恐怕不会出现这种情况吧, <br />肯定应该通过主系统精确定时来触发这种外部频繁事件吧 <br />否则这种中断,恐怕没有哪个系统能承受得了,这么频繁的进行中断,系统不死机才怪! <br /> <br />∶<i> ................... </i><br />好久没有和人深入讨论问题了,真是觉得高兴! <br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.60.132] <br />发信人: flyking (小排), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Thu Nov 8 22:58:28 2001) <br /> <br />我想内核应该是指操作系统,但是写这些程序时,就把他们想象成除此以外的 <br />处理就行了,经确定时的问题肯定是不行的,因为任何外部中断都有可能随时发生 <br />而很多必须立即做出响应的 <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 内核是不是指嵌入式操作系统的内核? </i><br />∶<i> 还是泛指任何操作系统? </i><br />∶<i> 还是任何核心程序? </i><br />∶<i> 实际系统中恐怕不会出现这种情况吧, </i><br />∶<i> 肯定应该通过主系统精确定时来触发这种外部频繁事件吧 </i><br />∶<i> 否则这种中断,恐怕没有哪个系统能承受得了,这么频繁的进行中断,系统不死机才怪! </i><br />∶<i> 好久没有和人深入讨论问题了,真是觉得高兴! </i><br /> <br /> <br />-- <br /> 起初,神创造天地。地是空虚混沌,渊面黑暗;神的灵运行在水面上。 <br />神说:"要有光"。就有了光。神看光是好的,就把光暗分开了。神称光 <br />为"昼",称暗为"夜"。 <br /> <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.52.211.247] <br />发信人: wangyyff (郁闷的大面瓜), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Fri Nov 9 08:40:52 2001) <br /> <br /> <br />为什么频繁中断就会把系统搞死?说说看 <br />精确定时?系统的实时性何在? <br /> <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 内核是不是指嵌入式操作系统的内核? </i><br />∶<i> 还是泛指任何操作系统? </i><br />∶<i> 还是任何核心程序? </i><br />∶<i> 实际系统中恐怕不会出现这种情况吧, </i><br />∶<i> 肯定应该通过主系统精确定时来触发这种外部频繁事件吧 </i><br />∶<i> 否则这种中断,恐怕没有哪个系统能承受得了,这么频繁的进行中断,系统不死机才怪! </i><br />∶<i> 好久没有和人深入讨论问题了,真是觉得高兴! </i><br /> <br /> <br />-- <br />===================================================================== <br />新域名启动: <br /> 英文版:<a href="http://www.cfly.org">http://www.cfly.org</a> <br /> 中文版:<a href="http://wangyunfei.yeah.net">http://wangyunfei.yeah.net</a> <br /> <br /> ARM (32位RISC) + RTEMS (完全FREE的军用操作系统), <br /> <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 203.93.105.209] <br />发信人: neuronlee (机械化神经元), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Fri Nov 9 11:02:25 2001) <br /> <br />我想你说的是进程间通信巴.各种通信机制不同,实现方法也不同. <br />在传统的UNIX中,发SIGNAL实际上就是在进程控制块中的数据结构 <br />中置相应的位.但发消息就不太一样了,因为涉及到数据传输, <br />所以在进程内存空间分离的情况吓要进行内存拷贝,在许多嵌入式 <br />操作系统中因为内存空间是统一的,所以仅传送指针就行了. <br />但中段有其特殊性,就是不能阻塞.这是极其重要的. <br />【 在 wheregone (猫猫) 的大作中提到: 】 <br />∶<i> 实际上 在中断里发消息或mail,物理上也是置标志位 </i><br />∶<i> 对不对? </i><br /> <br /> <br />-- <br />According to the system log, windows had already started, but <br />it seems to be murdered mysteriously! :-DDDDDDDD <br /> <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 66.75.17.82] <br />发信人: neuronlee (机械化神经元), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Fri Nov 9 11:04:15 2001) <br /> <br />他不过是在没OS的情况吓实现一个简单的调度程序而已. <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 虽然你已经受不了我了 </i><br />∶<i> 不过我还是想把这个问题弄明白 </i><br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -