欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實時中斷與多個進程狀態(tài)同步的方法

文檔序號:6562195閱讀:249來源:國知局
專利名稱:實時中斷與多個進程狀態(tài)同步的方法
技術(shù)領域
本發(fā)明涉及計算機操作系統(tǒng)中實時中斷與多個進程狀態(tài)同步的方法。
背景技術(shù)
資源共享和狀態(tài)同步是計算機操作系統(tǒng)的重要研究課題。各個進程之間共享的各種資源 和狀態(tài),必須保持同步,以保證數(shù)據(jù)的完整性。操作系統(tǒng)通過必要的手段為各個進程提供一 致和可靠的狀態(tài)。進程的并發(fā)產(chǎn)生競態(tài),使各個進程可見的資源狀態(tài)可能由于執(zhí)行順序不同
而有所不同。未能對競態(tài)進行正確的處理將導致系統(tǒng)狀態(tài)錯亂。 一些進程間通信(IPC)機制
被引入操作系統(tǒng),以解決并發(fā)請求所引起的競態(tài)所產(chǎn)生的編程問題,如信號量、互斥、管道、 鎖機制等。
在驅(qū)動程序的設計中,可能有多個進程共享同一硬件資源,即各進程需根據(jù)硬件的某個 特定狀態(tài)對這些共享的硬件資源進行適當?shù)呐渲谩⒃诠蚕淼挠布Y源上進行的一組操作定
義為一個工作單元(Unit)。這些并發(fā)的工作單元必須保證其設置與硬件狀態(tài)所規(guī)定的工作狀 態(tài)一致。各個進程之間可以用傳統(tǒng)IPC機制進行處理。
中斷的產(chǎn)生使競態(tài)的處理更為復雜。如果中斷的產(chǎn)生正好代表著工作單元所依據(jù)的硬件 狀態(tài)發(fā)生了變化,對于一個沒有執(zhí)行完畢的工作單元,當程序從中斷返回時,工作單元就會 依據(jù)已經(jīng)過時的狀態(tài)繼續(xù)操作,顯然,如果不對這種情況進行處理,系統(tǒng)就會工作在錯誤的 狀態(tài)。
由于中斷處理程序的特殊性,中斷處理程序有一些特別的限制。首先,中斷必須盡快得 到響應,;其次中斷處理程序必須盡可能短;最后,中斷不能阻塞,不可在中斷處理程序中 睡眠,中斷中也不能發(fā)生調(diào)度。普通的IPC機制一般以睡眠的方式等待所需的資源。由于中 斷處理程序的限制,普通的IPC機制大多不適于中斷處理程序和進程之間的同步。中斷和進 程之間一般通過事件通知模型來進行通信。進程在某一個信號量或者等待隊列中睡眠,直到 中斷將這一資源可用的消息通知給進程。事件通知模型適于基于狀態(tài)的變化而不是狀態(tài)本身 進行工作的進程和中斷處理程序之間的通信和同步,在后一種情況下,進程可在任何狀態(tài)下
工作,所以不會等待某個狀態(tài)發(fā)生變化。還有一種可選的方式是在工作單元執(zhí)行前后關閉
和打開中斷,并用定時器査詢的方式獲得與硬件狀態(tài)的同步的方式。但是較低的系統(tǒng)執(zhí)行效 率和較高的開銷也使這種模型不太適合。目前,使用事件通知模型進行資源共享和同步的技 術(shù)已經(jīng)得到廣泛的運用,但是對基于硬件狀態(tài)而不是狀態(tài)變化的進程和中斷處理程序之間的 同步還沒有有效的模式,急需發(fā)展新的模型來解決。

