亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于Linux系統(tǒng)的實時中斷處理方法與流程

文檔序號:11991074閱讀:579來源:國知局
本發(fā)明涉及嵌入式操作系統(tǒng)技術(shù)領(lǐng)域,尤其是涉及嵌入式操作系統(tǒng)實時性的方法。

背景技術(shù):
在嵌入實時操作系統(tǒng)領(lǐng)域,一直是WindRiver公司的vxworks系統(tǒng)占據(jù)領(lǐng)導(dǎo)地位,占有了大部分的市場份額。Vxworks系統(tǒng)雖然實時性好,但因為是商業(yè)操作系統(tǒng),授權(quán)費用高。Linux操作系統(tǒng)免費,開放源代碼,獲得了非常多的應(yīng)用,特別是在服務(wù)器,計算機網(wǎng)絡(luò),數(shù)據(jù)通信,云計算等非實時領(lǐng)域成功應(yīng)用的例子不計其數(shù)。實時技術(shù)分為硬實時和軟實時兩個領(lǐng)域,像無線通信,數(shù)據(jù)機床行業(yè),不要求非常高的實時性,20us的精度已經(jīng)足夠,這些屬于軟實時領(lǐng)域。Linux要達到20us的實時精度要求,即可應(yīng)用于這些領(lǐng)域,用于替代vxworks操作系統(tǒng),但有以下幾個重大技術(shù)問題未解決:1.在Linux中,當CPU(中央處理器)正在處理中斷時,Linux會禁止中斷(在多核情況下,禁止本CPU的中斷),此時,CPU不再響應(yīng)其它中斷。如果當FPGA(現(xiàn)場可編程門陣列)中斷到來時,CPU正在處理其它中斷,如網(wǎng)絡(luò),鍵盤,USB,磁盤等中斷,從而導(dǎo)致中斷響應(yīng)延遲,甚至丟失,此問題即“中斷延遲”。2.在Linux中,中斷的優(yōu)先級比任何程序的優(yōu)先級高,當中斷完成后,CPU控制權(quán)會回到之前被中斷的程序,繼續(xù)執(zhí)行之前被中斷的程序,無法運行調(diào)度程序,從而也無法運行所需要的實時程序,此問題即“調(diào)度延遲”3.Linux調(diào)度器在調(diào)度任務(wù)時,對所有任務(wù)是一視同任,因此即使1和2解決之后,仍然無法保證調(diào)度器選擇出來的程序就是所需要的實時任務(wù)處理程序,此問題即“任務(wù)延遲”。

