2010年2月26日 星期五

淺談網路-Part 2:網路定址模式

淺談網路-Part 2:網路定址模式

作者:常世勳

PS: 此篇只討論IPV4之定址模式...IPV6留待之後再討論.

寄信時, 信封上要附收件人的住址;打電話時, 要撥對方的號碼。想在網路上通訊, 也總得先知道對方在 cyberspace 當中位於何處, 網路系統才能把你的訊息傳遞到對 方手上。
網路世界裡, 有著不同層次的位址。「OSI 參考模型」最底層的 「實體層」與「鏈結層」來說, 每片乙太網路卡在出廠時, 都燒錄著獨一無二的「硬 體位址」(又稱「MAC 位址」) , 這個位址就像身份證號碼一樣, 用來在網路世界裡 獨一無二的識別各個乙太網路終端設備。
因此, 在乙太網路的訊框裡, 就有兩個 48 位元的欄位, 分別記錄發送端及接收端的硬體位址。同樣的, 記號環網路卡也有屬於 它自己的硬體位址, 佔 16 或 48 位元。
再往上看看「網路層」吧。每個以 IP 為網路層通訊協定的通訊界面, 都有一個 「Internet 位址」(又稱「IP 位址」) , 供對等通訊端(peer) 彼此識別之用。
因 此, 在現行版本的 IP 封包表頭裡頭, 也有兩個 32 位元的欄位, 分別記錄發送端及 接收端的 IP 位址(在下一代 IP 協定: IPv6 當中, 則分別為 48 位元) 。
再往上 看, 「傳輸層」的 TCP 和 UDP 資料當中的通訊埠號碼, 也具有類似的作用。
註: 一台主機可能擁有不只一個 IP 位址。所以文中我不用「主機」一詞, 而用「通訊界面」。
在 Internet 世界裡, 我們接觸的都是 TCP/IP, 所以, 我將針對 IP 以上的定址問題 做進一步的探討。 IP 位址 現行版本的 IP 位址共占 32 位元。以微觀的角度來看, IP 封包裡頭真正存放的資 料, 當然都是二進位的型式;不過在口語上和書面上, 為了便於溝通, 通常都以十進 位來表示, 每隔 8 位元再以英文的句點做為間隔。
譬如說, 台灣網路資訊中心的 WWW 伺服主機的 IP 位址為 10001100011011110000000100000010, 我們常唸成、 寫成 140.111.1.2。
你看, 這樣是不是方便多了? 幅員廣大的國家, 為了便於管理, 通常都會畫分行政區, 再予以分界、分層負責。
除 了行政因素外, 單就通訊而言, 畫分行政區還有一個好處: 有效地傳遞訊息。
譬如 說, 位於台北市城中區的郵局, 看到一封由住在台北市重慶南路一段的人寄往台北市 重慶南路二段的信, 就不必把這封信轉交給城中區以外的郵局去, 它自己就能處理; 假使這封信的收件人是住在新竹市大學路, 郵局才需要把它運送到新竹市的郵局去。
我們可以看到, 行政區的觀念, 讓郵件傳遞更加有效率。 網路系統也是一樣。 現行的 IP 位址空間共有 232 個位址, 面對這麼大的空間, 分配管理是一大麻煩。
此外, IP 是屬於 OSI 參考模型當中的網路層, 必須處理路徑選擇問題;位址分配得 宜, 會減輕許多路徑演算法的負擔, 網路系統的效能也會增加。
IP 位址可分成兩部份, 第一部份(netid) 代表該通訊界面所隸屬的網路編號, 第二 部份(hostid) 代表該通訊界面本身。我們再根據網路規模的不同, 把這兩部份所佔 的比例區分成五個等級。 理論上A級的範圍是從 0.0.0.0 到 127.255.255.255, 主要是分配給「自己人」的 單位, 也就是早期對測試發展 TCP/IP 有功的單位。
因為這一級的 netid 部份只有 7 個位元, 只夠分配給 27 = 128 個單位, 所以格外珍貴, 現在已經很難申請得到。 像麻省理工學院的 WWW 主機 web.mit.edu, 它的 IP 位址是 18.69.0.27, 很明顯 的, 是屬於A級的。
理論上B級的範圍是從 128.0.0.0 到 191.255.255.255, 因為這一級的 hostid 最 多可容納 216 = 65536 個位址, 很適合大型單位使用。像交大資科 BBS 的 140.113.23.3, 就是隸屬於交大所分配到的B級網路之中。
理論上C級的範圍是從 192.0.0.0 到 223.255.255.255, 因為 hostid 最多只夠 28 = 256 個位址, 所以小型單位及撥接用戶, 多半 都是申請C級的。
理論上D級的範圍是從 224.0.0.0 到 239.255.255.255, 用來做群播(multicast) 之用。至於E級, 目前仍屬實驗階段。 為什麼我要說是「理論上」呢? 因為有些 IP 位址另有特殊用途。譬如說, A級範圍 內, 127.*.*.* 是用來做 loopback 的(習慣上, 大部份系統都指定 127.0.0.1 為 loopback 位址) , 所以實際上能用的A級位址就減少了。
其他常見的特殊位址還 有: 255.255.255.255 是做有限廣播(limited broadcast) 的, 若 hostid 的位元 全設為 1, 則只在該子網中做廣播。
IP 是網路層的協定, IP 位址是供同屬網路層的對等通訊端來彼此識別的。
所以, 當 應用軟體要向 140.111.1.2 主機索取資料時, IP 層的系統軟體會自動把本機的 IP 位址及對方的 IP 位址(140.111.1.2) 填到 IP 封包(packet) 中, 再往下交給鏈 結層系統及實體層系統遞送出去。
當鏈結層收到上層遞交過來的 IP 封包, 就得把它組織成合法的鏈結層訊框(frame ) , 才遞交給實體層傳輸出去。就拿乙太網路為例, 它的訊框裡, 有兩個 48 位元的欄位, 分別記錄發送端及接收端的硬體位址;所以, 要組成完整的訊框, 得先填好這兩個欄位。
問題是: 該填什麼? 我們自己(發送端) 當然知道自己的硬體 位址, 但我們要如何得知對方(接收端) 的呢?
關於對方, 我們只知道 IP 位址, 其 餘則是一無所知呀! 為了解決這問題, TCP/IP 提供一個位址解析協定 ARP(Address Resolution Protocol) , 負責把給定的 IP 位址轉換成相對應的硬體位址 , 這樣一來, 就能得知對方的硬體位址, 鏈結層訊框所需要的資訊就能順利滿足。
註: 事實上, 因為 TCP/IP 的網路層仍位於 OSI 參考模型的網路層, 也就是子網路 (subnet) 範圍之內, 所以一般主機(假設它叫做A) 無法用 ARP 來取得子網路 樊籬之外的主機(假設它叫做B) 的硬體位址。
當A要與B通訊時, 雖然A送出 的 IP 封包內的「接收端 IP 位址」一欄仍然是B的 IP 位址, 但 TCP/IP 系統會 根據 IP 分級架構與 netmask 的資訊, 看出這個封包應該要先送給本地的路由器 (路由器會負責尋找最適路徑並傳遞出去) 。
所以A的 TCP/IP 系統會自動把該訊 框的「接收端硬體位址」填成路由器的硬體位址。
關於 IP 位址, 我要再強調一次, 像「140.111.1.2」這樣的表示法, 只是便於人類 讀寫之用。
真正在幕後做事的 IP 協定是不認得這種表示法的;它只認得二進位的型 式。
而且, IP 協定並不是像「140.111.1.2」這樣以 8 位元的間隔來看待 IP 位址 的;它是以ABCDE五個等級, 以及 netmask 的設定來分隔 IP 位址的。

