從某種意義上來說,本書的目的就是為了幫助你了解當你在系統上執行 hello 程式時,系統發生了什麼以及為什麼會這樣。系統的硬體組成包括:
匯流排
貫穿整個系統的一組電子管道,負責在各個部件之間傳遞資訊。匯流排通常被設計成傳送定長的位元組塊,也就是字(word)。
i/o 裝置
i/o 裝置是系統與外部世界的聯絡通道。
每個 i/o 裝置都通過乙個控制器或介面卡與 i/o匯流排相連。
控制器與介面卡之間的區別主要在於它們的封裝方式。控制器是 i/o裝置本身或者系統的主機板上的晶元組,而介面卡是一塊插在主機板插槽上的卡。
主存
主存是乙個臨時儲存裝置,在處理器執行程式時,用來存放程式和程式處理的資料。
物理上,儲存器是由一組dram 晶元組成。邏輯上,儲存器是乙個線性的位元組陣列,每個位元組有唯一的位址。
處理器(cpu)
是執行儲存在主存中指令的引擎,核心是程式計數器(pc),在任何時刻,pc 都指向主存中的某條機器指令。
此例子中的源**如下:
#include
int main()
每個程式都是由源**開始的,源**即文字檔案。
只由 ascii 字元構成的檔案稱為文字檔案,所有其他檔案稱為二進位制檔案。
2.3.1 程序
2.3.2 執行緒
2.3.3 虛擬記憶體
2.3.4 檔案
計算機是由硬體和系統軟體組成的,它們共同協作以執行應用程式。計算機內部的資訊被表示為一組組的位,它們依據上下文有不同的解釋方式。程式被其他程式翻譯成不同的形式,開始時是 ascii 文字,然後被編譯器和鏈結器翻譯成二進位制可執行檔案。處理器讀取並解釋存放在主存裡的二進位制指令。因為計算機花費了大量時間在記憶體、i/o裝置和cpu暫存器之間複製資料,所以將系統中的儲存裝置劃分成層次結構————cpu暫存器在頂端接著是多層的硬體快取記憶體儲存器、dram主存和磁碟儲存器。在層次模型中,位於更高層的儲存裝置比低層的儲存裝置要快,單位位元造價也高。層次結構中較高層次的儲存裝置可以作為較低層次的儲存裝置的快取記憶體。通過理解和運用這種儲存層次結構的知識,程式設計師可以優化c程式的效能。
作業系統核心是應用程式和硬體之間的媒介。它提供三個基本抽象:1)檔案是對i/o裝置的抽象;2)虛擬記憶體是對主存和磁碟的抽象;3)程序是處理器、主存和i/o裝置的抽象。
最後,網路提供了計算機系統之間通訊的手段。從特殊角度看,網路就是一種i/o裝置。
CSAPP學習筆記 第一章 計算機系統漫遊
1.計算機系統是由硬體和系統軟體組成的 2.本書闡述了計算機元件是如何工作的以及執行元件是如何影響程式正確性和效能的。3.通過跟蹤hello程式的生命週期來開始對系統的學習。include int main 1.hello程式的生命週期始於源程式 源程式是由一系列的位序列組成的,8個位被組織成一組,...
第一章 計算機系統漫遊
一開始翻開書,大量的新概念,密集的知識,這不是讓人頭疼的主要原因。這本書於我而言,不僅僅是提公升計算機基礎那麼簡單,更多的是,放下那顆浮躁的心,同時接受自己的平凡,放慢腳步,腳踏實地。一開始連進製轉換都整不明白的我,經過乙個多月的 心靈洗禮 漸漸對書本上的概念有了那麼一點點感覺,更重要的是,沒有那麼...
第一章,計算機系統漫遊
1.1 資訊就是位 上下文 大部分的現在計算機系統都使用 ascii 標準來表示文字字元,hello.c程式是以位元組序列的方式儲存在檔案中的。系統中所有的資訊 包括磁碟檔案 記憶體中的程式 記憶體中存放的使用者資料以及網路上傳送的資料,都是由一串位元表示的。區分不同資料物件的唯一方法時我們讀到這些...