第一章 計算機系統漫遊
計算機系統是由硬體和系統軟體組成的。所有計算機系統都是由相似的硬體和軟體組成,它們又執行著相似的功能。
以hello程式為例。
1.1資訊就是位+上下文
hello程式的生命是從源程式(原始檔)開始的。源程式是程式設計師編寫的,hello.c。源程式是 0和1 的位元位,8個一組。ascii標準來表示文字字元。 這樣的檔案稱為文字檔案,所有其他的檔案稱為二進位制檔案。
乙個基本思想:系統中所有的資訊-----包括磁碟檔案、儲存器中的程式、儲存器中存放的使用者資料以及網路上傳送的資料,都是由一串位元表示的。區分的惟一方法是這些資料物件的上下文。
1.2 程式被其他程式翻譯成不用的格式
hello程式生命週期一開始時高階c程式,能夠被人讀懂。
編譯系統(預處理器,編譯器,彙編器,鏈結器)
預處理階段:
根據字元#開頭的命令(directives),修改原始的c程式。
編譯階段:
變成組合語言程式。
組合語言,為不同高階語言的不同編譯器提供了通用的輸出語言。
彙編階段:
將組合語言指令翻譯成可重定位(relocatable)目標程式格式,並儲存在helloc.c中。
鏈結printf函式。併入後。可執行檔案載入到儲存器後,由系統負責執行。
1.3 了解編譯系統如何工作是大有益處的
優化程式效能。
理解鏈結時出現的錯誤。
避免安全漏洞。
1.4 處理器讀並解釋儲存在儲存器中的指令
1.4.1 系統的硬體組成
匯流排:貫穿整個系統的是一組電子管道,稱為匯流排。
i/o裝置:是系統與外界的聯絡通道。
主存:臨時的儲存裝置
處理器:解釋(或執行)儲存在主存中指令的引擎。
1.4.2 執行hello程式
1.5 快取記憶體
1.6 形成層次結構的儲存裝置
1.7 作業系統管理硬體
作業系統兩個基本功能:防止硬體被失控的應用程式濫用。
1.7.1 程序
併發執行
上下文切換
系統儲存程序執行所需要的所有狀態資訊,稱為上下文。
1.7.2 執行緒
每個執行緒都執行在程序的上下文中,並共享同樣的**和全域性資料。
1.7.3 虛擬儲存器
抽象概念。
為每個程序提供乙個假象,好像程序都在獨佔使用主存。每個程序看到的儲存器都是一致的,稱為虛擬位址空間。
程式**和資料 堆
共享庫 棧
核心虛擬儲存器 核心是作業系統總是駐留在儲存器中的部分。
1.7.4 檔案
檔案是位元組序列。每個i/o裝置,包括磁碟、鍵盤、顯示器,甚至於網路,都可以看成是檔案。
1.8 利用網路系統和其他系統通訊
深入理解計算機系統 計算機系統漫遊
1 程式編譯階段 以hello world 程式為例,介紹計算機系統的基本組成結構和程式的編譯過程。include int main 該程式的執行經歷這樣乙個過程 源程式首先經預處理器處理 將 include中的內容插入到源程式中,得到另乙個程式hello.i 編譯階段 hello.i程式經過編譯,...
深入理解計算機系統 計算機系統漫遊
這裡以最簡單的例子 helloworld 為例,新建乙個 hello.c 的原始檔,新增如下 include stdio.h int main 使用 gcc o hello.c hello 指令可以將原始檔轉換為可執行程式,o 選項可以指定可執行程式的名稱,不指定該選項時預設為輸出乙個 a.out ...
1 深入理解計算機系統 計算機系統漫遊
1.資訊就是 位 上下文 由 ascii字元 乙個唯一的單位元組大小的整數值來表示每個字元 構成的檔案叫文字檔案,其他所有的檔案叫二進位制檔案 2.程式被其他程式翻譯成不同格式 gcc o hello hello.c 每條 c 語句必須被其他程式轉化為一些列的低階機器語言指令。然後這些指令按照一種稱...