SLP(Chapter 0、1):緒論

why 《系統級編程》?

通過操作系統(OS)課程我們明白了進程管理,同步互斥,虛擬內存管理,文件管理
但我們仍然不清楚進程化爲進程映像後,程序究竟是如何執行的?
因此當程序運行出現問題時,很難準確定位錯誤

Some Question

  1. What is Computer System?
    A computer system is a collection of hardware and software components that work together to run computer programs.
    (通過層次,抽象,轉化得到以下層次)
    computer system level
  2. 操作系統有兩個主要目的:
    (1) 保護硬件不被失控的應用程序濫用;
    (2) 爲應用程序提供簡單和統一的機制,用於操作複雜和不同的低級硬件設備。
    os
    文件是 I/O 設備的抽象。
    虛擬內存是主內存和磁盤 I/O 設備的抽象。
    進程是處理器、主內存和 I/O 設備的抽象。
  3. What is Computer Program?
    Computer programs are instructions for a computer.

程序運行過程

1. 源代碼

同時使用位信息和上下文表示

位信息 (information of bits) : 都是使用位表示信息
上下文 (context) : 不同上下文同樣的位信息可以是整型或者字符串

2. 編譯(源代碼 → 硬件可識別的機器碼)

完成變量表

3. 執行(可執行程序→進程印像)

總線:就像我們人體中的血管,用於在部件之間來回傳遞信息。
通常設計爲傳輸固定大小的字節塊(稱爲word)。
傳輸的信息包括地址、數據和控制信號。

CPU(計算機的核心): 負責執行指令。
程序計數器(PC)將告訴下一次要執行的指令,ALU 將執行計算和邏輯操作。準備使用的說明和數據存儲在寄存器中。
創建進程時,指令將由 CPU 逐個執行。
execute
南橋:I/O系統間總線管理(離CPU遠)
北橋:CPU,內存,圖像處理器等離CPU近的總線管理(被集成到CPU裏)
爲什麼需要 I/O 橋?I/O 總線通信的管理

進程

context switch
進程是運行程序的操作系統的抽象。
併發:多個進程可以在同一個系統上同時運行,並且每個進程似乎都有硬件的獨佔使用。不同流程的指令是交錯執行的。
爲了保持每個進程正常運行,系統將保持每個進程的狀態。狀態稱爲上下文。它包含 PC 的當前值、寄存器文件和主內存的內容。當操作系統決定將控制從當前進程轉移到某個新進程時,它
通過保存當前進程的上下文、還原新進程的上下文,然後將控制權傳遞給新進程,執行上下文切換。

虛擬內存(進程印像)

在進程的幫助下,操作系統提供了一種錯覺,認爲程序是唯一在系統上運行的程序。
虛擬內存在提供錯覺中起着重要的作用。每個進程具有相同的統一內存視圖,稱爲其虛擬地址空間。(Linux 進程的虛擬地址空間如圖所示。Windows 系統使用類似的佈局。)請注意,圖中的地址從底部增加到頂部。
紅色矩形中的地址空間保留給__操作系統中的代碼和數據__。
綠色矩形中的地址空間包含__用戶進程定義的代碼和數據__。您可以經常在圖上討論棧和堆。請注意,棧和堆朝相反的方向增長。這就是爲什麼在問題 1 中,定義變量 i 和數組的順序將導致不同的性能。
藍色矩形,這是我們使用函數訪問 IO 設備的文件抽象的地方。
第3、7和10章將討論詳細內容。這些主題對於避免安全錯誤非常重要。
virtual address space

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章