《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > 計(jì)算機(jī)系統(tǒng)原理(一) 計(jì)算機(jī)概述

計(jì)算機(jī)系統(tǒng)原理(一) 計(jì)算機(jī)概述

2017-06-22
關(guān)鍵詞: 匯編語言

本來LZ是打算好好研究一下JVM源碼的,不過想來想去,LZ覺得應(yīng)該先了解計(jì)算機(jī)系統(tǒng)的原理,再去研究JVM源碼的精妙。因此LZ決定潛下心來好好研究下計(jì)算機(jī)系統(tǒng)原理,這是一個(gè)漫長(zhǎng)的過程,因?yàn)椤渡钊肜斫庥?jì)算機(jī)系統(tǒng)》這本書很厚,而且這種書一般看起來速度不會(huì)太快。因此LZ打算做好每一個(gè)階段的記錄,有興趣的猿友可以跟著LZ一起看下,了解計(jì)算機(jī)系統(tǒng)的運(yùn)行原理其實(shí)是很有必要的。

計(jì)算機(jī)的組成

計(jì)算機(jī)是由硬件和軟件組成的,這兩個(gè)部分共同協(xié)作完成程序的運(yùn)行。這兩部分如何協(xié)作完成程序的運(yùn)行,是本系列的重點(diǎn)。

信息的表示

信息的表示說到底就是位加上下文。舉個(gè)小例子,比如11011101這一串二進(jìn)制,在表示整數(shù)的時(shí)候它表示221,但是如果放在JAVA的class文件當(dāng)中,它可能代表一個(gè)JVM的指令。

程序的編譯

對(duì)于一個(gè)簡(jiǎn)單的C語言程序來說,一般要經(jīng)過預(yù)處理器、編譯器、匯編器和鏈接器的處理,才能被翻譯成一段可執(zhí)行的二進(jìn)制文件。

比如對(duì)于一個(gè)簡(jiǎn)單的C語言程序,如下。

#include <stdio.h>
   
int main()
{
    printf("hello,world\n");    
}
我們保存在hello.c當(dāng)中。

程序的運(yùn)行

程序的運(yùn)行由解釋器負(fù)責(zé),它將逐個(gè)解釋最終生成的二進(jìn)制文件并執(zhí)行。

計(jì)算機(jī)的硬件組成

首先,我們來看下計(jì)算機(jī)中硬件的大致分布。

其中有幾個(gè)非常重要的部分,一一看下都是什么作用。

總線:貫穿整個(gè)系統(tǒng)的是一組電子管道(其實(shí)就是傳輸數(shù)據(jù)的線路),也就是總線??偩€傳送的是字,字的大小與系統(tǒng)相關(guān),比如在32位操作系統(tǒng)當(dāng)中,一個(gè)字是4個(gè)字節(jié)。

I/O設(shè)備:I/O設(shè)備是系統(tǒng)與外部聯(lián)系的通道。I/O設(shè)備(鍵盤、鼠標(biāo)、顯示器等)由控制器(USB控制器)或者適配器(圖形適配器,也就是顯卡)與I/O總線相連,兩者的區(qū)別在于一個(gè)是主板上的芯片組,一個(gè)是主板插槽上的卡。

主存:它是計(jì)算機(jī)中的一個(gè)臨時(shí)存儲(chǔ)設(shè)備,在處理器執(zhí)行程序的時(shí)候,主存就是臨時(shí)存放數(shù)據(jù)的地方。物理上來說,它是由動(dòng)態(tài)隨即存取存儲(chǔ)器芯片組成,邏輯上來說,它是一組連續(xù)的字節(jié)數(shù)組,每一個(gè)字節(jié)都有唯一的地址。

處理器:全稱中央處理單元,是解釋存儲(chǔ)在主存中指令的引擎。處理器的核心是一個(gè)程序計(jì)數(shù)器,它在整個(gè)計(jì)算機(jī)運(yùn)行的期間都會(huì)指向一個(gè)主存中的一個(gè)內(nèi)存地址,而地址當(dāng)中則是一個(gè)計(jì)算機(jī)指令。處理器所做的,就是不停的執(zhí)行程序計(jì)數(shù)器所指向的每一條指令。處理器所做的操作是圍繞主存、寄存器文件以及算術(shù)/邏輯單元進(jìn)行的,這里面處理器做的最多的動(dòng)作就是加載(從主存將數(shù)據(jù)復(fù)制到寄存器)、存儲(chǔ)(從寄存器將數(shù)據(jù)復(fù)制到主存)、操作(將兩個(gè)寄存器的內(nèi)容復(fù)制到算術(shù)/邏輯單元進(jìn)行操作,結(jié)果會(huì)再次復(fù)制到寄存器)以及跳轉(zhuǎn)(改變程序計(jì)數(shù)器當(dāng)中的內(nèi)容)。

處理器當(dāng)中提到的是指令集結(jié)構(gòu),不過實(shí)際當(dāng)中指令集的實(shí)現(xiàn)是非常復(fù)雜的,這么做的目的是為了加速CPU的運(yùn)算速度。我們可以這樣去區(qū)分指令集機(jī)構(gòu)以及微體系結(jié)構(gòu),指令集結(jié)構(gòu)是指令集的抽象描述,而微體系結(jié)構(gòu)則是這個(gè)抽象描述的某一個(gè)具體實(shí)現(xiàn),類似于JAVA虛擬機(jī)與JAVA虛擬機(jī)實(shí)現(xiàn)的關(guān)系。

本章小結(jié)

計(jì)算機(jī)是由軟件與硬件組成的,而硬件又包括了總線、I/O設(shè)備、主存以及處理器,其中信息是由位以及上下文表示的,而信息則是從I/O設(shè)備以位的形式通過總線進(jìn)入主存,然后由處理器從主存將信息取出處理。

一個(gè)程序的執(zhí)行,是經(jīng)歷了預(yù)處理器、編譯器、匯編器以及鏈接器的處理之后,才最終成為可執(zhí)行的文件。當(dāng)程序成為可執(zhí)行文件時(shí)就已經(jīng)保存在了磁盤上,具體的執(zhí)行過程在下一章再總結(jié)。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。