1. 程式人生 > >cpu、記憶體、磁碟、作業系統的關係

cpu、記憶體、磁碟、作業系統的關係

CPU,記憶體,磁碟,指令以及它們之間的關係

一、Cpu:

cpu是central process unit的簡稱,是計算機的核心處理器。Cpu的作用是執行機器語言指令。高階語言和組合語言程式被編譯成cpu能理解的機器語言後,存入到記憶體中,cpu就會從記憶體中讀取並執行這些指令序列,完成程式功能。

包括控制器、暫存器、運算器、時鐘四個部分組成。

其中運算器是用來計算的,

暫存器是臨時存放中間資料以及指令的,包括程式計數器、指令暫存器、資料暫存器、地址暫存器等。 暫存器是組合語言所研究的物件,組合語言通過對暫存器的控制(寫入,讀出,加),實現功能。eg:

第一句——物件:eax暫存器;動作:mov;目的地:記憶體(dword);具體地址:ebp暫存器中儲存的地址。

第二句——物件eax暫存器;動作:add;引數:記憶體中的數;具體地址:ebp暫存器中儲存的地址。

第三句——物件:eax暫存器;動作:mov;目的地:記憶體(dword);具體地址:ebp暫存器中儲存的地址。

程式計數器的作用是指定當前執行指令的地址。通過改變程式計數器,可以實現程式的邏輯控制。但是,雖然通過改變程式計數器的值可以實現程式跳轉,但是單純通過改變程式計數器的值卻無法實現函式呼叫。因為跳轉不需要回來,而函式呼叫結束之後還要回到原指令的下一條指令。為了實現函式呼叫,需要將程式計數器與call/return指令結合使用。也就是說,在函式呼叫時,在改變程式計數器值的同時,還要呼叫call指令,將返回位置寫入棧記憶體中還需要在被呼叫函式的末尾新增return指令,這樣在被呼叫函式執行結束後會繼續執行return指令,return指令會將程式計數器的值設定為棧的最上邊的值,也就是函式呼叫的返回地址。

程式計數器和記憶體的關係:程式計數器記錄了當前執行的指令在記憶體中年儲存的位置。

控制器是用來控制何時將記憶體的資料及指令讀入暫存器,何時將暫存器中的值輸出到記憶體。

時鐘是同步各個部件之間的步調。

二、記憶體:

記憶體又叫主存,與cpu的暫存器連結,用於將資料以及指令輸入到暫存器中;同時也可以接受暫存器的輸出。本質是作為磁碟與暫存器的中介軟體,起到緩衝作用。斷電後會丟失所有資料。

記憶體和磁碟的關係:由於磁碟的讀寫速度與cpu相差太大,如果cpu直接從磁碟中讀取資料,會造成cpu計算能力極大的浪費。為了解決這個問題,在磁碟與cpu之間加一個記憶體,將磁碟儲存的程式以及資料線讀入記憶體中,cpu直接與記憶體打交道。此外,由於記憶體的空間比磁碟小很多,會出現記憶體不夠用的情況,此時,會將一部分磁碟當做記憶體來使用,也就是虛擬記憶體。

三、磁碟:

存放資料的,容量比記憶體大,速度慢。

斷電不會丟失資料。

四、指令:

指令是控制cpu按照一定功能運算的機器碼。每一種cpu有自己的一套指令集。高階語言編寫的程式最終也要編譯成可以讓cpu理解的一條條機器指令,才能被cpu執行。Cpu除了可以計算資料以外,還可以控制硬體,方法是通過cpu暫存器與I/O埠進行資料交換。計算機中主機與外圍硬體的連結方式是通過I/O埠進行的(埠是用於主機暫存器與外圍裝置交換資料時臨時儲存資料的暫存器)。所以,指令通過控制cpu的輸出和輸入位置,可以讓cpu暫存器向I/O埠暫存器傳送資料,外圍裝置通過與I/O暫存器交換資料,從而達到控制外圍裝置的效果。而作業系統的作用是封裝一套指令序列,cpu通過執行這套指令序列,可以讓硬體完成一系列動作。而應用程式如果需要對硬體進行操作,只需要將作業系統的這套指令序列複製到自己的程式中即可。複製這套指令的方式就是API。從這個角度來看,作業系統就是封裝了控制硬體完成一系列動作的指令序列的集合,這套集合提供給應用程式以及計算機的使用者。從而達到了將人、應用程式與硬體隔離的效果。

五、它們之間的關係

可執行程式(也就是機器碼序列)首先從磁碟中被讀入到記憶體中,然後記憶體中的程式會被一條一條的讀到指令暫存器中被執行。