發(fā)明內(nèi)容
為克服現(xiàn)有技術(shù)中的缺陷和不足,本發(fā)明的目的在于提供一種實時中斷與多個進程狀態(tài) 同步的方法。
為達到上述目的,本發(fā)明采用以下技術(shù)方案
實時中斷與多個進程狀態(tài)同步的方法,包括
(1) 設置進程中任務的啟動和終止函數(shù)、啟動標志,并定義中斷計數(shù)變量;
(2) 進入中斷處理程序,將中斷計數(shù)變量值加l,獲得需要處理的任務的啟動標志,并 對已啟動的任務進行狀態(tài)切換操作,完成對己啟動任務的設置;
(3) 執(zhí)行任務啟動函數(shù),獲得當前的中斷計數(shù)變量值、任務寫鎖,啟動任務后,再次獲 得中斷的計數(shù)變量值;比較前后兩次獲得的計數(shù)變量值的奇偶性是否相同,若相同,則任務 啟動完成,進入步驟(4);若不同,則對該任務進行狀態(tài)切換操作,重復步驟(3);
(4) 由任務終止函數(shù)完成任務的終止,釋放設備資源。 其中,步驟(2)中的切換操作包括
(A) 關閉在前一狀態(tài)下打開的設備,釋放相關的設備資源;
(B) 為新的狀態(tài)設置打開新的設備,獲得相關資源,完成設備設置。 其中,步驟(3)具體為
(31) 獲得當前的中斷計數(shù)變量值并保存,并根據(jù)獲得的當前任務寫鎖,執(zhí)行任務的工 作單元;
(32) 重新獲得中斷計數(shù)變量值,比較前后兩次獲得中斷計數(shù)變量值的奇偶性是否相同, 若相同,設置任務啟動完成標志后釋放任務寫鎖;若不相同,則對該任務進行狀態(tài)切換操作, 調(diào)整設備設置后釋放任務寫鎖。 其中,步驟(3)具體為
(311) 獲得當前的中斷計數(shù)變量值并保存,并根據(jù)獲得的當前任務寫鎖,執(zhí)行任務的工 作單元;
(312) 重新獲得中斷計數(shù)變量值;
(313) 比較前后兩次獲得中斷計數(shù)變量值的奇偶性是否相同,若相同,設置任務啟動完 成標志后釋放任務寫鎖;若不相同,則將重新獲得的中斷計數(shù)變量值設置為當前的中斷計數(shù) 變量值后對該任務進行狀態(tài)切換操作,返回步驟(312)。
與現(xiàn)有技術(shù)相比,本發(fā)明充分利用了操作系統(tǒng)提供的IPC機制,不需要自定義附加的數(shù) 據(jù)結(jié)構(gòu),算法簡單;使用前后兩次中斷計數(shù)值的奇偶性作為工作單元執(zhí)行結(jié)果有效性的判據(jù), 代價低。任務啟動標志使中斷處理程序不需做多余的切換操作,啟動函數(shù)工作單元執(zhí)行之后 的善后處理保證了軟件設置與硬件狀態(tài)一致。