淺談網路-Part 1:TCP/IP

淺談網路-Part 1:TCP/IP

作者:常世勳

1.TCP/IP簡介 :
TCP/IP實際上是由一組通訊協定所組成的協定名稱。
在這些協定當中, 有兩個協定是其他大部份協定的基礎, 這兩個協定分別是:
●傳輸控制協定(Transmission Control Protocol, 簡稱TCP): 一個可靠的串流式服務協定, 也就是TCP可確保所有送至 某個系統的資料能正確無誤地到達該系統。
●網際網路協定(Internet Protocol, 簡稱IP): 制定了所有在網路上流通的封包( peacket)資料格式與規則。
TCP是架在IP上, 完整的TCP/IP就是由這兩個主要的協定 與其他協定所構成, 若以多層式模型描述TCP/IP, 則較廣為採用的是如 圖1所示的架構。
圖1 TCP/IP多層模型架構:
┌───────────────────────---------------┐
│ 應用層(Application Layer) │
│ 包含網路的應用程式與程序。 │
├──────────────────────────--------┤
│ 端對端傳輸層(Host-to-Host Transport Layer) │
│ 提供端對端的資料傳送服務。 │
├──────────────────────────--------┤
│ 網際網路層(Internet Layer) │
│ 定義傳送資料的格式與資料遞送的規則。 │
├──────────────────────────--------┤
│ 網路存取層(Network Layer) │
│ 包含實體網路的遞送與存取。 │
└──────────────────────────--------┘
在圖1所示的架構中, 資料的流向通常是由應用層往下傳達, 途中經過端對端傳輸層、網際網路層, 最後由網路存取層透過傳輸媒介送至 目標電腦的網路存取層, 再由下而上, 傳至其應用層。 TCP/IP協定允許不同類型的主機透過網路相互「交談」,它所提供的 服務幾乎已能滿足大部份使用者的要求, 並且TCP/IP尚具前瞻性 , 新的服務項目也正逐漸擴充當中。
TCP/IP目前已成為電腦網路通訊的標準之一, 透過它即可連結不同類型 的網路與電腦系統, 目前幾乎所有的電腦系統皆支援TCP/IP協定的軟體, 例如IBM主機、PC、MAC、Amiga、Ataris等系統。
對於TCP/IP細節有興趣的讀者, 可 進一步參考有關Internet的書籍。

