天天看點

深入了解計算機系統之旅(一)計算機系統漫遊

我們直覺的可以看到的計算機系統就是一台電腦,包括主機、顯示器、鍵盤滑鼠,然後顯示器上會顯示不同界面,用滑鼠點選,鍵盤輸入界面就會相應操作。

計算機系統是由硬體和系統軟體組成,它們共同工作來運作應用程式。

硬體是組成計算機系統的基礎,大家耳熟能詳的就是CPU、記憶體、硬碟、主機闆等。

系統軟體是運作在硬體之上的一層控制軟體,就是我們經常聽到的Windows XP、WIN7、Linux,它們的目的就是管理好各個硬體,屏蔽硬體的差異性,提供一個統一的應用軟體工作的平台。

應用程式是運作在系統軟體之上的一層軟體,他們受到系統軟體的管理,同時也享受系統軟體提供的各種資源和功能接口,就是我們經常用的QQ、迅雷等等。

計算機工作時一直在處理的是資料,計算機内部能處理的資料隻有兩種形式,0和1,這是組成計算機硬體的半導體的電氣特性。如何讓0和1能過表示現實世界的各種資訊?那麼就需要對他們進行組合和編碼。

CPU的指令是由一組組的0和1編碼構成。

我們在顯示器上看到的各種字元和文字也是由0和1的組合編碼而成,最終通過一定的方式在顯示器上模拟出字元和文字的形狀顯示出來。

同樣的0和1組成的位資料在不同的地方表示的意義不同,如何差別這樣的資料?

計算機系統中所有的資訊、資料——包括磁盤檔案、記憶體中的程式、使用者的資料以及網絡上傳送的資料,都是由一串比特表示,也就是0和1的位。區分不同資料對象的唯一方法是我們讀到這些資料對象時的上下文。比如,在不同的上下文中,同樣的位元組序列可能表示一個整數、字元串或者機器指令。

進階語言(比如C語言)編寫的程式源碼能夠被人讀懂,但是計算機卻不懂,為了能讓計算機能夠知道如何運作程式,就需要把每條C語言程式語句都轉化為一系列的低級機器語言指令,然後這些指令按照一種可執行目标程式的格式打包并以檔案的形式存儲在硬碟上。

硬碟上的程式被執行時會首先由作業系統按照一定規則和格式讀取并加載到記憶體中,然後排程并交由CPU執行,運作一個程式的過程非常複雜,它需要系統中不同功能的硬體、軟體一起協調工作。

無論如何整個過程中的資料資訊流遵循輸入——》輸入出的原則,被各個器件處理然後流轉。

計算機系統是由硬體和系統軟體組成,它們共同協作以運作應用程式。計算機内部的資訊被表示為一組組的0和1二進制位,它們依據不同的上下文有不同的解釋方式。程式被其他程式編譯成不同的形式,開始時是源代碼文本,然後被編譯器和連接配接器翻譯成二進制可執行檔案。

處理器讀取并解釋存放在主存裡的二進制指令。因為計算機花費了大量的時間在存儲器、I/O裝置和CPU寄存器之間拷貝資料,是以系統中的儲存設備就被按層次排列,CPU寄存器在頂部,接着是多層的硬體高速緩存存儲器,DRAM主存儲器,DRAM主存儲器和磁盤存儲器。在層次模型中位于更高層的儲存設備比低層的儲存設備要快,但是機關存儲價格也更高。

作業系統核心是應用程式和硬體之間的媒介。它提供三個基本的抽象概念,檔案是對I/O裝置的抽象概念,虛拟存儲器是對主存和硬碟的抽象概念,程序是處理器、主存和I/O裝置的抽象概念。

最後網絡提供計算機系統之間通信的手段,從某個系統的角度來看,網絡就是一種I/O裝置。