2012-09-29 74 views
3

我在讀關於操作系統如何與中斷進行通信的硬件,只是想知道,如果除了中斷驅動之外還有其他架構?在Robert Love關於Linux內核的書中,他說,Linux處理的大部分架構都是中斷驅動的,那麼其他的是什麼?有人可以舉個例子嗎?謝謝。除中斷驅動架構外,還有其他模型嗎?

+2

我想基於輪詢的體系結構,即我們檢查了外部刺激後,我們已經完成了最後一個刺激 –

+0

輪詢,消息傳遞是我能想到的唯一兩個,我不確定消息傳遞isn在某個時刻,這是中斷駕駛的一個子集。 – siride

回答

3

您的問題的簡短答案是,只有一個其他模型,這是投票。在輪詢模式中,如果發生任何事情,系統會反覆詢問硬件。這個模型的缺點是CPU總是忙於詢問,並且只能在需要時瞭解活動。如果它開始做其他事情,它可能會錯過一個行動(因爲它沒有在行動時要求行動)。

較長的答案:

如果你想想看,有可能真的只有兩種可能的系統:輪詢(拉)和事件驅動(推)。在前者中,如果發生了任何事情,你可以詢問硬件,而在後者中,硬件告訴你。換句話說:前者的代理商是CPU/OS,後者是硬件。由於有兩方,每方都可以做兩件事之一,這意味着我們只能有兩種類型的系統(推/中斷和拉/輪詢),加上混合(中斷驅動和輪詢都基於不同的時間或不同的環境)。

人們可以想象有多種方式可以實現這三種系統中的任何一種,並且可以將它們視爲不同的模型,即使在引擎蓋下,它們實際上正在實現其中一種可能的系統。不過,我會想象那不是你想要的東西。

+0

現貨上........ – howtechstuffworks

1

我猜測,它的一些硬實時系統不是使用異步中斷,而是在定義良好的時間(可能是週期性的)檢查(輪詢)I/O設備的狀態。如果設備未準備好或處於意外狀態,系統會報告故障。

+0

不會那樣表現或滯後(如果週期性)或兩者兼而有之?他們還在執行嗎? – howtechstuffworks

+1

@howtechstuffworks取決於你的目標應用程序有時輪詢可以更快,也就是說,如果你只是想同步處理一個隊列(這就是你想要在你的硬件上完成的),它的方式更快/更簡單,用一個新項目處理 –

+1

@howtechstuffworks這些系統通常被很好地設計以滿足特定的目標,而不僅僅是抽象的快速或平均具有任意小的延遲。他們仍在製造中。 –

2

在低級別,輪詢是主要的選擇。然而,在架構上,主要方法是單片,中斷直接驅動設備驅動程序和微內核,其中設備驅動程序可能是獨立的進程,在硬件事件發生時由內核通知。中斷髮生,但它們由一個非常小的內核管理。我懷疑這是你報價所指的差異。輪詢不再非常普遍。最知名的基於微內核的操作系統之一是Minix,因爲它被用於教學。

1

我將輪詢體系結構等同於確定性過程方向,並將中斷驅動爲隨機過程方向。兩者都不擅長自己的事情,一般都需要這兩者。它取決於外部任務和接口。通常系統必須允許許多進程的交互,並且規劃該體系結構以在過程的上下文中劃分隨機性而不是滿足要求,同時經歷隨機服務約束與必須定期維護並且沒有隨機性的約束是有益的。糟糕的設計有一些面向時間約束的服務被隨意違反,而沒有軟件層面的解決方案來解決功能困境。隨機過程使用離散事件仿真建模以更高的複雜度建模,而確定性過程定位可以通過連續函數更簡單地進行分析。

相關問題