1. 程式人生 > 實用技巧 >計算機軟體和硬體的互動

計算機軟體和硬體的互動

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

昨天晚上在思考“計算機軟體和硬體是如何互動的”這一問題,也就是“電腦的軟體如何將指令傳達給硬體”。這個問題是我在2010年2月份開始思考的。前期無果,中間擱置了幾個月的時間,這一次因為一個偶然的機會又激發了我對這一問題的思考。

電腦的硬體有CPU(中央處理器)、RAM(記憶體)、Hard Disk(硬碟)、BIOS(基本輸入輸出系統)等;

電腦的軟體有作業系統,編譯器,應用軟體等。

其中最關鍵的是CPU和作業系統的互動。CPU擁有ISA(指令集),作業系統通過將高階語言編寫的程式轉化為組合語言(能被CPU翻譯成機器語言的特定組合語言)後,再進一步轉化為CPU能夠識別的機器語言,CPU利用自身的指令集將二進位制程式碼翻譯為相應的指令。

這裡面涉及到資訊的傳輸,數字訊號作為一種資訊在是以電磁波或者電訊號的形式傳輸的。以電訊號為例,數字訊號依靠電流的有無或電壓的高低分別代表1或0,只要電流或電壓不高於某上限值,都會被認為代表0;只要電流或電壓不低於某下限值,都會被認為代表1,當然同一電路中下限值一定大幅度高於上限值,電流或電壓略高或略低寫並不影響其含義。

說到這裡,回到計算機的硬體與軟體的互動問題。軟體是以硬體為載體的,在計算機中就是儲存器,其中包括有硬碟、CMOS晶片、BIOS晶片、記憶體條、軟盤、光碟等。構成儲存器的儲存介質,目前主要採用半導體器件和磁性材料。儲存器中最小的儲存單位就是一個雙穩態半導體電路或一個CMOS電晶體或磁性材料的儲存元,它可儲存一個二進位制程式碼。由若干個儲存元組成一個儲存單元,然後再由許多儲存單元組成一個儲存器。 所以,與其說軟體與硬體的互動,不如說,從一開始軟體就是硬體的一部分,它是以二進位制程式碼的形式通過硬體的半導體器件和磁性材料儲存於硬體儲存器中。如此,下面就好理解了。

在電腦上電後,根據電路、模電、數電原理,該通電的都通上電了,儲存在硬體儲存器中的資訊由於有了“動力”,便開始工作了,資訊以電壓或電流的形式傳輸起來,實際上由簡單的二進位制的高低訊號構成了複雜的物理動作,這些物理動作可以被叫做指令集(ISA)的東西所解釋。可以理解為,物理動作就是0,1組成的機器語言,而指令集能夠“翻譯”機器語言,也許用“理解”更恰當,因為一般認為機器語言是機器能夠直接聽懂的語言,就像漢語是中國人能夠直接理解的語言一樣。我們也不是天生就懂漢語的,大腦在環境中不斷適應過程中,形成了記憶,也可以說形成了“指令集”,對於傳輸過來的資訊——漢語,我們可以很快的明白什麼意思,並作出反應。指令集可以根據二進位制訊號明白對方的意思,作出加減乘除運算,然後進行儲存或者傳輸等動作。完整的描述為:CPU從儲存器或高速緩衝儲存器中取出指令,放入指令暫存器,並對指令譯碼。它把指令分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。 例如,要求一個加法運算,算數邏輯單元(ALU,Arithmetic Logic Unit)將會連線到一組輸入和一組輸出。輸入提供了要相加的數值,而且在輸出將含有總和結果。ALU內含電路系統

,以於輸出端完成簡單的普通運算和邏輯運算(比如加法和位元運算)。如果加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裡,運算溢位(Arithmetic Overflow)標誌可能會被設定(參見以下的數值精度探討)。資訊的傳輸和指令的執行都是以晶振週期為最小單位時間動作的。

每一個有思想的硬體都是有類似於CPU這樣的晶片的。它們其中集成了一些指令集,可以聽懂“別人的話”。如硬碟有硬碟控制器,處理器本身有控制器;CMOS晶片只有儲存功能,對於硬體引數比對的工作還需要交給CPU來做。

作業系統之所以重要,是因為它是硬體與應用軟體的中間人,它將通過自己的平臺開發出來的應用程式解析為組合語言和機器語言與硬體互動。

總結:計算機的發明是二十世紀最重要的事件之一。人類能夠設計出這樣的一個如此精密的機器足以體現出人類的智慧。再複雜的事物也是由最基本的東西所組成,計算機的複雜之處在於它的高速性與準確性,而這一切的實現是由最基本的電子管、電晶體、積體電路完成的,這些都是硬體。人類歷史的又一大發明是第三代資訊載體,它是在資訊傳播中攜帶資訊的媒介,是資訊賴以附載的物質基礎,也是用於記錄、傳輸、積累和儲存資訊的實體。包括以能源和介質為特徵,運用聲波、光波、電波傳遞資訊的無形載體和以實物形態記錄為特徵,運用紙張、膠捲、膠片、磁帶、磁碟傳遞和貯存資訊的有形載體。 資訊和計算機相依為命,沒有資訊,計算機便是一堆廢鐵;沒有計算機,我們現在的時代因為資訊處理的緩慢,定不會如此高速的發展。

簡而言之:二進位制訊號(軟體)在載體(硬體)中傳輸,經由固體電子元件(硬體)得以執行,然後又可以以二進位制訊號(軟體)的形式儲存在載體(硬體)中。

參考資料:

http://baike.baidu.com/view/955838.htm

http://baike.baidu.com/view/50088.html?wtp=tt

http://baike.baidu.com/view/22318.html?wtp=tt#3

http://baike.baidu.com/view/2089.htm?fr=ala0_1_1

轉載請註明來自:http://hi.baidu.com/levonelee/blog/item/97f48f0384bb2c85d53f7c71.html

轉載於:https://my.oschina.net/yisenn/blog/14980