技術(shù)實現(xiàn)要素:
本發(fā)明的目的就是解決上述3個重大技術(shù)問題,提出一種用于Linux系統(tǒng)的實時中斷處理方法。本發(fā)明的技術(shù)方案為一種用于Linux系統(tǒng)的實時中斷處理方法,其特征在于:將CPU中斷分為兩級,分別為硬中斷和軟中斷;劃分方式為,將業(yè)務(wù)相關(guān)的FPGA外部中斷指定為高優(yōu)先級中斷,作為硬中斷,將Linux系統(tǒng)的其它中斷設(shè)定為低優(yōu)先級中斷,作為軟中斷;并且,將軟中斷處理程序的執(zhí)行環(huán)境從中斷上下文變?yōu)檫M程上下文,硬中斷處理程序的執(zhí)行環(huán)境定義為中斷上下文;將Linux系統(tǒng)中除用戶空間業(yè)務(wù)程序的相應(yīng)進程以外的其它所有用戶空間進程修改為非實時進程,將用戶空間業(yè)務(wù)程序的相應(yīng)進程和軟中斷處理程序的相應(yīng)進程修改為實時進程,實時進程優(yōu)先于非實時進程;實時進程中,用戶空間業(yè)務(wù)程序的相應(yīng)進程優(yōu)先于軟中斷處理程序的相應(yīng)進程。而且,將用戶空間業(yè)務(wù)程序和硬中斷處理程序綁定到同一個CPU,同時將用戶空間業(yè)務(wù)程序設(shè)置成一直運行狀態(tài),在硬中斷到來后執(zhí)行中斷,等硬中斷處理完成后繼續(xù)執(zhí)行用戶空間業(yè)務(wù)程序。或者,當用戶空間業(yè)務(wù)程序和硬中斷處理程序不在同一個CPU上時,通過時間序列和任務(wù)分配設(shè)計,使硬中斷到來時用戶空間業(yè)務(wù)程序所需要的CPU資源是空閑狀態(tài),當硬中斷處理完成后進行調(diào)度時,優(yōu)先級最高的用戶空間業(yè)務(wù)程序被調(diào)度程序選中并獲得CPU運行。本發(fā)明能夠?qū)inux的實時性提高到20us級別,達到軟實時領(lǐng)域的精度要求,從而可以讓Linux在無線通信和數(shù)控機床領(lǐng)域得到應(yīng)用。具體實施方式以下結(jié)合實施例詳細說明本發(fā)明技術(shù)方案。Linux操作系統(tǒng)分為用戶空間和內(nèi)核空間,實時程序運行在用戶空間,中斷響應(yīng)程序運行在內(nèi)核空間,內(nèi)核空間和用戶空間采用某種通信方式進行通信,以達到協(xié)作目的。另外Linux系統(tǒng)是多用戶分時系統(tǒng),不同用戶和不同任務(wù)共享CPU資源,資源的使用通過調(diào)度器來實現(xiàn)。Linux實時使用場景一般如下:1.外部FPGA產(chǎn)生中斷;2.Linux內(nèi)核中斷處理程序運行;3.CPU調(diào)度器運行,選擇合適的用戶程序;4.用戶程序運行。本發(fā)明實施例提出技術(shù)方案如下:1.中斷延遲解決:Linux操作系統(tǒng)本身不區(qū)別中斷優(yōu)先級,本發(fā)明將CPU中斷分為兩級,分別為硬中斷和軟中斷,劃分方式為,將業(yè)務(wù)相關(guān)的FPGA外部中斷指定為高優(yōu)先級中斷,即硬中斷;將Linux操作系統(tǒng)的其它原有的中斷,如串口,網(wǎng)卡,flash中斷等設(shè)定為低優(yōu)先級中斷,即軟中斷。硬中斷優(yōu)先級高于軟中斷,當操作系統(tǒng)在正在處理軟中斷時,如果有硬中斷到來,操作系統(tǒng)可以立即切換到硬件中斷處理程序,除此之外,將軟中斷處理程序(即Linux系統(tǒng)原有的中斷處理程序)的執(zhí)行環(huán)境降低為進程上下文,即相當于一個實時進程(參見以下“3.任務(wù)延遲解決”所提供解決方案),而硬中斷處理程序的執(zhí)行環(huán)境保持為中斷上下文,因為中斷上下文是可以搶占進程上下文,從而保證硬中斷的實時性。2.調(diào)度延遲解決:采用兩種辦法a)無限循環(huán)方法:因為Linux完成中斷處理程序后,CPU控制權(quán)會回到之前被中斷的程序,因此可以利用此特性,將所期望用戶空間業(yè)務(wù)程序和硬中斷處理程序綁定到同一個CPU(多核CPU中CPU之一),同時將用戶空間業(yè)務(wù)程序設(shè)置成一直運行狀態(tài),這樣硬中斷到來后,就會中斷用戶空間業(yè)務(wù)程序執(zhí)行,等中斷處理完好,繼續(xù)執(zhí)行用戶空間業(yè)務(wù)程序。b)空閑調(diào)度方法:通過時間序列和任務(wù)分配設(shè)計,在中斷到來時,從理論上保證CPU是空閑狀態(tài),這樣,當CPU執(zhí)行完硬中斷處理程序并退出中斷上下文后,因為沒有程序可以運行,就會運行調(diào)度程序,這種方法適用于用戶空間業(yè)務(wù)程序和中斷處理程序不在同一個CPU上。常用的實時系統(tǒng)應(yīng)用,通常都要求定時完成一些工作,如無線通信系統(tǒng)是定時頻率是1ms(毫秒),數(shù)控機床系統(tǒng)是4ms,在這種系統(tǒng)中當中斷到來時,完成指定的業(yè)務(wù)工作,至下一個周期到來時就是空閑的。具體實施時,可通過時序序列和任務(wù)分配設(shè)計,保證指定的業(yè)務(wù)工作在下一個時序到來時肯定完成,同時運行此業(yè)務(wù)工作的CPU(多核CPU中CPU之一)沒有其它進程或者任務(wù)需要運行,即可保證CPU是空閑狀態(tài)。當中斷處理完成后進行調(diào)度時,根據(jù)Linux的調(diào)度策略,會選擇優(yōu)先級最高的程序(除硬中斷外),而經(jīng)過本方法后,用戶空間業(yè)務(wù)程序的優(yōu)先級是最高(除硬中斷外),所以用戶空間業(yè)務(wù)程序肯定可以被調(diào)度程序選中,并獲得CPU運行。3.任務(wù)延遲解決:不考慮硬中斷,將Linux系統(tǒng)原有的進程分為兩種類型,分別為實時進程和非實時進程,一般將用戶空間業(yè)務(wù)程序和軟中斷處理程序相應(yīng)進程劃分為實時進程,其它系統(tǒng)默認進程全部劃分為非實時進程。實時進程優(yōu)先于非實時進程,這種就可以保證實時進程獲取CPU的概率永遠優(yōu)先于非實時進程。因為Linux是多任務(wù)系統(tǒng),可能會存在多個同類型進程的問題,他們?nèi)绻患右詤^(qū)別,可能存在不確定性,因此本發(fā)明提出可以為每個同類型進程(包含實時和非實時進程)設(shè)置優(yōu)先級屬性,同類進程中,優(yōu)先級高的進程先獲取CPU資源運行。這樣Linux調(diào)度程序的調(diào)度順序為實時進程類中的高優(yōu)先級->實時進程類中的低優(yōu)先級->非實時進程類中的高優(yōu)先級->非實時進程類中的低優(yōu)先級。在實時進程類中,可以將軟中斷的優(yōu)先級設(shè)置低于期望的用戶空間業(yè)務(wù)程序,這樣只有硬中斷可以搶占CPU,運行中斷處理程序。即實際的優(yōu)先級順序為硬中斷->用戶空間業(yè)務(wù)程序的相應(yīng)進程->軟中斷->非實時進程類中的高優(yōu)先級->非實時進程類中的低優(yōu)先級。具體實施時,本領(lǐng)域技術(shù)人員可以自行設(shè)定優(yōu)先級劃分方式,例如優(yōu)先級設(shè)定為0-99,數(shù)字越小優(yōu)先級越高,默認為50,可將業(yè)務(wù)進程的優(yōu)先級設(shè)置為20,使業(yè)務(wù)進程在實時類進程的優(yōu)先級最高。因為Linux是時間片調(diào)度,為了不影響實時任務(wù)執(zhí)行,在實時任務(wù)未執(zhí)行完成前,不允許再進行調(diào)度,直至實時任務(wù)執(zhí)行完畢。例如采用PowerpcP4080硬件平臺,Linux2.6.34的官方內(nèi)核,其中,PowerPC為一種CPU體系架構(gòu),P4080為美國飛思卡爾公司的一種嵌入式多核CPU產(chǎn)品,八核分別標記為CPU0至CPU7。相應(yīng)實現(xiàn)方式包括如下幾種具體措施:1.將業(yè)務(wù)相關(guān)的FPGA外部中斷指定為高優(yōu)先級中斷,即硬中斷;將Linux操作系統(tǒng)的其它中斷,如串口,網(wǎng)卡,flash中斷等設(shè)定為低優(yōu)先級中斷,即軟中斷;同時將所有的軟中斷處理程序執(zhí)行環(huán)境降低為進程上下文,而硬中斷處理程序的執(zhí)行環(huán)境定義為中斷上下文,這樣根據(jù)Linux的內(nèi)置任務(wù)優(yōu)先級,中斷上下文>進程上下文,所以當實時硬中斷到來時,無論CPU是否在執(zhí)行什么,F(xiàn)PGA硬中斷處理程序會發(fā)生搶占,獲得CPU資源,并開始執(zhí)行中斷處理程序。通過上述兩個操作,保證了硬中斷處理程序可以在第一時間內(nèi)獲得CPU資源,并投入運行,完善地解決了“中斷延遲”問題。2.利用多核特性,例如指定P4080的CPU7專用于處理硬中斷,保證此中斷的處理不受其它同級硬中斷及操作系統(tǒng)內(nèi)置任務(wù)的影響,排除干擾;所期望用戶空間業(yè)務(wù)程序和硬中斷處理程序綁定到同一個CPU,在指定P4080的CPU7專用于處理硬中斷的情況下,也指定業(yè)務(wù)進程運行于CPU7。3.將Linux操作系統(tǒng)中除用戶空間業(yè)務(wù)程序的相應(yīng)進程以外的其它所有用戶空間進程修改為非實時進程,將用戶空間業(yè)務(wù)程序的相應(yīng)進程和軟中斷處理程序的相應(yīng)進程修改為實時進程,實時進程優(yōu)先于非實時進程;實時進程中,用戶空間業(yè)務(wù)程序的相應(yīng)進程優(yōu)先于軟中斷處理程序的相應(yīng)進程。4.調(diào)度延遲有兩種解決辦法;4.1無限循環(huán)方法:當業(yè)務(wù)進程處理業(yè)務(wù)完畢后,可通過現(xiàn)有技術(shù)實現(xiàn)添加一個自定義系統(tǒng)調(diào)用,利用自定義的系統(tǒng)調(diào)用讓業(yè)務(wù)程序陷入內(nèi)核,保持用戶空間業(yè)務(wù)程序的運行狀態(tài),防止其他進程占用CPU,直至硬中斷到來,此時CPU被搶占,開始執(zhí)行硬中斷處理程序,當硬中斷處理程序執(zhí)行完成后,CPU即恢復(fù)到所期望的業(yè)務(wù)程序開始執(zhí)行業(yè)務(wù);4.2空閑調(diào)度:將Linux系統(tǒng)中除業(yè)務(wù)進程以外的所有進程移到CPU0至CPU6,保證CPU7只有業(yè)務(wù)進程和中斷處理程序,這樣,當硬中斷到來后,CPU處理完硬中斷,硬中斷處理程序完成后,進行調(diào)度,因為CPU7上只有一個業(yè)務(wù)進程,這樣業(yè)務(wù)進程可以立即獲得CPU7并運行。在此種調(diào)度方式下,不要求第2步時必需指定CPU7指定處理硬中斷,可以指定為CPU0至CPU7中的任何一個,或者不指定。這樣可以避免傳統(tǒng)的epoll,select,信號量等機制造成的中間開銷過大的問題。最后需要說明的是,本發(fā)明還可有其他多種實施例,在不脫離本發(fā)明的精神及其實質(zhì)的情況下,對被發(fā)明作出各種相應(yīng)的修改或者變形,其均應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1