csapp讀書筆記1-計算機系統漫遊

數據信息

hello.c算法

#include <stdio.h>

int main()
{
    printf("hello,world\n");
    return 0;
}

文件若是隻含有ascii字符,那麼就是文本文件,若是包含其餘字符,就是二進制文件shell

編譯

hello.c通過四個步驟,生成hello可執行文件緩存

  • 預處理:讀取源文件hello.c,識別#include<stdio.h>的頭文件內容,插入源文件,生成hello.i
  • 編譯:將hello.i翻譯生成彙編代碼hello.s
  • 彙編:將hello.o翻譯生成機器語言文件hello.o
  • 連接:hello程序調用了printf,這個函數已經存放在預編譯的文件printf.o中,連接步驟就是用來將這個函數整合到hello.o中,最後生成hello文件。該文件能夠被操做系統執行

瞭解編譯系統的好處

  • 優化程序性能
  • 理解連接時出現的錯誤
  • 避免安全漏洞

計算機硬件組成

  • 總線:貫穿硬件系統的一組電子通道,在各個部件之間傳輸字節。字節數據以字(word)爲單位傳輸,現代計算機都是字長都是4字節或者8字節。有IO總線、系統總線、內存總線
  • IO設備:系統與外部聯繫的通道,每一個IO設備經過控制器或適配器與IO總線想連。圖中包含四個IO設備:鼠標、鍵盤、顯示器、硬盤
  • 主存:由一組動態隨機訪問存儲器(DRAM)組成,用來存取數據
  • 處理器:讀取執行存儲在主存中的指令。包含:程序計數器(PC),用來存儲內存中某條指令地址;寄存器文件,存儲少許數據;算法/邏輯單元(ALU),用來作簡單計算

hello執行流程

首先,當輸入"./hello"時,shell讀取輸入字符到寄存器,而後放入主內存安全

接着,當輸入回車時,shell查找硬盤上的hello文件,加載進主內存網絡

最後,cpu讀取hello程序中main函數的機器指令並執行。示例指令中,會從主存拷貝"hello,world\n"字符串的字節到寄存器文件,再從寄存器文件拷貝到顯示設備,最終顯示在屏幕併發

高速緩存

hello程序執行步驟存在大量從內存到寄存器之間的拷貝操做。相比較寄存器,在內存操做數據會慢不少,大量拷貝操做存在於兩端時,會致使內存端成爲瓶頸。爲了打破瓶頸提升性能,系統設計者提出了高速緩存的概念。它位於寄存器和主存之間。當緩存大量命中時,可減小cpu對主存數據的依賴。函數

考慮兩個高速緩存的狀況:寄存器-L1-L2-主存性能

L1和L2經過靜態隨機訪問存儲器(SRAM)硬件技術實現,L1位於處理器芯片,訪問速度媲美寄存器,L2經過特殊總線鏈接處理器,速度爲L1的5倍,主存在最後,訪問速度爲L2的5-10倍優化

存儲器層次結構

操做系統管理硬件

  • 進程:軟件上說是操做系統對正在運行的程序的抽象,硬件上說是操做系統對處理器、主存、IO設備的抽象,利用主存和IO設備存儲進程的指令和數據,利用處理器切換執行多進程
  • 線程:在進程內,共享內存和數據,更加輕量級
  • 虛擬內存:操做系統對主存和IO設備的抽象,利用主存和IO設備存儲虛擬內存的數據
  • 文件:操做系統對IO設備的抽象,操做文件就是操做各個IO設備

網絡

網絡也是一個IO設備。系統將數據從主存拷貝到網絡適配器,通過網絡,目的機器的系統讀取網絡適配器上的數據,拷貝到主存。這樣就完成了數據在網絡間的傳輸操作系統

併發與並行

現代計算機發展的兩個目標:計算機作的更多,計算機運行更快。前者也就是併發,後者也就是並行,這兩個關鍵字在現代計算機的體現以下

  • 線程級併發:一個進程中有多個控制流,採用多核處理器,可使同時執行這些控制流,以加快程序運行速度
  • 指令級並行:現代處理器能夠在一個週期處理多條指令
  • 單指令、多數據並行(SIMD並行):將一條指令拆成多條,並行執行

圖示爲四核處理器,每一個核都有本身的寄存器、L1高速緩存(分爲數據、指令)、L2高速緩存,四個核在一個芯片上,共享一個L3高速緩存,全部處理器芯片共享一個主存

抽象

總結

源程序以ascii文本形式存儲,被編譯器和連接器翻譯成可執行的二進制文件。

處理器讀取並處理二進制程序中的指令和數據時,會花費大量時間在寄存器、主存、IO設備之間拷貝數據。爲了加速該過程,系統引入高速緩存,將系統分爲cpu寄存器-高速緩存-主存-硬盤的多層結構。

操做系統內核做爲應用程序和硬件之間的媒介,提供了一層抽象。

  • 文件:對IO設備的抽象
  • 虛擬內存:對主存和IO設備的抽象
  • 進程:對處理器、主存、IO設備的抽象

虛擬機又提供了基於操做系統、處理器、主存、IO設備的抽象

網絡做爲一種特殊的IO設備,提供了計算機系統之間通訊的能力

相關文章
相關標籤/搜索