2.TCP/IP服務項目 :
所有支援TCP/IP協定的軟體皆提供本節介紹的全部或大部份功能 , 這類軟體提供的TCP/IP服務包括:
●電子郵件 (E-mail) 投遞服務。
●檔案傳輸服務。
●遠程終端機模擬服務。
●資料庫服務。
●電子會議服務。
●多媒體資料傳輸服務。
●遠程計算與模擬服務。
由於TCP/IP具備在多工環境運作的條件, 因此, 有些支援TCP/IP協定 的軟體本身即可「同時」提供全部或部份上述的服務。
例如PC的網路作業 系統 (Net work Operating System、簡稱NOS) 即允許使用者同時進行最多10件 的工作, 使用者可利用鍵盤和另一端主機的使用者交談, 啟動終端通訊 功能與其他主機連線, 或至其他主機下傳檔案, 而當這些工作都在進行的 同時, NOS還會暗中將電子郵件傳至其他主機, 或接受其他使用者的連線。
簡單地介紹幾個TCP/IP協定中, 較常見的服務或協定:
TELNET: 終端模擬程式。
在實際的網路環境, TELNET允許使用者 由某部主機存取另一部主機的資源, 令使用者端的主機 像是直接與另一部主機相連的終端機。
FTP: 檔案傳輸協定 (File Transfer Protocol)。
此程式允許 使用者在兩部主機之間傳遞文書檔與二進位檔案。
SMTP: 簡易郵件傳輸協定 (Simple Mail Transfer Protocol), 主機可以藉此自動將電子郵件由一部主機傳至另一部, 使用者通常不會察覺它的存在。若您在自己的電腦中寫了新的 郵件, 則SMTP會自動嘗試將這些郵件送至目標主機。 POP: 郵件遞事務協定 (Post Office Protocol), SMTP雖然很自動化, 但主機必須是全天開啟的, 對於非全天候開啟的主機, POP可 允許所有內送的郵件暫時存放在郵件服務器 (mail server), 等使用者開機時, 其主機將自動要求郵件服務器送出該使用者 的郵件。
PING: 封包網際探索器 (Packet InterNet Groper), 這個程式以送出 一個封包的方式來探索某部指定的主機, 若該主機收到該封包, 會即刻回應另一個封包, 而PING將顯示來回封包所花的時間。 FINGER: 此命令可列出主機上所有的使用者, 或列出某個特定使用者的 相關資訊。
ARP: 位址解析協定 (Address Resolution Protocol)。為了使封包 能正確送到目的站, IP位址須與正確的硬體位址匹配, 通常軟體 並不知道給定IP位址的硬體位址為何, 當它需要知道時 , 即可利用ARP送出一段廣播訊息 (broadcast message), 而遠端 的機器若收到該訊息, 即會回應它的硬體位址。
目前, Internet上已有越來越多新的工具程式架設在上述各類協定 上, 這些程式的發展方向大都朝向整合性功能以及與使用者更親近的操作 介面方向發展, 這些就留待以後再介紹了。

