第1章 计算机系统漫游
第1章 計算機系統漫游
- 1 信息就是位 + 上下文
- 2 程序被其他程序翻譯成不同的格式
- 3 了解編譯系統如何工作是大有益處的
- 4 處理器讀并解釋儲存在內存中的指令
- 4.1 系統的硬件組成
- 4.2 運行hello程序
- 5 調整緩存至關重要
- 6 存儲設備形成層次結構
- 7 操作系統管理硬件
- 7.1 進程
- 7.2 線程
- 7.3 虛擬內存
- 7.4 文件
- 8 系統之間利用網絡通信
- 9重要主題
- 9.1 Amdahl定律
- 9.2 并行和并發
- 9.3 計算機系統中抽象的重要性
- 10 小結
1 信息就是位 + 上下文
??
系統中所有的信息——包括磁盤文件、內存中的程序、內存中存放的用戶數據以及網絡上傳送的數據,都是由一串比特表示的。區分不同數據對象的唯一方法是我們講到這些數據對象時的上下文。比如,在不同上下文中,一個同樣的字節序列可能表示一個整數、浮點數、字符串或機器指令。
2 程序被其他程序翻譯成不同的格式
??
C語言從源文件到翻譯成可執行目標文件,有4個階段:預處理、編譯、匯編、鏈接。
3 了解編譯系統如何工作是大有益處的
??
益處:
- 優化程序性能;
- 理解鏈接時出現的錯誤;
- 避免安全漏洞。
4 處理器讀并解釋儲存在內存中的指令
4.1 系統的硬件組成
??
總線
貫穿整個系統的是一組電子管道,稱作總線,它攜帶信息字節并負責在各個部件間傳遞。通常被設計成傳送"字"。"字"的字節數各個系統不盡相同,大多數32位是4字節,64位是8字節。
I/O設備
I/O(輸入/輸出)設備:是系統與外部世界的聯系通道,包括鍵盤、鼠標、顯示器、磁盤(存儲數據和程序)。每個I/O設備都通過一個控制器或適配器與I/O總線相連。
控制器:I/O設備本身或者系統的主印制電路板(主板)上芯片組。
適配器:一塊插在主板插槽上的卡。二者功能都是在I/O總線和I/O設備之間傳遞信息。
主存
主存:是一個臨時存儲設備,在處理器執行程序時,用來存放程序和程序處理的數據。從物理上說,主存是一組動態隨機存取存儲器(DRAM)芯片組成的。從邏輯上說,存儲器是一個線性的字節數組,每個字節都有其唯一的地址(數組索引),從0開始。
處理器
中央處理單元(cpu):簡稱處理器,是解釋(或執行)存儲在主存中指令的引擎,其核心是一個大小為一個字的存儲設備(或寄存器),稱為程序計數器(PC),在任何時刻,PC都指向主存中的某條機器語言指令(即PC保存了此指令的地址)。
從系統通電到斷電,處理器不斷執行PC指向的指令,執行后更新PC,指向下一條指令(并不一定相鄰)。這些指令主要圍繞:主存、寄存器文件(register file)、和算術/邏輯單元(ALU)進行。
寄存器文件(register file):是由一個小的存儲設備,由一些單個字長的寄存器組成,每個寄存器都有唯一的名字,如ax、bx、cs、sp等。
ALU計算新的數據的地址值。
CPU在指令的要求下可能會執行以下操作:
| 加載 | 從主存復制一個字節或字到寄存器,以覆蓋寄存器原來的內容。 | mov ax, ds:[0] |
| 存儲 | 從寄存器復制一個字節或者字到主存的某個位置,以覆蓋此位置上原來的內容。 | mov ds:[0], ax |
| 操作 | 把兩個寄存器的內容復制到ALU,ALU對這兩個字做算術運算,并將結果存放到一個寄存器中,以覆蓋該寄存器中原來的內容。 | add ax, bx |
| 跳轉 | 從指令本身中抽取一個字,并將這個字復制到程序計數器(PC)中,以覆蓋PC中原來的值。 | jmp 2ae3:3,修改cs:ip的值,3就是要放到PC中的數據 |
我們將處理器的指令集架構和微體系結構 區分開來,指令集架構描述的是每條機器代碼指令的效果,微體系結構描述的是處理器實際上是如何實現的。
4.2 運行hello程序
??
[ ] 待截圖
5 調整緩存至關重要
??
運行hello程序的過程:
- 計算機從磁盤讀取編譯后的hello程序到主存;
- 當cpu運行程序時,將指令從主存復制到cpu(運行一條,復制一條);
- 也會將hello world這個數據復制到cpu;
- 最后還會從主存復制到顯示設備。
- 運行一個程序會進行很多復制步驟,這個就是開銷,所以要盡量加快這些復制操作的完成。
??
高速緩存存儲器(cache memory,簡稱cache或高速緩存):用于存放處理器近期可能會需要的信息,因為讀取數據的速度:寄存器文件速度 ≈ L1高速緩存 = 5倍L2高速緩存 = 10倍主存,容量:寄存器文件速度< L1高速緩存 < L2高速緩存數據 < 主存。
L1和L2高速緩存是用一種叫做靜態隨機訪問存儲器(SRAM)。
6 存儲設備形成層次結構
??
存儲器層次結構的主要思想是上一層的存儲器作為主低一層存儲器的高速緩存。因此,L1是L2的高速緩存,L2是L3的高速緩存…。
7 操作系統管理硬件
??
所有應用程序都不能直接訪問處理器、主存、I/O設備,必須通過操作系統提供的服務。
操作系統的兩個基本功能:(1)防止硬件被失控的應用程序濫用;(2)向應用程序提供簡單一致的機制來控制復雜而又通常大不相同的低級硬件設備。操作系統通過(進程、虛擬內存和文件)這幾個基本的抽象概念來實現這兩個功能。
文件是I/O的抽象:輸入和輸出數據的最終結果是文件。
虛擬內存是對主存和磁盤I/O設備的抽象:怎么說?
進程是對處理器、主存、和I/O設備的抽象:怎么說?
7.1 進程
??
進程是操作系統對一個正在運行運行的程序的一種抽象。在一個系統上可以同時運行多個進程,而每個進程都好像在獨占地使用硬件。
并發運行:一個進程的指令和另一個進程的指令是交錯執行的。
上下文切換:在任何一個時刻,單處理器系統都只能執行一個進程的代碼,當操作系統決定要把控制權從當前進程轉移到某個新進程時,就會進行上下文切換,即保存當前進程的上下文、恢復新進程的上下文,然后將控制權傳遞到新進程。上下文包括許多信息,如PC和寄存器文件的當前值,以及主存的內容。
操作系統內核:從一個進程到另一個進程的轉換是由操作系統內核管理的,內核是操作系統代碼常駐主存的部分。當應用程序需要操作系統的某些操作時,如讀寫文件,它就執行一條特殊的系統調用指令,將控制權傳遞給內核,然后內核執行被請求的操作并返回應用程序。
7.2 線程
??
一個進程實際可以由多個稱為線程的執行單元組成,每個線程都運行在進程的上下文中,并共享同樣的代碼和全局數據。
7.3 虛擬內存
??
虛擬內存是一個抽象概念,它為每個進程提供了一個假象,即每個進程都在獨占地使用主存,每個進程看到的內存都是一致的,稱為虛擬地址空間。地址空間底部地址為0,頂部最大。
每個進程看到的虛擬地址空間由大量準確定論的區構成,每個區有專門的功能,從下往上依次是:
- 程序代碼和數據;
- 堆;
- 共享庫;
- 棧;
- 內核虛擬內存:頂部區域是為內核保留的,不允許應用程序讀寫這個區域的內容或者直接調用內核代碼定義的函數。
7.4 文件
??
文件就是字節序列,每個I/O設備,包括磁盤、鍵盤、顯示器,甚至網絡,都可以看成是文件。系統中的所有輸入輸出都是通過使用一小組稱為Unix I/O的系統函數調用讀寫文件來實現的。
8 系統之間利用網絡通信
??
當系統從主存復制一串字節互網絡適配器,數據流經過網絡到達另一臺機器,而不是比如說到達本地磁盤驅動器。相似地,系統可以讀取從其它機器發送來的數據,并把數據復制到自己的主存。
截圖
9重要主題
9.1 Amdahl定律
??
Amdahl定律:當我們對系統的某個部分加速時,其對系統整體性能的影響取決于該部分的重要性和加速程度,要想顯著加速整個系統,必須提升全系統中相當大的部分的速度。
假設系統運行1步驟的時間占總時間的比例為α,此步驟的運行速度提高了k倍,Told/Tnew=1/[(1?α)+α/k]T_{old} / T_{new} = 1/[(1 - α) + α / k]Told?/Tnew?=1/[(1?α)+α/k],當k無限大時,則 Told/Tnew≈1/(1?α)T_{old} / T_{new} ≈ 1/ (1 - α)Told?/Tnew?≈1/(1?α)。
9.2 并行和并發
??
對于計算機,有兩個驅動進步的持續動力:想讓計算機做得更多(并行),和想讓計算機運行得更快(并發)。
并發:指一個同時具有多個活動的系統,比如眼睛一邊看電視,一邊看手機,其實是不斷切換著來的。
并行:指用并發來使一個系統運行得更快,比如一邊坐公交,一邊聽音樂,是同時進行的。
按照系統層次結構中由高到低的順序強調三個層次:
1. 線程級并發
單處理器系統的并發:處理器在某一時間只能處理一個進程,所顯示的多個進程同時進行,只是處理器在不斷切換。
多核處理器:是將多個cpu(核)集成到一個集成電路芯片上。典型的多核處理器的每個核心都有自己的L1和L2高速緩存,其中L1高速緩存分為兩個部分——數據緩存和指令緩存,所有的核共享更高層次的調整緩存,以及到主存的接口。
超線程:又稱同時多線程,這個是真正做到一個cpu同時進行多個線程,它涉及cpu某些硬件有多個備份,比如PC和寄存器文件,而其它的硬件部分只有一份,比如執行浮點算術運算的單元。超線程器可以在單個周期的基礎上決定要執行哪一個線程。
2. 指令級并行
指令級并行:在較低的抽象層次上,現代處理器可以同時執行多條指令的屬性。
以前需要3-10個時鐘周期來執行一條指令。現代處理器可以保持1個時鐘周期2-4條指令的執行速率。
超標量處理器:處理器可以達到比一個周期一條指令更快的執行速率。
3. 單指令、多數據并行
單指令、多數據:即SIMD并行,在最低層次上,許多現代處理器擁有特殊的硬件,允許一條指令產生多個可以并行執行的操作。
9.3 計算機系統中抽象的重要性
??
虛擬機:它提供對整個計算機的抽象,包括操作系統、處理器和程序。
10 小結
??
計算機系統是由硬件和系統軟件組成的,它們共同協作以運行應用程序。計算機內部的信息被表示為一組組的位,依據上下文有不同的解釋。程序被其它程序翻譯成不同的形式,開始時是ascii文本,然后被編譯器和鏈接器翻譯成二進制可執行文件。
處理器讀取并解釋存放在主存里的二進制指令。因為計算機花費了大量的時間在內存、I/O設備和cpu寄存器之間復制數據,所以將系統中的存儲設備劃分成層次結構——cpu寄存器在頂部,接著是多層的硬件高速緩存存儲器、DRAM主存的磁盤存儲器。在層次模型中,位于更高層的存儲設備比低層的存儲設備要更快,單位比特造價也更高。較高層次的存儲設備可以作為較低層次設備的高速緩存。
操作系統內核是應用程序和硬件之間的媒介,提供了三個基本抽象:文件是對I/O設備的抽象;虛擬內存是對主存和磁盤的抽象;進程是處理器、主存和I/O設備的抽象。
從特殊系統的角度看,網絡就是一種I/O設備。
總結
以上是生活随笔為你收集整理的第1章 计算机系统漫游的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SwitchyOmega代理插件的安装与
- 下一篇: Clickhouse如何实现数据更新