- 程序是怎樣跑起來的
- (日)矢澤久雄
- 761字
- 2019-01-05 02:25:48
1.1 CPU的內(nèi)部結(jié)構(gòu)解析
圖1-1展示了程序運行的一般流程。可以說了解程序的運行流程是掌握程序運行機制的基礎(chǔ)和前提。詳細(xì)內(nèi)容會在接下來的章節(jié)中逐漸展開,這里主要是希望大家先有個大致印象。在這一流程中,CPU所負(fù)責(zé)的就是解釋和運行最終轉(zhuǎn)換成機器語言的程序內(nèi)容。

圖1-1 程序運行流程示例
CPU和內(nèi)存是由許多晶體管組成的電子部件,通常稱為IC (Integrated Circuit,集成電路)。從功能方面來看,如圖1-2所示,CPU的內(nèi)部由寄存器、控制器、運算器和時鐘四個部分構(gòu)成,各部分之間由電流信號相互連通。寄存器可用來暫存指令、數(shù)據(jù)等處理對象,可以將其看作是內(nèi)存的一種。根據(jù)種類的不同,一個CPU內(nèi)部會有20~100個寄存器。控制器負(fù)責(zé)把內(nèi)存上的指令、數(shù)據(jù)等讀入寄存器,并根據(jù)指令的執(zhí)行結(jié)果來控制整個計算機。運算器負(fù)責(zé)運算從內(nèi)存讀入寄存器的數(shù)據(jù)。時鐘負(fù)責(zé)發(fā)出CPU開始計時的時鐘信號。不過,也有些計算機的時鐘位于CPU的外部。

圖1-2 CPU的四個構(gòu)成部分
接下來簡單地解釋一下內(nèi)存。通常所說的內(nèi)存指的是計算機的主存儲器(main memory),簡稱主存。主存通過控制芯片等與CPU相連,主要負(fù)責(zé)存儲指令和數(shù)據(jù)。主存由可讀寫的元素構(gòu)成,每個字節(jié)(1字節(jié)=8位)都帶有一個地址編號。CPU可以通過該地址讀取主存中的指令和數(shù)據(jù),當(dāng)然也可以寫入數(shù)據(jù)。但有一點需要注意,主存中存儲的指令和數(shù)據(jù)會隨著計算機的關(guān)機而自動清除。
了解了CPU的構(gòu)造后,大家對程序的運行機制的理解是不是也加深了一些?程序啟動后,根據(jù)時鐘信號,控制器會從內(nèi)存中讀取指令和數(shù)據(jù)。通過對這些指令加以解釋和運行,運算器就會對數(shù)據(jù)進(jìn)行運算,控制器根據(jù)該運算結(jié)果來控制計算機??吹健翱刂啤币辉~時,大家可能會將事情想象得過于復(fù)雜,其實所謂的控制就是指數(shù)據(jù)運算以外的處理(主要是數(shù)據(jù)輸入輸出的時機控制)。比如內(nèi)存和磁盤等媒介的輸入輸出、鍵盤和鼠標(biāo)的輸入、顯示器和打印機的輸出等,這些都是控制的內(nèi)容。
- Mastering Concurrency Programming with Java 8
- HTML5+CSS3王者歸來
- ServiceNow Application Development
- 表哥的Access入門:以Excel視角快速學(xué)習(xí)數(shù)據(jù)庫開發(fā)(第2版)
- Kotlin從基礎(chǔ)到實戰(zhàn)
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- Building Machine Learning Systems with Python(Second Edition)
- OpenCV with Python By Example
- Delphi開發(fā)典型模塊大全(修訂版)
- PowerDesigner 16 從入門到精通
- Learning Bootstrap 4(Second Edition)
- 精通Spring:Java Web開發(fā)與Spring Boot高級功能
- Ionic3與CodePush初探:支持跨平臺與熱更新的App開發(fā)技術(shù)
- Python繪圖指南:分形與數(shù)據(jù)可視化(全彩)
- 趣學(xué)數(shù)據(jù)結(jié)構(gòu)