2010年1月27日 星期三

雲端運算(Cloud Computing)之我見

雲端運算(Cloud Computing)之我見

作者:常世勳
雲端運算(Cloud Computing),最早是由Amazon提出的,雲端運算其實是由"雲" + "端"所組成的,而且嚴格來說雲端運算也不算是一種技術,我認為它比較像是一種"創新"(創新:不是指發明全新的技術或觀念,而是指利用現有的技術/觀念,而創造另一種新的價值),進而非常有機會成為一種"殺手級的應用".
雲端運算的觀念其實在以前就有人提出類似的應用,例如:"分散式運算","網格運算",或是以前我在學校時所使用過的"終端機",這些都算是"雲端"的前輩(當然是指觀念類似,但不是完全相同);只是當時"環境"尚未成熟,所以無法普及到End user.
這裡所指的"環境"包含了:網路速度(過慢),電腦/手持上網裝置的普及程度,瀏覽器的應用,無線網路的普及程度.而迄今,這些"環境"都已非常成熟了,尤其是寬頻網路及無線網路,瀏覽器(例如IE)也設計得非常方便操作,所以"雲端運算"也就成為可以被實現的一種觀念.
雲端運算共分三層結構,由下而上分別是「基礎建設即服務」,「平台即服務」和「軟體即服務」.
先來談談"雲"和"端"吧:
"雲":泛指數量很多的伺服器(運算速度強大),以及大容量的儲存設備(Storage).
"端":泛指End user所擁有的各種可以上網的裝置(手機,PDA,Desktop,NB...)且最好包含網路瀏覽器.此外,這些電子裝置不用功能非常強大,只要可以使用瀏覽器上網,就可以使用"雲"的服務.
因此未來若雲端雲算成熟且普及之後,桌上型電腦及筆電很有可能會慢慢被便宜又輕薄的可上網裝置所取代.當然微軟及INTEL(這對阿比阿弟又被稱之為WINTEL)所面臨的挑戰會是首當其衝的,因為電腦裡面不再需要灌Windows了,只要有非常簡單的小型O.S,再加上瀏覽器的應用程式就夠了;甚至也有可能完全都由BIOS來完成,這在UEFI架構的BIOS是可行的.
以後測試team也不用再一直測Win7/Vista,只要測瀏覽器+Mini O.S ;總之以後大家的工作內容都會有很大的變化.
而"雲","端"之間的橋樑便是"高速網路"(光纖網路,3G...),以下是示意圖:
"雲" <------(光纖網路,3G)------> "端"

雲端運算可以把它想像成是"吃飯",我們不必因為想吃各類的餐點而去請一堆廚師到家裡,或是自己要會煮各式料理.只要"送貨速度"快速,我們可以叫各種餐廳外送(這就是"雲"的觀念:不必自己養一頭牛在家裡,而你家就是"端"),以下是對照圖:

"雲" <------(光纖網路,3G)------> "端""
各大餐廳外送服務" <------(30分鐘內保證送到)------> "我家"

