瀏覽單個文章
umi
Master Member
 

加入日期: Dec 1999
文章: 2,066
引用:
Originally posted by shukae
我印象中, 486 保護模式就可以支援到 0~31 共 32 個 IRQ
需要作業系統核心支援 (我記得是這樣,太久了,有點遺忘)
但是真實模式下只能跑 0~15, 共16個 IRQ, 還有幾個是系統必定佔用的
故 IRQ 常常會不夠用
只要 BIOS 有支援 APIC (進階可程式中斷控制器) 的話,就可以共用 IRQ 了
所以就算需要的 IRQ 超過16 個也應該不會有太大的問題
像我的電腦就用掉了 22 個 IRQ 資源,但是有幾個共用的結果
IRQ 還是沒有衝突產生
除非有裝置要求獨占 IRQ........... 然後又不夠用,就會導致裝置無法動作


有超過16irq的話是apic提供的功能
irq sharing是另一件事

最早irq是不能共用的
觸發一個irq只可以通知一個硬體

後來有了IRQ Sharing
就是把觸發改成在一個時間區間內
可以分成幾種不同的觸發模式
舉例子來說
就是在10毫秒區間內
有兩個裝置共用一個irq11
觸發同一個irq11一次是通知第一個設備
觸發同一個irq11兩次是通知第二個設備
但是這樣的壞處就來了
你需要有一個buffer來等待你是觸動一次或觸動兩次
沒有支援的硬體或是需要大量資源的硬體容易發生問題

萬一有的硬體真的很迫切需要資源
勢必得獨占一個irq
後來有了apic後
把irq擴充的32個
但是這需要主機板/bios/作業系統都支援才可以
他會把中斷觸發的工作完全交給作業系統
沒記錯這是586時代後期才有的
     
      
舊 2004-02-07, 10:05 AM #11
回應時引用此文章
umi離線中