電腦系統的概念(1)

來源:互聯網
上載者:User

標籤:

一從hello world說起

The only way to learn a new programming language is by writing programs in it.The first program to write is the same for all languages:

Print the words

Hello, world

                                                                                                                                                               ——《TCPL》

 

這是TCPL開篇的一句話,那麼作為部落格的開篇,就從這個對於學習所有電腦語言的統一入口——hello world程式說起。

 

首先是這個程式的C語言實現

#include <studio.h>

int main()

{

         printf("hello,world\n");

}

我們按照C語言的要求,將上述內容儲存在名為hello.c的檔案中。這就是——原始碼檔案。

我們知道電腦只能識別0和1這兩種字元,那電腦如何執行我們編寫的程式呢?

對於C語言而言,我們在用文字編輯器編寫程式時,寫下的是字元序列,而序列中的每一個字元,都有一個對應的編碼。以最基本的ASCII編碼來講,上述程式的第一個字元”#”,其二進位表示為00100011,即ASCII碼中的35,用16進位表示為23。按照這種方式,將所有的程式字元,都翻譯一遍,就是如下這個樣子:

 

如果電腦要執行我們用C語言編寫的源檔案,就需要按照上面的方式,將字元序列轉換為由0和1組成的bit序列。這樣的序列,就是程式員的祖師們所採用的編程方式。

 

幸好,我們已經有了C這樣的“進階”電腦語言,編寫程式的效率和程式的可讀性,都大大提高。我們現在編寫程式,幾乎無需關心進階語言怎麼轉化為低級語言或者機器語言。那些工作都由“編譯器驅動程式”去處理。那麼C語言編譯驅動程式到底做了哪些工作呢?我們這裡先給出一個大致的步驟:C語言->組合語言->二進位檔案。

 

二談談電腦的硬體

下面我們談談電腦的硬體:

1主板晶片集:有的主板晶片集分為南橋(SB)和北橋(NB),

北橋主要負責與CPU的聯絡,控制記憶體,有的還提供整合的顯示核心。

南橋主要負責I/O匯流排之間的通訊,如PCI匯流排,USB,LAN,音頻等。

現在的很多主板都沒有北橋了,北橋的記憶體控制功能和整合顯卡功能都由CPU來處理。

2匯流排:匯流排是電腦各個組件之間通訊的線路,他是cpu,記憶體,輸入裝置,輸出裝置傳遞資訊的公用通道,電腦的各種裝置通過介面與匯流排串連,從而可以相互連訊。

3I/O裝置:常見的I/O裝置有:鍵盤,滑鼠,顯示器,硬碟(磁碟機)。

4記憶體:記憶體是由一組DRAM晶片集成的,邏輯上可以看做一個一維位元組數組,每個位元組都有唯一的地址(數組索引),這些地址從0開始,記憶體的容量,即這個數組的索引範圍。

5cpu:cpu是解釋或執行儲存在記憶體中的指令的引擎。它的核心是程式計數器(PC)。

 

從電腦通電開始,CPU就從程式計數器指向的記憶體位址讀取指令,解釋指令,並按照指令的要求執行簡單操作。然後由算數邏輯單位(ALU)計算新的資料和地址,並更新程式計數器指向下一條指令。重複這個動作,電腦則運轉起來。

 

三程式與硬體的結合

說完了硬體,我們繼續回來說hello world,我們要執行一個C語言,要先對其進行編譯產生可執行檔,然後通過一個控制台(Shell)中輸入 ./hello,然後點擊斷行符號,這時控制台上會列印出hello world。

我們放慢速度,詳細說一下這個過程都發生了什麼:

1我們通過鍵盤,輸入”./hello”字元

2點擊斷行符號,這是一個不可見的字元,shell在接收到這個字元後,就會將我們輸入的字元,通過匯流排,逐一讀取到寄存器,然後再通過匯流排將字元存放到儲存空間。

3接下來shell會判斷本行輸入的內容,是否是shell中的內建命令,如果是內建命令則按照內建命令來執行;如果不是,就會在硬碟對應的目錄中尋找一個符合名稱的可執行檔。

4在找到檔案後,會通過一系列指令,將硬碟上的這個檔案的代碼和資料拷貝到記憶體中。

5此時,PC會指向這段程式的開始位置的地址,然後CPU讀取程式二進位指令,然後按照指令執行。這些指令將”hello, world\n”從記憶體拷貝到寄存器檔案,然後從寄存器檔案拷貝到顯示裝置(顯示器),這樣我們在螢幕上就能看到列印的字元了。當然,這些字元在電腦實際儲存的是由0和1組成的序列,只是在顯示的時候,通過點陣形成了自然語言的字元的圖形。

 

由此可見,即使是最基本的hello world程式,要想執行,也會調用電腦的各種硬體裝置。

 

四儲存的階層

為了提高電腦的效能,在cpu的寄存器和記憶體之間,又增加了“快取”。根據其速度和容量,又分一級緩衝(L1),二級緩衝(L2)以及三級緩衝(L3)。

按照這種儲存空間的分層思想,可以形成如下的金字塔結構。

 

 

 

五作業系統

剛才我們談到,電腦調度各種硬體來實現hello world程式的執行,並不是由應用程式直接控制的,而是通過作業系統來統一控制的。

作業系統有兩個準系統:

1防止硬體被應用程式濫用;

2對硬體的控制,提供簡單一致的方法。

 

作業系統有如下一些抽象概念:進程,線程,虛擬儲存空間,檔案。

 

下面逐一做簡單介紹:

進程:是作業系統對運行程式的一種抽象,作業系統儲存進程啟動並執行所有資訊(上下文)。並通過環境切換,實現進程的交錯執行。

 

線程:進程內部可以包含多個稱為線程的執行單元,線程之間可以更高效的傳遞資訊。

 

虛擬儲存空間:每個進程都有其可以控制的一塊獨佔的記憶體地區。這塊獨佔的記憶體,就叫虛擬儲存空間,它由這樣幾個區組成。

1程式碼和資料

2運行時堆

3共用庫

4使用者棧

5核心虛擬儲存空間

 

檔案:檔案就是位元組序列,每個I/O裝置都可以看成是檔案。

通過作業系統與電腦硬體相互結合,實現了應用程式的執行。

六總結

最後總結一下:我們通過一段由C語言編寫的hello world程式,來分析電腦都做了什麼工作。而這個過程,就是電腦系統工作的過程。

由此,我們得到了電腦系統的概念:電腦系統是由硬體和系統軟組成的,它們共同協作,以運行應用程式,從而使電腦為人服務。

電腦系統的概念(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.