圖l是硬件的狀態(tài)變遷圖2是引起狀態(tài)變化的中斷對處理線程(或進程)的正確性的影響; 圖3是中斷處理流程圖4是最多需要一次調(diào)整設備設置時的任務啟動函數(shù)流程圖; 圖5是需要多次調(diào)整設備設置的情況下任務啟動函數(shù)的流程圖; 圖6是任務終止函數(shù)流程圖; 圖7是應用了本發(fā)明之后任務的工作狀態(tài)圖。
具體實施例方式
下面結(jié)合附圖和具體實施方式
對本發(fā)明做進一步的說明。
圖1說明了硬件的兩種狀態(tài),進程在狀態(tài)0和狀態(tài)1之間進行切換。 圖2描述了在單處理器,多任務操作系統(tǒng)中,與圖1中所定義的硬件狀態(tài)存在著關聯(lián)的
處理進程和中斷處理程序的一種可能的調(diào)度時序。
線程P1、 P2和P3先后進入系統(tǒng),系統(tǒng)按照設定的調(diào)度策略對其進行調(diào)度。進程間的資 源共享和狀態(tài)同步采用傳統(tǒng)的IPC機制,硬件中斷可終止正在運行的工作單元。
圖2說明了在未采用本發(fā)明所述的算法的情況下可能產(chǎn)生的三種情況。進程Pl開始和終 止于兩次中斷之間,正常結(jié)束。進程P3的工作單元開始和結(jié)束于不同的硬件狀態(tài),最終的設 置與當前的硬件狀態(tài)相反。進程P2雖然也被中斷,但是由于其經(jīng)歷了兩次中斷,所以最終的 設置與當前的硬件狀態(tài)相符。
本發(fā)明的思路如下
(1) 設置進程中任務的啟動和終止函數(shù)、啟動標志,并定義中斷計數(shù)變量。每個進程完 成不同的任務,因此每個任務都有其啟動函數(shù)和終止函數(shù)。任務中有若干需要嚴格互斥和保
持與硬件的狀態(tài)一致的工作單元,該硬件狀態(tài)可以有N個狀態(tài)值。
(2) 進入中斷處理程序,將中斷計數(shù)變量值加l,獲得需要處理的任務的啟動標志,并 對已啟動的任務進行狀態(tài)切換操作,完成對已啟動任務的設置。
中斷處理程序檢査任務啟動的狀態(tài),只有在任務啟動完成之后,任務停止之前才需要觸 發(fā)相應的與硬件狀態(tài)重新同步的操作。
(3) 執(zhí)行任務啟動函數(shù),獲得當前的中斷計數(shù)變量值、任務寫鎖,啟動任務后,再次獲 得中斷的計數(shù)變量值;比較前后兩次獲得的計數(shù)變量值的奇偶性是否相同,若相同,則任務 啟動完成,進入步驟(4);若不同,則對該任務進行狀態(tài)切換操作,重復步驟(3)。
啟動函數(shù)的執(zhí)行流程如下-
(a) 首先獲得當前的中斷次數(shù)并保存,目的是與當前的中斷計數(shù)值取得同步。
通過獲得的硬件狀態(tài)完成相關設置。即執(zhí)行任務相關的工作單元。在工作單元執(zhí)行之前, 獲得當前任務的寫鎖,表示將要改變?nèi)蝿盏膯訝顟B(tài),并作相應的設置。
(b) 由于設置過程有可能被中斷,剛才所作的設置可能無效。所以執(zhí)行完一遍所需的操 作之后,并不立即修改任務啟動標志和釋放寫鎖,在程序結(jié)束之前需要做以下善后處理。
(c) 重新獲得當前的中斷計數(shù)。如果前后兩次的計數(shù)值的奇偶性相同,則說明在處理過
程中沒有發(fā)生中斷(計數(shù)值相等的情況),或者雖然發(fā)生了中斷,但是硬件經(jīng)過若干次中斷處 理,其最終狀態(tài)與軟件設置相同的狀態(tài)下,這兩者情況下,已有的設置都是有效的。
如果兩次計數(shù)值的奇偶性不同,則說明在軟件設置所依據(jù)的硬件狀態(tài)已經(jīng)發(fā)生變化,已 有的設置不再有效了,需要對其做出調(diào)整。所需的調(diào)整與中斷處理程序時所作的操作一致。
特別的,對于某一個時段中斷頻率特別高如發(fā)生了抖動,調(diào)整之后還需要比較前后兩次 中斷計數(shù)值的奇偶性。但實際上,由于中斷發(fā)生的時刻是隨機的,所以,在初次設置時被中 斷的概率比較大,但是兩次中斷發(fā)生的最小時間間隔是有限制的,相對于處理器的運行速度 來說, 一次任務啟動操作被多次中斷的可能性極小。所以, 一般只需要進行一次調(diào)整就可以 達到與硬件狀態(tài)的一致。
本發(fā)明引入了任務啟動標志,該標志由各個任務維護。中斷處理程序不能改變?nèi)蝿盏膯?動狀態(tài),任務啟動標志代表任務是否處于啟動狀態(tài),任務啟動和終止過程的狀態(tài)一致性由本 發(fā)明所述方法保證與硬件狀態(tài)的一致性,因此,中斷可以直接獲得任務啟動標志而不需要附 加的同步措施,并根據(jù)任務啟動的狀態(tài)決定是否觸發(fā)相應的切換操作。由于程序的運行場景 可能比較復雜,通過共享硬件資源聯(lián)系起來的任務需要知道其他任務的啟動狀態(tài),所以各個 任務的啟動標志也需要保護,本發(fā)明采用讀寫鎖,當某個任務正在修改其啟動標志時,其它 任務必須等待,多個任務可以同時讀這個標志。
圖4和圖5分別為最多需要一次調(diào)整設備設置時和需要多次調(diào)整設備設置的流程圖。對 于圖4所示的情況,其處理過程為-
(41) 獲得當前的中斷計數(shù)變量值并保存,并根據(jù)獲得的當前任務寫鎖,執(zhí)行任務的工 作單元;
(42) 重新獲得中斷計數(shù)變量值,比較前后兩次獲得中斷計數(shù)變量值的奇偶性是否相同, 若相同,設置任務啟動完成標志后釋放任務寫鎖;若不相同,則對該任務進行狀態(tài)切換操作, 調(diào)整設備設置后釋放任務寫鎖。
對于圖5所示的情況,其處理過程為-
(511)獲得當前的中斷計數(shù)變量值并保存,并根據(jù)獲得的當前任務寫鎖,執(zhí)行任務的工 作單元;
(512) 重新獲得中斷計數(shù)變量值;
(513) 比較前后兩次獲得中斷計數(shù)變量值的奇偶性是否相同,若相同,設置任務啟動完 成標志后釋放任務寫鎖;若不相同,則將重新獲得的中斷計數(shù)變量值設置為當前的中斷計數(shù) 變量值后對該任務進行狀態(tài)切換操作,返回步驟(512)。
完成上述操作之后,軟件的設置與硬件的狀態(tài)完全一致,最后,設置任務啟動完成標志, 釋放寫鎖后返回。
(4)由任務終止函數(shù)完成任務的終止,釋放設備資源。
圖6是任務的終止函數(shù)流程。處理線程在寫鎖的保護下設置任務停止標志,并完成相應 的設備關閉和其他需要互斥的操作。
在終止函數(shù)中,不再需要獲得中斷計數(shù)值來完成與硬件狀態(tài)的同步,因為在任務終止函 數(shù)一開始就設置任務終止標志阻止了中斷處理程序進行切換操作,即使處理線程從中斷返回 到一個不同的硬件狀態(tài),也可正確釋放任務己獲取的資源。
圖7描述了應用了本發(fā)明所述的方法之后的程序運行狀態(tài),從圖中可以看出線程P3通過 調(diào)整保證了其最終的設置與當前的硬件狀態(tài)一致。
本發(fā)明可以擴展到多處理器,也就是共享資源的進程可以分布在不同的處理器上,進程 內(nèi)部的處理仍然可以按照上述模式進行處理即工作單元執(zhí)行前后中斷計數(shù)的奇偶性相反的 線程進行調(diào)整,但是需要對IPC機制采用多處理器版本??傊景l(fā)明的所述方法具有適用 范圍廣、可靠性高和實現(xiàn)簡單的特點,可廣泛應用于驅(qū)動程序開發(fā)。
權(quán)利要求
1、實時中斷與多個進程狀態(tài)同步的方法,其特征在于包括(1)設置進程中任務的啟動和終止函數(shù)、啟動標志,并定義中斷計數(shù)變量;(2)進入中斷處理程序,將中斷計數(shù)變量值加1,獲得需要處理的任務的啟動標志,并對已啟動的任務進行狀態(tài)切換操作,完成對已啟動任務的設置;(3)執(zhí)行任務啟動函數(shù),獲得當前的中斷計數(shù)變量值、任務寫鎖,啟動任務后,再次獲得中斷的計數(shù)變量值;比較前后兩次獲得的計數(shù)變量值的奇偶性是否相同,若相同,則任務啟動完成,進入步驟(4);若不同,則對該任務進行狀態(tài)切換操作,重復步驟(3);(4)由任務終止函數(shù)完成任務的終止,釋放設備資源。
2、 根據(jù)權(quán)利要求l所述的實時中斷與多個進程狀態(tài)同步的方法,其特征在于步驟(2) 中的切換操作包括(A) 關閉在前一狀態(tài)下打開的設備,釋放相關的設備資源;(B) 為新的狀態(tài)設置打開新的設備,獲得相關資源,完成設備設置。
3、 根據(jù)權(quán)利要求l所述的實時中斷與多個進程狀態(tài)同步的方法,其特征在于步驟(3) 具體為(31) 獲得當前的中斷計數(shù)變量值并保存,并根據(jù)獲得的當前任務寫鎖,執(zhí)行任務的工 作單元;(32) 重新獲得中斷計數(shù)變量值,比較前后兩次獲得中斷計數(shù)變量值的奇偶性是否相同, 若相同,設置任務啟動完成標志后釋放任務寫鎖;若不相同,則對該任務進行狀態(tài)切換操作, 調(diào)整設備設置后釋放任務寫鎖。
4、 根據(jù)權(quán)利要求1所述的實時中斷與多個進程狀態(tài)同步的方法,其特征在于步驟(3) 具體為(311) 獲得當前的中斷計數(shù)變量值并保存,并根據(jù)獲得的當前任務寫鎖,執(zhí)行任務的工 作單元;(312) 重新獲得中斷計數(shù)變量值; (313)比較前后兩次獲得中斷計數(shù)變量值的奇偶性是否相同,若相同,設置任務啟動完 成標志后釋放任務寫鎖;若不相同,則將重新獲得的中斷計數(shù)變量值設置為當前的中斷計數(shù) 變量值后對該任務進行狀態(tài)切換操作,返回步驟(312)。
全文摘要
本發(fā)明公開了一種實時中斷與多個進程狀態(tài)同步的方法,為實現(xiàn)實時中斷與多個進程狀態(tài)同步而發(fā)明。包括(1)設置任務的啟動和終止函數(shù)、啟動標志,定義中斷計數(shù)變量;(2)中斷計數(shù)變量值加1,獲得需要處理的任務的啟動標志,并對已啟動的任務進行狀態(tài)切換操作,完成任務設置;(3)獲得當前的中斷計數(shù)變量值、任務寫鎖,啟動任務后,再次獲得中斷的計數(shù)變量值;比較前后兩次獲得的計數(shù)變量值的奇偶性是否相同,若相同,則進入步驟(4);若不同,則對該任務進行狀態(tài)切換操作,重復步驟(3);(4)完成任務終止,釋放設備資源。本發(fā)明使用前后兩次中斷計數(shù)值的奇偶性作為工作單元執(zhí)行結(jié)果有效性的判據(jù),保證了軟件設置與硬件狀態(tài)一致。
文檔編號G06F9/48GK101183317SQ20061013873
公開日2008年5月21日 申請日期2006年11月14日 優(yōu)先權(quán)日2006年11月14日
發(fā)明者瀛 肖, 蔣鯤鵬 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
杭州市| 禹城市| 顺义区| 汝南县| 大化| 横峰县| 胶南市| 睢宁县| 砚山县| 临洮县| 朝阳市| 获嘉县| 宕昌县| 射阳县| 额济纳旗| 新营市| 洞口县| 鹰潭市| 托克逊县| 宁强县| 海伦市| 新建县| 廉江市| 泰州市| 加查县| 望谟县| 军事| 东乌珠穆沁旗| 南华县| 卢氏县| 吉木萨尔县| 海宁市| 洛浦县| 南城县| 泰来县| 资阳市| 夏河县| 临颍县| 阿合奇县| 通河县| 黄平县|