面试题----中断的一些知识
中斷的一些知識
什么是中斷
中斷指處理機處理程序運行中出現的緊急事件的整個過程.程序運行過程中,系統外部、系統內部或者現行程序本身若出現緊急事件,處理機立即中止現行程序的運行,自動轉入相應的處理程序(中斷服務程序),待處理完后,再返回原來的程序運行,這整個過程稱為程序中斷。
?
CPU要做的事情:
改變工作模式至中斷模式
保存現場
分析中斷原因,跳到中斷起始地址處理中斷
返回到原來模式
恢復現場繼續執行原來的程序。
?
可重入程序
可重入程序
一個可重入的函數簡單來說就是可以被中斷的函數,也就是說,可以在這個函數執行的任何時刻中斷它,轉入OS調度下去執行另外一段代碼,而返回控制時不會出現什么錯誤;而不可重入的函數由于使用了一些系統資源,比如全局變量區,中斷向量表等,所以它如果被中斷的話,可能會出現問題,這類函數是不能運行在多任務環境下的。
也可以這樣理解,重入即表示重復進入,首先它意味著這個函數可以被中斷,其次意味著它除了使用自己棧上的變量以外不依賴于任何環境(包括 static),這樣的函數就是purecode(純代碼)可重入,可以允許有該函數的多個副本在運行,由于它們使用的是分離的棧,所以不會互相干擾
?
常見的不可重入程序
常見的不可重入函數有:
printf --------引用全局變量stdout
malloc --------使用全局內存分配表
free? --------使用全局內存分配表
?
可重入函數與線程安全函數
可重入函數一定是線程安全的。不可重入函數,在加入同步機制后也可以是線程安全的。
?
ISR中斷服務子程序的特點
- ISR不能有返回值;
- ISR不能傳遞參數;
- ISR應該是短而高效的,在ISR中做浮點運算是不明智的;
- ISR中不應該有重入和性能上的問題,因此不應該使用pintf()函數。
?
轉載于:https://www.cnblogs.com/qingergege/p/7833008.html
總結
以上是生活随笔為你收集整理的面试题----中断的一些知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之接口开发
- 下一篇: 有一匹马的汽车标志是什么牌子的?