深刻理解計算機系統(第三版)

第七章 連接linux

  連接是將各類代碼和數據片斷收集並組合成爲一個單一文件的過程。(在軟件開發中實現分離編譯)web

7.1 編譯器驅動程序編程

7.2 靜態連接緩存

  • 符號解析:將每一個符號的引用與一個符號的定義關聯起來。
  • 重定位:編譯器和彙編器生成從地址0開始的代碼和數據節,連接器經過把每一個符號定義與一個內存位置關聯起來,從而重定位這些節,而後修改全部對這些符號的引用,使得它們指向這個內存位置。

7.3 目標文件服務器

編譯器和彙編器生成可重定位目標文件,連接器生成可執行目標文件。網絡

7.4 可重定位目標文件數據結構

7.5 符號和符號表多線程

7.6 符號解析★併發

7.7 重定位★socket

重定位節和符號定義

重定位節中的符號引用-重定位條目

7.8 可執行目標文件

7.9 加載可執行目標文件

7.10 動態連接共享庫

7.11 從應用程序中連接和加載共享庫

7.12 位置無關代碼

7.13 庫打樁機制(linux連接器)

7.14 處理目標文件的工具

 

第八章 異常控制流(ECF--Exceptional Control Flow)

8.1 異常

(1)異常類別:中斷、陷阱、故障、終止

8.2 進程——一個執行中程序的實例

(1)進程提供給應用程序的關鍵抽象:

  • 一個獨立的邏輯控制流,它提供一個假象,好像咱們的程序獨佔地使用初處理器。
  • 一個私有的地址空間,它提供一個假象,好像咱們的程序獨佔地使用內存系統。

(2)併發流——一個邏輯流的執行時間與另外一個流重疊。

(3)上下文切換——操做系統內核採用的一種較高形式的異常控制流來實現多任務。

  內核爲每一個進程維持一個上下文,上下文就是內核從新啓動一個被搶佔進程所需的狀態。它由一些對象的值組成,這些對象包括通用目的寄存器、浮點寄存器、程序計數器、用戶棧、狀態寄存器、內核棧和各類內核數據結構,好比描述地址空間的頁表、包含有關當前進程信息的進程表,以及包含進程已打開文件的信息的文件表。

(4)信號——就是一條消息,它通知進程系統發生了一個某種類型的事件,而且容許進程和內核中斷其餘進程。

(5)非本地跳轉

 

第九章 虛擬內存

9.1 物理和虛擬內存

  物理尋址和虛擬尋址

9.2 地址空間——非負整數地址的有序集合

9.3 虛擬內存做爲緩存的工具★

9.4 虛擬內存做爲內存管理的工具

9.5 虛擬內存做爲內存保護的工具

9.6 地址翻譯★

9.7 案例研究:Intel Core i7/Linux 內存系統★

9.8 內存映射

9.9 動態內存分配★

9.10 垃圾收集

9.11 C程序中常見的與內存有關的錯誤

 

第十章 系統級I/O

  輸入輸出(I/O)是在主存和外部設備(例如磁盤驅動器、終端和網絡)之間複製數據的過程。

10.1 Unix I/O

10.2 文件(介紹了linux的文件和目錄)

10.3 打開和關閉文件(open和close函數)

10.4 讀和寫文件(read和write函數)

10.5 用RIO包健壯地讀寫

  • 無緩衝的輸入輸出函數
  • 帶緩衝的輸入函數

10.6 讀取文件元數據(stat和fstat函數)

10.7 讀取目錄內容(readdir函數)

10.8 共享文件

10.9 I/O重定向

10.10 標準I/O

10.11 綜合:我該使用哪些I/O函數?

 

第十一章 網絡編程

11.1 客戶端-服務器編程模型

11.2 網絡

11.3 全球IP因特網

11.4 套接字接口(socket interface)

11.5 web服務器

11.6 綜合:TINY WEB服務器(實例學習)

 

第十二章 併發編程

  三種構造併發程序的方法:

  • 進程:每一個邏輯控制流都是一個進程,由內核來調度和維護。由於進程都有獨立的虛擬地址空間,想要和其餘流通訊,控制流必須使用某種顯式的進程間通訊(IPC)機制。
  • I/O多路複用:一個應用程序在一個進程的上下文中顯式地調度它們本身的邏輯流。邏輯被模型化爲狀態機,數據到達文件描述符後,主程序顯式地從一個狀態轉換到另外一個狀態,由於程序是一個單獨的進程,因此全部的流都共享同一個地址空間。
  • 線程:是一個運行在單一進程上下文中的邏輯流,由內核進行調度。能夠將線程看做是其餘兩種方法的混合體,像進程流同樣又內核進行調度,又像I/O多路複用流同樣共性同一個虛擬地址空間。

12.1 基於進程的併發編程

  一個構造併發服務器的天然方法是,在父進程接受客戶端的鏈接請求後,建立一個新子進程爲每一個新客戶端提供服務。

12.2 基於I/O多路複用的併發編程

  基本思路:使用select函數,要求內核掛起進程,只有在一個或多個I/O事件發生後,纔將控制返回給應用程序。

12.3 基於線程的併發編程

12.4 多線程程序中的共享變量

12.5 用信號量同步線程

12.6 使用線程提升並行性

相關文章
相關標籤/搜索