深刻理解計算機系統第一章
深刻理解計算機系統
1.1
- 010101(比特序列)八位一字節,一字節表示某些文本字符。ASCII即用單字節大小的整數值表示字符
- 只有ASCII碼字符構成的文件爲文本文件,其餘爲二進制文件
1.2
- 預處理
- 根據#讀取頭文件中內容並插入原文本文件.c獲得.i文本文件
- 編譯
- 編譯器(ccl)將.i文本文件翻譯成.s文本文件,包含彙編語言程序
- 彙編
- 將.s翻譯成機械語言指令,打包成可重定位目標程序格式,保存在.o二進制文件中
- 連接
- 調用printf.o中的printf函數,合併入.o程序,變爲可執行目標文件
1.3
1.4
shell是一個命令行解釋器shell
1.4.1
- 總線
- 貫穿整個系統,攜帶並傳遞信息字節,一般傳輸定長的字節塊:32位——4字節,64位——8字節
- I/O設備
- 輸入/輸出設備(In/Out)聯繫系統與外部:鍵鼠、顯示器、磁盤……
- I/O設備經過控制器或適配器與I/O總線相連。相同的是,控制器和適配器用於在I/O設備和總線之間傳遞信息。不一樣的是,控制器是設備自己或系統的主板上的芯片組,適配器是插在主板插槽上的
- 主存
- 主存在處理執行程序時用來存放程序和程序處理的數據。物理上是由一組動態隨機存取存儲器(DRAM)芯片組成。邏輯上是一個線性字節數組
- 處理器
- CPU解釋主存中指令,核心是程序計數器(PC)(此處核心指關鍵設備),爲一字大小儲存設備,PC始終指向主存中某條機械語言指令
- 處理器從PC指向的內存處讀取、結束、執行指令,而後更新PC
1.5
- 存儲空間越大,運行越慢。因而在空間小的高速處理器與空間大的低速主存之間插入高速緩存(cache),利用高速緩存的局部性原理,在高速內存中存放可能常常訪問的數據,使大部分操做可在高速緩存中完成。
1.6
- 經過一個從小到大,從快到慢(寄存器->高速緩存->主存->二級存儲)的存儲器層次結構,能夠提升程序的性能。
1.7
- 操做系統鏈接程序和硬件。
- 操做系統的基本功能:
- 防止硬件被失控的應用程序濫用
- 嚮應用程序提供簡單一致的機制來控制複雜的低級硬件設備
1.7.1
- 進程是計算機科學中最重要和最成功的概念之一
- 處理器看似併發運行程序,實則交錯切換執行。例如須要運行的進程數多於可運行CPU。被稱爲上下文切換:保存當前進程的上下文、恢復新進程的上下文,將控制權傳遞到新進程。
- 進程轉換由系統內核(kernel)管理,內核是操做系統代碼常駐主存的部分,它是系統管理所有進程所用代碼和數據結構的集合。
- 第八章
1.7.2
1.7.3
低地址數組
- 程序代碼與數據——在開始就被規定大小
- 堆——在運行是可動態擴展或收縮
- 共享庫——存放C標準庫和數學庫這樣的公用代碼(第七章)
- 棧——編譯器用它來實現函數調用,調用增加,返回收縮(第三章)
- 內存虛擬內存——爲內核保留,不容許程序讀寫或調用
高地址緩存
1.7.4
1.8
- 網絡可視爲一個I/O設備,多個系統經過網絡讀取/發送其餘/本身的數據
1.9
1.9.1
- Amdahl定律:想要顯著加速整個系統,必須提高全系統中至關大的部分的速度(考慮到分權)
1.9.2
- 併發:一個同時具備多個活動的系統
- 並行:用併發來使一個系統運行地更快
- 線程級併發
- 咱們可以設計出同時有多個程序執行的系統,這致使了併發
- 超線程/同時多線程容許一個cpu執行多個控制流
- 指令級並行
- 流水線經過將執行一條指令所須要的活動劃分爲不一樣的步驟,將處理器的硬件組織成一系列的階段,每一個階段執行一個步驟。這些階段能夠並行地操做,用來處理不一樣指令的不一樣部分
- 單指令、多數據並行
- 在最低層次上,一些特殊的硬件容許一條指令產生多個可並行執行的操做,這種方式被稱爲單指令、多數據。
1.9.3
- 抽象的使用是計算機科學中最爲重要的概念之一。
- 文件是多I/O設備的抽象,虛擬內存是對程序存儲器的抽象,進程是對一個正在運行的程序的抽象,虛擬機是對整個計算機的抽象。
歡迎關注本站公眾號,獲取更多信息