软件如何控制硬件、编译器和操作系统是否需要编译
軟件如何控制硬件、編譯器和操作系統是否需要編譯
----作者:山野子 QQ:814577355
注:相信很多人都會有跟我一樣的疑問,那就是軟件如何控制硬件、編譯器和操作系統是
否需要編譯?為了解決這個問題,想了幾天幾夜,搞得頭暈腦脹,翻了很多書,什么模擬電路,數字電路,操作系統原理,計算機組成原理,編譯原理,微控制器與接口技術,也上網查看了資料,總算是稍微有點收獲,以下內容有些是網上信息的整理,有些是書籍上整理出的,還有一些是我自己的理解,不保證完全正確,僅供交流學習,望有高手批評指正。
現在就讓我們來討論上述疑問
首先必須明確一下幾點:
計算機中的任何數據(程序、數據等)都是以二進制的形式存在的于存儲單元中,存儲單元中實際上保存的就是高低電平。
在設計硬件時,就規定了一套計算機能實現的各種基本操作,我們把每一種基本操作用命令的形式來表示,就是所謂的指令,也就是每一套計算機都有自己的一套指令系統。指令通常分成操作碼和操作數兩大部分。而操作碼就是一系列二進制編碼,這些二進制編碼就是控制計算機工作的電平信號。程序的執行過程就是取出指令和執行指令這兩個過程的循環。機器從停機狀態進入運行狀態,要把第一條指令所在的地址賦給程序計數器PC,然后就進入取指階段(這一點是至關重要的一步,后續的所有操作都是從這一步有序的開始的,計算機開機運行時最先運行的就是BIOS程序,由此可知程序計數器的初始值就是BIOS程序所在的存儲單元的首地址,BIOS程序使用特殊工藝燒錄到ROM中去的,在主板上有專門的BIOS芯片),在取指階段從內存中讀出的內容必為操作碼,所以通過數據總線將其送至數據寄存器DR然后再送至指令寄存器IR,然后再送給指令譯碼器ID,譯碼以后就產生相應的控制信號,控制計算機各部件完成相應的任務。
必須明確任何可執行的代碼都是機器碼組成的。用任何編程語言編寫的程序最終都需要編譯鏈接成機器碼程序,加載到內存中去執行代碼只能是機器碼。二進制代碼在機器里面其實使用電壓的高低來表示的電壓高代表1電壓低代表0。
總之一句話,計算機里面運行的是高低電壓,你所有的操作,還有計算機操作系統及應用軟件的操作都是通過電壓的高低來對硬件進行控制的。軟件的實質就是電壓信號。
然后再探討下面的問題:
1、編譯程序本身也是程序,那它又是由誰來編譯呢?
其實最原始的編譯器是用機器碼編寫的,然后通過人工的方式輸入到計算機中去執行的。有了這第一個編譯器后,使用高級語言編寫的程序就成為可能,都是按一定的規則編寫的,編譯的作用就是將這個按一定規則編寫的程序翻譯成機器碼程序。這個翻譯過程從電路原理上講就是編譯器程序相當于操作碼,而源程序就相當于操作數,編譯器代碼控制硬件按照一定的算法去完成對源程序代碼進行處理,操作結果就是目標代碼。
有了第一個編譯器后那么以后就可以用高級語言去編寫新的編譯器或操作系統或是任何其他的程序。這其中就用到交叉編譯的概念。
2、什么是交叉編譯?
一個經常會被問到的問題就是,“既然我們已經有了主機編譯器,那為什么還要交叉編譯呢?”其實答案很簡單,沒辦法啊!有時是因為目的平臺上不允許或不能夠安裝我們所需要的編譯器,而我們又需要這個編譯器的某些特征;有時是因為目的平臺上的資源貧乏,無法運行我們所需要編譯器;有時又是因為目的平臺還沒有建立,連操作系統都沒有,根本談不上運行什么編譯器。
另一個經常會被問到的問題就是:“既然可以交叉編譯,那還要主機編譯干嗎?”其實答案也很簡單,交叉編譯是不得已而為之!與主機編譯相比,交叉編譯受的限制更多,雖然在理論上我們可以做任何形式的交叉編譯,但事實上,由于受到專利、版權、技術的限制,并不總是能夠進行交叉編譯,尤其是在業余條件下!舉例來說,我們至今無法生成惠普公司專有的som格式的可執行文件,因此我們根本無法做目的平臺為HPPA-HPUX的交叉編譯。
需要交叉編譯的原因有兩個:首先,在項目的起始階段,目的平臺尚未建立,因此需要做交叉編譯,以生成我們所需要的bootloader(啟動引導代碼)以及操作系統核心;其次,當目的平臺能啟動之后,由于目的平臺上資源的限制,當我們編譯大型程序時,依然可能需要用到交叉編譯。
3、操作系統是如何完成對硬件的管理?
其實操作系統是通過管理各個設備的驅動程序來完成對硬件的管理,(什么是“驅動程序”呢?驅動程序即添加到操作系統中的一小塊代碼,其中包含有關硬件設備的信息。有了此信息,計算機就可以與設備進行通信。驅動程序是硬件廠商根據操作系統編寫的配置文件,可以說沒有驅動程序,計算機中的硬件就無法工作。操作系統不同,硬件的驅動程序也不同,各個硬件廠商為了保證硬件的兼容性及增強硬件的功能會不斷地升級驅動程序。如:Nvidia顯卡芯片公司平均每個月會升級顯卡驅動程序2-3次。驅動程序是硬件的一部分,當你安裝新硬件時,驅動程序是一項不可或缺的重要元件。凡是安裝一個原本不屬于你電腦中的硬件設備時,系統就會要求你安裝驅動程序,將新的硬件與電腦系統連接起來。驅動程序扮演溝通的角色,把硬件的功能告訴電腦系統,并且也將系統的指令傳達給硬件,讓它開始工作。)硬件能工作,但我們無法直接使用,所以有相關的設備驅動程序(他會告訴上層我這些硬件具備什么功能)提供了一個借口供上層調用。而操作系統的內核就會把這些借口進一步的封裝成庫函數之類的,我們上層的應用程序就可以通過調用這些庫函數來間接的操作硬件了。
操作系統就是起到一個傳遞者和管家的角色,操作系統維護了一個叫注冊表的東西,所有的硬件都得到操作系統那注冊報到,那么其他的應用程序要用到硬件資源就都必須經過操作系統,由操作系統將運用程序的請求轉給硬件,因為只有操作系統保存著硬件的相關信息。同樣,硬件反饋回來的信息也是傳給系統的,系統再轉給應用程序。
4、操作系統也是軟件,那它需不需要編譯?
操作系統也是需要經過編譯成機器碼才能工作的,我們安裝在硬盤上的操作系統其實就已經是機器碼程序了,那它又是在哪編譯的呢,其實操作系統的編譯過程就是用到了上面說到的交叉編譯來完成的,即在系統安裝盤里的操作系統就是在別的平臺上編譯后的機器碼。
5、操作系統是如何開始工作的?
要說明操作系統是如何工作的就必須先說說什么是BIOS。
BIOS是英文"BasicInput OutputSystem"的縮略語,直譯過來后中文名稱就是"基本輸入輸出系統"。它的全稱應該是ROM-BIOS,意思是只讀存儲器基本輸入輸出系統。其實,它是一組固化到計算機內主板上一個ROM芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序、系統設置信息、開機上電自檢程序和系統啟動自舉程序。
從功能上看,BIOS主要作用如下:
⑴自檢及初始化
這部分負責啟動電腦,具體有三個部分:
第一個部分:是用于電腦剛接通電源時對硬件部分的檢測,也叫做加電自檢(PowerOn SelfTest,簡稱POST),功能是檢查電腦是否良好,通常完整的POST自檢將包括對CPU,640K基本內存,1M以上的擴展內存,ROM,主板,CMOS存儲器,串并口,顯示卡,軟硬盤子系統及鍵盤進行測試,一旦在自檢中發現問題,系統將給出提示信息或鳴笛警告。自檢中如發現有錯誤,將按兩種情況處理:對于嚴重故障(致命性故障)則停機,此時由于各種初始化操作還沒完成,不能給出任何提示或信號;對于非嚴重故障則給出提示或聲音報警信號,等待用戶處理。
第二個部分是初始化:包括創建中斷向量、設置寄存器、對一些外部設備進行初始化和檢測等,其中很重要的一部分是BIOS設置,在BIOSROM芯片中裝有一個程序稱為“系統設置程序”,就是用來設置CMOSRAM中的參數的,微機部件配置情況是放在一塊可讀寫的CMOSRAM芯片中的,它保存著系統CPU、軟硬盤驅動器、顯示器、鍵盤等部件的信息,當電腦啟動時會讀取這些參數,并和實際硬件設置進行比較,如果不符合,會影響系統的啟動。
第三個部分是引導程序:功能是引導DOS或其他操作系統。在完成POST自檢后,ROMBIOS將按照系統CMOS設置中的啟動順序搜尋軟硬盤驅動器及CDROM、網絡服務器等有效的啟動驅動器,讀入操作系統引導記錄,然后將系統控制權交給引導記錄,由引導記錄完成系統的啟動。BIOS先從軟盤或硬盤的開始扇區讀取引導記錄,如果沒有找到,則會在顯示器上顯示沒有引導設備,如果找到引導記錄會把電腦的控制權轉給引導記錄,由引導記錄把操作系統裝入電腦,在電腦啟動成功后,BIOS的這部分任務就完成了。
⑵程序服務處理
程序服務處理程序主要是為應用程序和操作系統服務,這些服務主要與輸入輸出設備有關,例如讀磁盤、文件輸出到打印機等。為了完成這些操作,BIOS必須直接與計算機的I/O設備打交道,它通過端口發出命令,向各種外部設備傳送數據以及從它們那兒接收數據,使程序能夠脫離具體的硬件操作。
⑶硬件中斷處理
硬件中斷處理則分別處理PC機硬件的需求,BIOS的服務功能是通過調用中斷服務程序來實現的,BIOS中斷服務程序,它是微機系統軟、硬件之間的一個可編程接口,用于程序軟件功能與微機硬件實現的衍接。DOS/Windows操作系統對軟、硬盤、光驅與鍵盤、顯示器等外圍設備的管理即建立在系統BIOS的基礎上。程序員也可以通過對INT5、INT13等中斷的訪問直接調用BIOS中斷例程。這些服務分為很多組,每組有一個專門的中斷。例如視頻服務,中斷號為10H;屏幕打印,中斷號為05H;磁盤及串行口服務,中斷14H等。每一組又根據具體功能細分為不同的服務號。應用程序需要使用哪些外設、進行什么操作只需要在程序中用相應的指令說明即可,無需直接控制。
總結
以上是生活随笔為你收集整理的软件如何控制硬件、编译器和操作系统是否需要编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Circulation:吃鸡蛋量多,死亡
- 下一篇: GPB | 陈润生/何顺民团队发布新版S