為什麼Xp的正常模式和安全模式下硬體的IRQ會不一樣? 
 

Q:
最近用foobar聽音樂的KS模式聽音樂時,如果同時有其他的一些操作(拷貝大文件),就可能出現長時間的不響應,我懷疑是不
是多個硬體共用一個IRQ的關係,而且我在遊戲中也有出現爆音的情況。
已經用了一切我知道的手段想改IRQ,就是改不了,總是這五個設備共用一個IRQ號,後來想在安全模式下試試,發現安全模
式下面居然是正常的,是不是可以說與BIOS的設置就沒有什麼關係了
但是為什麼會出現這種情況呢,請哪位可以指教一把
謝謝了!

A:
這個是win2k以來加入的一種叫「中斷共享」的功能......
我也是很火大的....
而且看來你想的辦法和我想的是一樣的...
把主機板上面的串列阜控制器和並列阜控制器全部禁用不了..嗯..還有軟驅控制器.....
要是裝主機板驅動也不能解決的話..那就只有忍著了...huhu

Q:
這是微軟給出的解決方法,但是在安全模式下已經都處於正常狀態了,那麼我覺得在正常模式肯定是可以解決的,但是現在還
是沒有頭緒啊
http://support.microsoft.com/defaul...kb;EN-US;299340

A:
1、為什麼要共享irq
對於有限的irq資源來說,不可能適應所有的應用環境。因為用戶的需求不同,
硬體設備也各式各樣。所以必須要共享irq。

2、為什麼可以共享irq
在驅動程序載入時,操作系統根據pnp設備的要求(在標準的硬體接頭中描述了
該設備對各種硬體資源的要求,比如幾個irq,多大的記憶體地址等等),分配若干
個中斷資源給硬體設備。驅動程序得到這個中斷資源(中斷向量),將其做映射
後供自己使用;同時,註冊中斷服務例程(isr),通知系統將isr與這些中斷連接
起來。於是,當中斷髮生後,操作系統就會調用與之連接的isr。
但,注意,此時有可能有多個isr對應一個中斷,這很好理解,因為中斷是重用的,
比如,可能有多個isr都與中斷11連接。但不會出現中斷衝突。因為當中斷髮生時,
硬體設備本身的某個寄存器會標識出當前該設備是否發生了中斷。比如,當某個
設備發生中斷後,它回將寄存器11寫為0x3c,然後,當中斷被清除後,該寄存器
被硬體自動寫0。這樣,當isr被調用時,還要判斷該硬體的寄存器11是否為0x3c,
如果是,說明當前的中斷確實是自己所驅動的硬體發生的,就進行中斷處理,否則,
直接返回。

3、所以,如果是pnp的系統和硬體,應該不會有中斷衝突的問題。如果聽音樂
有斷續的情況,還要考慮其他問題。比如,是否因為某個設備cpu佔用率過高導
致音瀕設備沒有足夠的cpu資源進行音瀕處理。等等。
舉個簡單例子,如果硬碟的dma沒有開啟,那拷貝資料時,滑鼠就會跳著移動。
這在低檔電腦上尤其明顯。這當然不能說是中斷衝突,而是cpu佔用率的問題。
另外,如果某個程序cpu佔用率很大,而當前又無法滿足如此的佔用率,也會出
現問題。一般來說,驅動設備有很大的優先級。如果某個驅動程序cpu佔用率很高,
那它會影響應用程式的執行。

Q:
還是說我用foobar的ks模式聽音樂時出現的問題
我從本機拷貝一個600M的文件到網路鄰居中的一個電腦上,在6%的時候就會出現長時間的不響應,一段時間以後系統會報目
的盤的空間不夠。然後我又試了一下,還是在6%的時候出現同樣的問題。
然而,當我關閉foobar之後,一切都是那麼順利。
這裡邊我特別強調一下,同一時間我沒有其他任何的操作,也沒有開啟其他任何的應用程式,另外就是foobar的KS模式,不知
道是foobar的問題還是IRQ共享的問題。因為我在國外的其他論壇上也看到一些這種IRQ共享帶來的系統不穩定的情況。
上面這些現在倒是其次了,因為我可以關掉foobar,但是出現的這種正常模式和安全模式下的IRQ使用情況的不同,想究一下根
本。
懇請哪位dx可以講解一番。


A:


2000及XP系統採用了中斷共享及虛擬中斷技術(你會看到IRQ20等的出現),如果設備支持PNP及中斷共享功能,那麼不是問
題。
但是有些比較老,或者特殊的設備(如視頻採集卡)在中斷共享情況下面會有相容問題,對於這種情況有些大廠主機板的有個
解決辦法,就是制定一個PCI插槽(一般是PCI1)具有IRQ最高優先級,而且佔用的IRQ不會被共享。這在其主機板手冊中就有
指明。 普通大眾主機板說明書中未見有此條目,也就不知是否也是如此了。
另外,大廠主機板說明書中往往還給出PCI INT #A-D中斷的(在PCI槽是否有擴展卡下的)分配映射順序

既然MS是老大,那麼大家就只得安裝它的標準行事了。這種情況看來就只能說是foobar的相容問題了。
如果因為特殊原因,不能使用中斷共享功能,那麼可以把「ACPI電腦」換成「標準電腦」。具體如下


這樣:
控制台>系統>硬體
1開啟裝置管理員,找到這個
2、然後點出它的屬性,選擇昇級特定程序
3、顯示所有硬體,然後選擇那個"standard PC"(電腦),接著就一直下一步
顯示這個設備相容所有硬體................


btw:
共享irq 是可以的.但不能位址衝突(一樣)............
共享因各自調用切換.如你的CPU OR Io 太慢會引起延遲,容意易產生,尤其
聽音樂爆音....................所以常用的要使用佔獨有的中斷IRQ....
共享IRQ 可以以修改WIN.INI 的共享BUFFERS 把他的值弄大一點.......
不失為暫時方法..................