1 深入理解計算機系統 計算機系統漫遊

2021-07-24 12:38:34 字數 2580 閱讀 2645

1.資訊就是 位 + 上下文

由 ascii字元(乙個唯一的單位元組大小的整數值來表示每個字元)構成的檔案叫文字檔案,

其他所有的檔案叫二進位制檔案

2.程式被其他程式翻譯成不同格式

gcc -o hello hello.c

每條 c 語句必須被其他程式轉化為一些列的低階機器語言指令。

然後這些指令按照一種稱為可執行目標的格式打包好,

並以二進位制磁碟檔案的形式存放起來。目標程式也稱為可執行目標檔案。

3.處理器讀並解釋儲存在儲存器中的指令

1.匯流排:貫穿整個系統的一組電子管道,稱作匯流排。通常匯流排被設計成傳送定長的位元組塊,也就是字(word)。

2.i/o 裝置:輸入/輸出(i/o)裝置是系統與外界的聯絡通道。每個i/o 裝置都通過乙個控制器或

者介面卡與 i/o 匯流排相連。

控制器和介面卡之前的區別主要在於他們的封裝方式。控制器是置於 i/o 裝置本身的或者系統的

主印製電路板(通常稱為主機板)上的晶元組,而介面卡則是一塊插在主機板插槽上的卡。

3.主存:主存是乙個臨時儲存裝置,在處理器執行程式時,用來存放程式和程式處理的資料。

從物理上來說,主存是一組動態隨機訪問儲存器(dram)晶元組成的。從邏輯上來說,

儲存器是乙個線性的位元組陣列,每個位元組都有唯一的位址(即陣列索引)。即這些位址是從0開始的。

一般來說,組成程式的每條機器指令都由不同的位元組構成。如 int ,2個位元組。

4.處理器:解釋和執行儲存在主存中指令的引擎。處理器的核心是乙個字長的儲存裝置,稱為程式計數器(pc)。

任何時候,pc都指向主存中的某條機器語言指令

4. 作業系統管理硬體

作業系統有兩個基本功能:1.防止硬體被失控的應用程式濫用;

2.向應用程式提供簡單一致的機制來控制複雜而又通常大相徑庭的低階硬體裝置。

作業系統通過幾個基本的抽象概念(程序,虛擬儲存器和檔案)來實現這兩個功能。

如果所示,檔案是對 i/o 裝置的抽象表示,虛擬儲存器是對主存和磁碟 i/o 裝置的抽象表示,

程序則是對處理器,主存和 i/o 裝置的抽象表示

程序是指作業系統對乙個正在執行的程式的乙個抽象。併發執行是說,乙個程序的指令和另外乙個程序是交錯執行的。

傳統作業系統在乙個時刻只能執行乙個程式,而先進的多核處理器能同時處理多個程式。

無論單核還是多核,乙個 cpu 看上去都像是在併發的執行多個程序,這是通過處理器在程序間的切換來實現的。

作業系統實現這種交錯執行的機制,稱為上下文切換。

執行緒:通常我們認為乙個程序只有單一的控制流,但在現代系統中,乙個程序實際上可以由多個稱為執行緒的執行單元組成。

每個執行緒都執行在程序的上下文中,並共享同樣的**和全域性資料。

5.虛擬儲存器

虛擬儲存器是:乙個抽象概念,它為每個程序提供了乙個假象,即每個程序都在獨佔的使用主存。

-程式和**區:**和資料區是直接按照可執行目標檔案的內容初始化的,是在程序一開始時就被規定了大小的

-堆:當呼叫 malloc 和 free 這樣的 c 標準庫時,堆可以在執行時動態的擴充套件和伸縮

-共享庫:存放 c 標準庫和數學庫這樣的共享庫的**和資料區域

-棧:編譯器用它來實現函式呼叫

-核心虛擬儲存器:核心總是駐留在記憶體中,是作業系統的一部分

6.檔案

檔案就是位元組序列,每個 i/o 裝置,包括磁碟,鍵盤,顯示器,甚至網路,都可以視為檔案。

系統中所有的輸入輸出都是通過使用一小組稱為 unix i/o 的系統函式呼叫讀寫檔案來實現的。

7. 併發和並行

併發和並行從巨集觀上來講都是同時處理多路請求的概念。但併發和並行又有區別,

並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔內發生。

1. 執行緒級併發

2. 指令級並行

3. 單指令,多資料並行

深入理解計算機系統 計算機系統漫遊

第一章 計算機系統漫遊 計算機系統是由硬體和系統軟體組成的。所有計算機系統都是由相似的硬體和軟體組成,它們又執行著相似的功能。以hello程式為例。1.1資訊就是位 上下文 hello程式的生命是從源程式 原始檔 開始的。源程式是程式設計師編寫的,hello.c。源程式是 0和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 ...