第七章 連接linux
連接是將各類代碼和數據片斷收集並組合成爲一個單一文件的過程。(在軟件開發中實現分離編譯)web
7.1 編譯器驅動程序編程
7.2 靜態連接緩存
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服務器(實例學習)
第十二章 併發編程
三種構造併發程序的方法:
12.1 基於進程的併發編程
一個構造併發服務器的天然方法是,在父進程接受客戶端的鏈接請求後,建立一個新子進程爲每一個新客戶端提供服務。
12.2 基於I/O多路複用的併發編程
基本思路:使用select函數,要求內核掛起進程,只有在一個或多個I/O事件發生後,纔將控制返回給應用程序。
12.3 基於線程的併發編程
12.4 多線程程序中的共享變量
12.5 用信號量同步線程
12.6 使用線程提升並行性