編程語言介紹 語言是人與人之間溝通的介質,簡單的來說,編程語言也是語言,是我們程式員與電腦溝通的介質。常見的編程語言有我們熟知的做網頁開發的php,寫安卓應用的java,應用廣泛的c、c#及c++,以及目前火熱的python、r、go等高級語言,另外還有最接地氣的低級語言彙編語言,但是無論何種語言 ...
編程語言介紹
語言是人與人之間溝通的介質,簡單的來說,編程語言也是語言,是我們程式員與電腦溝通的介質。常見的編程語言有我們熟知的做網頁開發的php,寫安卓應用的java,應用廣泛的c、c#及c++,以及目前火熱的python、r、go等高級語言,另外還有最接地氣的低級語言彙編語言,但是無論何種語言,我們的電腦所能識別的只有機器語言(由0和1組成的二進位機器碼)。
應用、操作系統與硬體
由於電腦硬體只能夠識別機器語言,因此我們所有編程語言按照相應的語法寫出來的腳本文件、執行程式等應用軟體無法直接與硬體交互,必須要跑在存在於硬體之上的操作系統平臺,通過操作系統驅動硬體工作,所以一個完整的電腦系統需要由應用程式、操作系統、電腦硬體三大部分構成。
電腦硬體系統
一臺完整的電腦由處理器、記憶體、硬碟、主板、輸入輸出設備等組成,電腦是人類仿生學的產物
處理器可以看成人類的大腦,負責思考
記憶體可以看成人類的記憶,負責短時間的存儲信息
硬碟可以看成人類的用來永久記錄信息的介質,比如古代的石板獸骨龜甲、現代的紙張
輸入輸出設備可以看成人類的五官四肢,負責接收信息以及傳遞信息
主板可以看成人類的身體,用來連接腦袋和四肢,主板上的匯流排可以理解成人體的神經,負責傳遞人體各個部件的信號
電腦硬體之中央處理器
中央處理器(CPU)是電腦的運算與判斷組件,CPU內部含有微指令集,CPU所支持的功能由內部的微指令集決定,CPU所處理的數據來源於於記憶體,而記憶體的數據來源於硬碟,當硬碟內的一個程式執行時候,首先會將程式寫入記憶體中,然後CPU從記憶體中相應的取一段指令進行運算,但是CPU無法對記憶體提供的指令數據直接處理,CPU會將從記憶體調用的數據轉換成自己能夠識別的指令,最後執行反饋結果。
CPU的運行速度要遠遠高於記憶體,為瞭解決CPU和記憶體的速度差,所以CPU內都有一些用來保存變數和臨時數據的寄存器
寄存器:解決cpu和記憶體間的速度差,cpu從寄存器取數據
通用寄存器:用來保存關鍵變數和臨時數據或結果
程式計數器:一個cpu同時只能處理一條指令,但是電腦通常都是多任務執行,當進行任務切換時,被暫停的任務指令處理斷點結果將存如程式計數器
堆棧指針:記憶體內數據位置的索引
程式狀態寄存器:狀態由0和1表示
用戶態:非特權狀態,程式代碼執行時候只能獲取CPU內負責計算的指令集
內核態:特權狀態,程式代碼執行時候能夠獲取CPU內所有的指令集,包括控制硬體的指令集,如寫入磁碟的指令集
程式代碼執行的時候所處與用戶態,當程式代碼需要調用到操作系統訪問硬體或調用操作系統訪問外設的時候,將從用戶態切換到內核態,程式的執行過程中會頻繁的在用戶態和內核態之間切換
電腦硬體之存儲器
電腦系統中,除了記憶體和硬碟存儲外,還存在多種存儲器,比如為解決記憶體和CPU之間的速度差問題,在CPU層面加入的L1/L2緩存,用來存儲BIOS設置的CMOS等
存儲器類型主要有:
L1緩存:即寄存器,採用和CPU相同材質製作,速度和CPU相同,容量小於1KB
L2緩存:CPU的高速緩存,存在與CPU L1緩存上,負責和主記憶體交互,當程式執行需要讀一個數據時,首先會檢查高速緩存內是否存在,如果存在則不需要繼續想主記憶體發起請求,該過程叫做高速緩存命中。相較於L1緩存的無時間延遲,訪問L2緩存一般需要1-2ns的時間延遲,現在部分CPU在L2外層加入了L3緩存負責與記憶體交互。
RAM:易失性隨機訪問存儲,斷電後數據丟失,是電腦的主記憶體
ROM:非易失性只讀存儲,出場即編程完畢,只可讀取無法被修改,主要用來存放BIOS程式。
EEPROM:電可擦除可編程ROM,和ROM不同,可以擦除數據重新編程,但是寫入所需時間比ROM高很多
快閃記憶體:主要用於固態硬碟,速度比RAM慢,比機械硬碟快
CMOS:易失性存儲,但是可以用電池驅動放置丟失數據,一塊電池可以用若幹年,主要用來存放系統時間和BIOS配置
機械硬碟:電腦主要存儲設備,非易失性存儲設備
碟片:數據存放的載體
磁頭:讀寫碟片上的數據
主軸驅動:驅動碟片轉動
傳動軸:控制磁頭擺動定址
磁軌:碟片上人為定義的若幹個同心圓的軌道,從外向內由0開始編號
柱面:所有碟片上同一磁軌構成柱面,從外向內由0開始編號
扇區:磁軌按相同大小劃分成若幹的弧段,由1開始編號,每個扇區可存儲512或4K位元組。第一個扇區存放該硬碟的MBR信息
MBR由3部分組成:主引導程式(446位元組)負責用於硬碟啟動時將系統控制轉給用戶指定的併在分區表中登記了的某個操作系統
分區信息(64位元組)由4個分區表構成
結束位(2位元組)
磁碟訪問時間
平均尋道時間:指硬碟的磁頭從初始位置移動到盤面指定磁軌所需的時間,這個時間越小越好
平均延遲時間:指訪問磁軌內數據所在扇區所需時間,通常為碟片旋轉一周所需時間的一般
虛擬記憶體與MMU
程式運行時需要占用記憶體,當程式特別大超過記憶體大小時候,可以將暫時沒用到的程式段放到虛擬記憶體中,能夠允許電腦執行大於記憶體的程式,而負責管理虛擬記憶體與物理磁碟之間映射的是記憶體管理單元(MMU)
磁帶
電腦磁帶主要大量用於電腦的外存儲器,一般用來做數據備份
設備驅動與控制器
設備驅動:是操作系統和硬體間的介面。驅動負責將操作系統的請求傳輸,轉化為特定物理設備控制器能夠理解的命令。
控制器:使操作系統能夠簡單的操作物理設備,摒除複雜的操作過程,為操作系統提供一個簡單的管理介面
匯流排與南橋和北橋
匯流排:電腦的一種內部結構,是cpu、記憶體、輸入輸出設備間傳遞信息的通道,電腦的各個部件通過匯流排相連接,而外部設備通過相應的介面電路再與匯流排相連接
南橋(ISA橋):主要是負責I/O介面等一些外設介面的控制
北橋(PCI橋):主要負責CPU、記憶體、主存儲器等高速設備的控制
操作系統的啟動流程
1.電腦加電
2.BIOS開始運行,進行硬體檢測,包括cpu、記憶體、硬碟等
3.BIOS通過讀取CMOS存儲器中的參數,選擇啟動設備
4.從啟動設備上讀取第一個扇區的主引導記錄
5.根據主引導記錄的分區信息讀入bootloader啟動裝載模塊,啟動操作系統
6.然後操作系統詢問BIOS,以獲得配置信息。對於每種設備,系統會檢查其設備驅動程式是否存在,如果沒有,系統則會要求用戶安裝設備驅動程式。一旦有了全部的設備驅動程式,操作系統就將它們調入內核。然後初始有關的表格(如進程表),創建需要的進程,併在每個終端上啟動登錄程式或GUI
應用程式的啟動流程
1.用戶雙擊應用程式向操作系統發出指令
2.操作系統接收到指令,執行用戶操作,讀取程式數據
3.程式數據讀取完畢調入記憶體
4.CPU開始處理數據,把程式數據從記憶體調入緩存
5.CPU從緩存中讀取程式數據開始進行處理
6.程式數據處理完畢後返回處理結果給操作系統
7.操作系統收到結果後通過輸出設備返回給用戶