相信大家看完葵花寶典上冊之後,應該對雲端運算已有了清楚的概念了.
雲端運算的精神其實非常簡單,就是有很多強大的"雲"可以提供各式各樣的服務(即"雲端服務")給消費者(即"端",消費者可以包含End user及企業),所有的電腦運算都由"雲"來完成,然後再透過網路把結果送到我們的手機/PDA/NB("端").
所以雲端運算其實不是一種全新的發明,它是把現有的各種技術/設備/觀念都加以組合,型成另一種有價值的活動,這也是我認為它是一種創新的原因.
因此,我們的手機/PDA/NB...的功能就不用非常的強大,也不用常常為了某種應用而去升級硬體;相對的,"雲"的設備就要求運算功能要很強大,且要有很大的儲存容量可以存放我們的資料.
以後我們可能只要靠一隻硬體水準很普通的手機就可以做到目前個人電腦所有可以完成的事情,例如用手機玩華麗的3D遊戲,做影像編輯,甚至程式設計師最為頭痛的Build code......因為所有要耗費硬體資源的運算都由"雲"來幫你先處理好了.
我們電腦的硬碟也不用再因為空間不夠而一直花錢更換更大的硬碟,因為大部分的資料(影片,照片,音樂,資料檔案......)都是放在"雲"上面.
所以雲端運算帶來了非常多的商機及新的機會,例如伺服器/Storage的需求會爆增,台灣的相關代工廠商(廣達,英業達)便會受惠;網路服務及網路設備的商機也會增加;此外最有想像空間的便是"雲端服務"裡面的其中一項"軟體即服務"這塊大餅,以後大家都可以在家裡自己寫一個好用的程式,然後把它放在"雲"上面給別人使用,也可藉此賺取金錢;當然也可以免費,因為有人只是想成名.
這種商業模式完全打破目前軟體界由微軟獨霸的現象,讓升斗小民的我們有了另一片"藍海".
前面講了那麼多"雲端運算"的好處,難道雲端運算都沒有缺點嗎?...
當然有,事情總是一體二面的,有好必有壞,有陰必有陽.
雲端運算最大的隱憂便是"資訊安全",尤其是我們的個人隱私資料.因為我們所有的運算及絕大部分的資料都是由"雲"幫我們處理,想當然爾,"雲"便掌握了我們的隱私,我們所有的動作,資料,喜好,習慣都會被"雲端服務"的廠商記錄下來,所以我們的隱私便有被揭露的風險.
又及,因為我們所使用的絕大部分軟體都是由"雲"來提供並執行,若是"雲端服務"的廠商停止該項服務,或是你所處的地方是沒有網路或是網路速度很慢的環境,則會嚴重影響到我們的生活及工作,因為你不可能像現在一樣,換到另一台電腦上面就可以繼續工作(因為電腦內已經沒有安裝大部分的軟體,例如:Word,Excel...,這些都是由"雲"來提供的).
當然,你放在"雲"上面的資料亦有遺失的風險.這些都是雲端運算需要克服的隱憂.
接下來我想要深入探討"雲端運算"對國家競爭力的影響,這要由大戰略的角度來思考,這是一般我們做工程師的人不太會想到的層次,但卻是非常重要.目前世界各國都已經在籌設自己的"雲",例如中國大陸已在建置"北京雲","上海雲";韓國也在建置"雲端松島".
為何這些國家要這麼積極呢? 有個例子很容易來回答,我們知道目前世界上的霸主是美國,絕大部分一流的企業都是在美國(微軟,INTEL,思科,Google,Apple...),也因此美國掌握了規格的主導權,以及相關的商業模式...這就是國家競爭力.
所以若是所有的"雲"都在美國,那其它國家便都被它的"雲"所牽制住,層次高一點的是國家機密也就很容意被洩;另一層面是企業沒有規格的主導權(也就是遊戲規則),永遠只能跟隨在美國企業的腳步之後賺辛苦錢.所以台灣是否也應該要有自己的"雲"呢?!當然要.
雖然我們可以和對岸合作共建"雲",但除此之外,台灣還是要有自己的"雲".理由很簡單,就是國家安全及軍事機密.
雲端運算目前很熱門,但還是有需多相關的細節尚處於模糊階段,也就是因此,才會充滿想像及機會.

2009年4月16日 星期四

2009年4月4日 星期六

UEFI Framework的生命週期

簡單的來說,Framework就是UEFI的一種實現,由Intel自己所開發完成的。
它完全實現了EFI spec 中提及的各項功能。開發者可以基於Framework,開發出各種EFI應用。同時也可以為Framework新增新的功能。

Framework的執行(The life cycle of the Framework ),是按照以下的順序來執行的:
(1)SEC :Security
這個是系統上電後所立即進入的一個階段,在這一階段,Intel並沒有做太多的說明,相反,他們說這個階段可以由大家按照自己的需要利用。也就是說,我們可以安排我們自己想要的任何task在這個階段,比如一些身份驗證之類的。

