第4章 操作系統計算機組織結構
第4章 計算機組織結構 前言 操作系統提供了抽象以簡化對硬件的使用,單線程是馮?諾依曼計算機的操作抽象,如果理解了一個馮?諾依曼計算機是如何執行程序的,就能理解進程背后的知識,對操作系統的深入理解,依賴于計算機硬件是如何組織的等基礎知識,尤其是控制部件和設備操作方面。 4.1 馮?諾依曼體系結構 計算機體系結構是指:用來組成計算機的子部件(處理器、內存、設備)的種類和這些子部件相互連接的方式。 計算機不僅要能存儲給定計算機需要的數字信息,而且也要存儲數據計算程序執行的指令。 存儲程序計算機使用了19世紀提花織布機的存儲圖案的思想,意味著可以使用一個織布機“自動的”產生具有許多不同圖案的織物。 馮?諾依曼計算機基于的思想:機器有一組固定的電子部件,但可以由可變的程序來決定它的行為。 馮?諾依曼計算機包括的硬件部件: 中央處理單元CPU(包括算術邏輯運算單元ALU和控制單元構成) 主(或可執行的)存儲單元 T/O設備 連接各部位的總線 控制單元對指令進行譯碼,ALU負責執行,主存儲器存儲可被CPU使用的程序和數據。設備是用來進行輸入、輸出、通信和存儲的。總線連接CPU、主存儲器和設備。 4.2 中央處理單元 中央處理器CPU是計算機的大腦:它決定執行哪一條指令,然后將指令譯碼后并執行它。 CPU由一個ALU和一個控制單元組成,ALU完成計算的功能,而控制單元決定指令的執行次序,譯碼存儲的程序指令,并讓ALU執行。 算術邏輯單元 ALU執行了大量的二進制算術和邏輯操作。如加、減和邏輯與等。功能單元執行操作,寄存器保存操作數和結果。寄存器的內容可以從主存儲器中加載,也可將寄存器的內容保存到主存儲器中。 一般的算術邏輯運算單元 計算可通過一下方式進行:通過將二進制值加載到通用寄存器,并使用功能單元對寄存器上的操作數進行運算,最后將結果存入主存儲器。 例如:如果一個C源程序包含如下代碼: a=b+c; d=a-100; 為了完成這兩個語句,CPU會執行下面的匯編語言指令: //Assembly language code for a=b+c; Load R3,b // copy the value of b from memory to R3 Load R4,c // copy the value of c from memory to R4 Add R3,R4 //sum placed in R3 Store R3,a // store the sum into memory cell a // Assembly language code for d=a-100 Load R4,=100 // load the value 100 into R4 Subtract R3, R4 //Difference place in R3 Store R3,d //store the difference in memory cell d 控制單元 控制單元可從可執行存儲單元中取得一系列指令,并對它們進行譯碼. 控制單元包含了一個從主存中取指令的部件,一個譯碼指令的部件,以及可用來向ALU發信號的部件. 程序計數器(PC)寄存器中包含了控制部件將要加載的下條指令的地址. 指令寄存器(IR)包含當前指令的拷貝. 程序計數器,指令計數器和主存 硬件取址---執行周期(取址—執行算法在控制單元硬件中執行) pc=; IR=memory[pc]; haltFlag=CLEAR; while (haltFlag not SET during execution) { pc=pc+1; ececute(IR); IR=memory[pc]; }; 當機器啟動時,PC會裝入第一條要執行的指令的地址.這通常是由硬件引導過程完成的.即機器執行的第一條指令的地址是固定的;控制單元從主存中取出并裝入第一條指令,然后開始正常的操作過程.在算法的描述中, haltFlag被用來做循環測試,以決定什么時間控制單元結束. 4.3 主存儲器 主存接口由三個相應的寄存器組成:存儲寄存器(MAR),存儲數據寄存器(MDR),以及命令寄存器(Cmd).當有信息要寫入主存時,數據放在MDR中,相關的主存地址放在MAR中,并將一個write命令放在Cmd中. 存儲器組織結構 讀操作: 1)將一個地址載入MAR內 2)將一個讀