2010-01-22 22 views
2

這是我發生了什麼的心理形象,我希望有一些更正,澄清,甚至更多的細節。如何將指令分派給計算機中的設備?

基本上,當計算機啓動時,BIOS加載PCI總線上的所有設備,並使其在某個預定地址處可用。 PCI-Express總線也是如此。

因此,每個設備都可以接收命令,因爲驅動程序知道在總線地址上哪裏尋找它們?

我是否進一步糾正假設,如果你想發送指令到你的聲卡,驅動程序告訴CPU(s)在適當的總線上廣播指令,並在指定地址的正確設備將拿起指示和做它的事情?

此可視化是否正確? 由於涉及的數據量不同,視頻是否完成不同?

+0

屬於serverfault? – Jason 2010-01-22 07:45:01

+0

不,這是一個系統編程問題,不是系統管理員的問題。 – 2010-01-22 08:49:55

回答

2

大多數新的總線系統都有一個探測機制,系統可以要求所有設備標識自己和他們在總線上的位置,然後操作系統可以將這些標識映射到設備驅動程序,然後可以指定他們需要的其他資源。 USB,PCI,PCI-Express,AGP,Firewire,SATA,Infiniband和Lightport都可以做到這一點。雖然它不一定能夠通過「地址」工作,但它可以通過不同的總線控制器模式,甚至是完全獨立的總線。例如,RAM芯片有一個SPI接口來配置它們,而實際的數據則在其他一些互連上移動。我有一個嵌入式系統,它使用SPI來配置總線訪問操作系統的閃存盤......這是一個非常煩人的啓動設備。

儘管PC中的BIOS實際上設置了所有PCI設備,但大多數較新的操作系統將立即從頭開始重做該過程。因此,基於Intel的Mac(以及許多服務器)中的EFI固件只設置實際需要加載操作系統內核的內容,剩下的則留給操作系統。這就是爲什麼Windows需要BootCamp或HAL磁盤才能在Mac或高端服務器上真正啓動的原因。 Windows在普通PC上進行PCI探測的時間相當晚,並且確實需要一段時間的BIOS設置,但在Mac和某些服務器系統上,需要加載不同的HAL以立即執行硬件掃描。

如果你想真正理解這個東西,閱讀Linux內核是非常有益的,特別是在PC和其他系統之間的差異。

0

是的,你可以用這個簡化來粗略地想象它是如何工作的。而且它對視頻也有效。

當然,如果您深入細節,會發現它有點複雜,因爲涉及多種技術,每種設備在理論上可能會有所不同。準備好面對IRQ,DMA,不同的內存映射等...

1

圖形卡連接到北橋的AGP總線,PCI設備以及ATA設備連接到南橋。一個很好的介紹是here

相關問題