(2)PEI :Pre-EFI
正如它的名字一般,這個是在真正的UEFI環境之前進入的一個狀態,這個狀態相當重要,以至於Intel花了很多時間來向我們闡述。
這個階段會做很多初始化的工作,會初始化CPU,初始化主板上的一些controller以及chipset,更加重要的是,在這個階段內,會使用一種技巧(CAR:Cache as RAM),來迅速的建立起執行C 語言所需的環境,也就是說,會建立一個stack。
這樣,以後機器就可以run那些由C語言所編寫的code了。最後PEI Core會按照一種方法來load所有的PEIM( Pre-EFI Module )。
PEIM是一種可以run在這個階段的一種module,任何人都可以開發自己的PEIM,load的工作由PEIM Dispatcher完成。
全部load之後,PEI會launch DXE Main並將系統控制權交給下一個階段:DXE phase。

(3)DXE :Driver Execution Environment
在這個階段,UEFI真正的提供了一個類似OS一樣的東西。在上一個階段PEI,系統已經建立了C語言可以執行的環境,從這個階段開始,所有的東西,都是用C語言完成了。
進入DXE後,會首先launch各種driver,比如Video Driver,NIC Driver,Soundcards Driver,USB Driver,PCI Controller Driver等等。
完成之後,就開始進行Boot。而這就是下一個階段了。

(4)BDS :Boot Device Select
在這裡,應該會有一個選擇,是進入OS呢?還是去執行那些EFI Applications ?
選擇完成之後,就進入下一個階段了。

(5)TSL :Transient System Load
這個階段會按照在BDS階段選擇的結果來做不同的事情,如果選擇了進入OS,那麼控制權會被傳遞給Final OS Loader。而如果是要去執行EFI Applications,則控制權便交給Transient OS Boot Loader,這樣就會建立起一個執行環境,之後就可以執行那些EFI Applications了。
目前,應該會執行一個叫EFI Shell的程序。而傳統的BIOS Setup也被寫成一個EFI Applications。

(6)RT :Run Time
這個階段就是OS執行的階段。

(7)AL :After Life
這個是OS執行之後的階段,例如關機之類的。但OS crash之後也屬於這個階段,也就是說,在系統萬一crash之後,如果使用UEFI,那麼還是可以做許多事情的。

以上就是Framework完整的執行週期。

Author: 常世勳

EFI Shell (Part 1)

1.什麼是EFI Shell?
EFI Shell是一個UEFI的應用程式,類似於我們在Windows中所用到的cmd或者在Linux中的shell。
EFI Shell是個非常重要的應用程式,它負責接收user的輸入,將user的輸入解譯並告訴kernel去執行,同時將執行結果顯示出來, 以完成和user的互動功能。

2.EFI Shell Commands list:
EFI Shell使用string interface和user互動,以下列出一些較常用到的命令:
( 1)pci : 顯示PCI設備或者PCI的configuration information.
( 2)mm :顯示或者修改memory,I/O以及PCI資源。
( 3)mem :顯示System memory或者Device memory的情況。
( 4)memmap :顯示由EFI Environment建立的Memory Map。
( 5)drivers :按照EFI Driver 的類型來逐一顯示所有已經安裝的Driver。
( 6)devices :顯示所有已經被EFI Driver所控制的device。
( 7)devtree :按照EFI Driver的類型來顯示device tree。
( 8)dh :顯示在EFI Environment中的所有的Handles。
( 9)connect :將一個Driver給 connect到一個device並啟動device。
(10)load :將一個Driver讀入memory。
(11)unload :將一個Driver從memory中unload掉。

Author: 常世勳

2009年2月9日 星期一

按Keyboard三個鍵便可讓Windows產生藍屏(BSOD):

1.用Regedit去改登錄檔:
1.1.若是用USB keyboard:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
1.2若是用PS2 keyboard:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

Create一個DWORD鍵,名稱為:CrashOnCtrlScroll, value設為1

2.改完之後記得要重開機.
3.下次開進OS之後,
按下keyboard右側的Ctrl鍵不放,同時再按Scroll Lock鍵二次, 此時系統便會出現
BSOD, message如下:
The end-user manually generated the crashdumpTechnical information:
*** STOP: 0x000000E2 (0x00000000, 0x00000000, 0x00000000, 0x00000000)

這個小技巧對RD debug有個很有用的地方,即是當你遇到系統不知為何變成黑屏時,
若你想知道此時Windows是否還活著,可用這個方法去手動產生藍屏,若windows
還活著,藍屏便有機會產生; 但這有個前提是VGA driver這時是ok的,因為產生黑屏
的原因也有可能是VGA driver本身出問題.

PS:這個方法在Vista, XP皆有效.

Author: 常世勳