精華區beta Programming 關於我們 聯絡資訊
驅動程式漫談-X 橋接器和匯流排控制器導入後,對電腦系統的影響 橋接器的設計理念解決了電腦系統在硬體實作上的一些技術問題, 它為高速的系統周邊與低速的系統周邊之間提供了一個共容的相處之道, 並作為一個系統運轉時脈不斷向前推升時, 不受慢速設備拖累的解決之道。 雖然橋接器和匯流排控制器對於電腦系統架構設計, 提供了一定的方便, 但是, 它同時也帶來了一些衍生的複雜難解的問題。 其中最顯而易見的就是, 從此之後CPU無法再以直接的方式操控末端設備, 而是必須經過重重轉接的方式來操控不是直接相連的裝置, 這使得CPU要操控任何一件不是直接相連的裝置, 都會變得很麻煩、困難重重, 而這個麻煩與困難重重的最大受害者, 就是驅動程式的程式設計師了, 也由於技術上的門檻因此被越拉越高, 也增加了廠商開發的困難度, 使得驅動程式的程式設計, 變成一件非常專業的事, 一個專業的驅動程式程式設計師, 也就變得如保育類動物一樣的異常稀有與珍貴, 這一點須要台灣的企業主們多加體會才是。 驅動程式堆疊的形成背景及形式 橋接器和匯流排控制器的導入系統之後, 帶來週邊設備及其驅動程式的堆疊化發展, 硬體堆疊由來很容易理解, 那麼驅動程式的堆疊又是怎麼形成的呢? 這恐怕又要從IBM XT PC 電腦的那個時代講起, 在那個時候, 電腦系統裡面並沒有所謂的橋接器存在, 所有的週邊設備都是末端設備, 所以CPU在操作週邊設備時, 都是直接操作, 而不是間接操作, 所以當我要操作其中一項設備時, 可以完全不理會其它的設備以及其驅動程式, 所以各個設備的驅動程式之間, 可謂河水不犯井水,互不相干, 可是當橋接器這個東西出現之後呢! 情況可就不一樣了, 就像是公廁門口賣衛生紙的老婆婆一樣, 要先上廁所就可得先過她那一關。 如果我有兩個串連的設備A與B, A與CPU是直接相連, 而B是必須透過A與CPU間接相連, 即CPU==A==B的串接方式, 如果CPU想要操作B, 那一定要透過A來操作B, 所以CPU要在操作到B之前, 一定要先把A搞定, 才有可能再去操作B, 這是最直覺的觀點。 而實際上真正要實作的時候, 我們所採用的方式就是, 呼叫設備A的驅動程式來操作設備A, 而當設備A可被我完全操控的時候, 也就可以利用操作設備A來操作設備B, 這樣就形成了一個間接操作的機制。 我們從另一個觀點來看, 這時如果設備B的驅動程式要操控設備B, 那麼設備B的驅動程式要怎麼作,這時通常會有兩種可行的方法: 方法一: 驅動程式B直接去操作設備A的硬體, 透過操作設備A硬體來操作設備B硬體。 方法二: 驅動程式B透過呼叫驅動程式A來操作設備A的硬體, 然後再透過操作設備A來操作設備B硬體。 理論上, 兩種方法階可達到目的, 可是在實際系統的實作上, 第一種方法至少會以下的問題存在: 1. 如果你是設備B的供應商, 對B很了解, 寫這一部份硬體的驅動程式, 當然沒問題, 可是設備A可能就不是你們家的了, 寫這一部份驅動程式這個時候就會有問題。 2. 如果設備A所接的下游設備不只你一個B, 說不定還有設備C、設備D等, 所有的設備都是要透過設備A (橋接器) 來操作, 如果你寫的程式只有看到自己, 而沒有考慮到其它設備的需求的話, 那麼問題可能就沒完沒了。 ==未完,待續== 因此基於以上的考慮因素,方法二廣為所有的作業系統所採用,因此目今的驅動程式堆疊,就形成一種和週邊設備堆疊相似,鏡射反對稱的型式來。 -- Ξ Origin: 中興大學天樞資訊網 <bbs.nchu.edu.tw> Ξ From : 220-139-18-180.dynamic.hinet.net