深入理解UNIX系統核心

深入理解UNIX系統核心

《深入理解UNIX系統核心》是2015年5月由機械工業出版社出版的一本圖書,作者是[美] Uresh Vahalia 。

基本介紹

  • 書名:深入理解UNIX系統核心
  • 作者:[美] Uresh Vahalia 
  • 譯者李雨薛磊黃慶新
  • ISBN:9787111491453
  • 頁數:484
  • 定價:119.00
  • 出版社機械工業出版社
  • 出版時間:2015年5月1日
  • 裝幀:平裝
  • 開本:16開
  • 版次:1 
內容簡介,作者簡介,圖書目錄,

內容簡介

《深入理解UNIX系統核心》由國際資深UNIX專家撰寫,深入剖析UNIX作業系統的核心技術,包含豐富的圖示與細節展示。作者從作業系統設計的角度來審視UNIX系統核心,針對核心中的每個模組,深入探討其結構和設計,詳細闡釋主流UNIX系統如何選擇具體模組的實現方法,以及每種方法的優缺點,為讀者更好地理解作業系統核心知識、提升作業系統開發能力提供翔實指導。
《深入理解UNIX系統核心》共17章:第1章追溯UNIX系統的演變並分析影響系統主要變化的因素;第2~7章介紹進程子系統,包括執行緒及其在核心和用戶庫中的實現,信號、作業控制及登錄會話管理,UNIX調度器和對實時應用程式的支持,進程間通信的技術(IPC),Mach系統架構,以及在現代單處理器和多處理器系統中套用的同步框架;第8~11章介紹檔案系統,內容涵蓋用戶可見的檔案系統接口、定義核心和檔案系統互動的vnode/vfs接口,原始的System V檔案系統(s5fs)和伯克利快速檔案系統(FFS)等一些具體檔案系統的實現細節,還包括太陽微系統的網路檔案系統(NFS)、AT&T的遠程檔案共享(RFS)和Transarc公司的分散式檔案系統(DFS)等分散式檔案系統,以及一些使用日誌提供更高可靠性和性能的高級檔案系統,同時介紹一種基於堆疊式vnode層的新檔案系統框架;第12~15章介紹記憶體管理,涉及核心記憶體分配、虛擬記憶體的概念、SVR4和Solaris的虛擬記憶體架構、Mach和4.4BSD記憶體模型,以及旁路轉換緩衝和虛擬地址快取;第16~17章主要介紹I/O子系統,內容包括設備驅動程式框架、核心與I/O子系統的互動、SVR4設備驅動程式接口、核心與驅動程式互動接口規範,以及STREAMS框架。

作者簡介

Uresh Vahalia,EMC公司副總裁,主管企業存儲部門,領導美國和印度團隊構建EMC下一代存儲產品。Uresh專注於作業系統和存儲技術的研發,在存儲和作業系統領域擁有30餘項專利和科研著作,並多次代表EMC參加SNIA、IEEE、CIFS和NFSv4工作組的行業論壇及專家座談。
李雨,阿里巴巴(中國)有限公司資深核心開發工程師,參與Linux核心的開發與維護,涉及記憶體管理、設備驅動等多個子系統,主要負責Linux核心的網路協定棧。他的研究興趣是Linux核心和網路技術。
薛磊,現就職甲骨文系統研發中心,負責Solaris核心中網路協定的開發。他是開源的擁躉,開發並維護了一些開源工具軟體,還負責Solaris核心中iSCSI協定、iSER協定的開發和維護。
黃慶新,畢業於廈門大學,曾是華為程式設計師,參與了標準協定棧(TCP/IP)和電信業務網關的開發。現就職於福建某網路公司,從事底層開發工作。

圖書目錄

出版者的話
譯者序
序言
前言
第1章 從頭說起
1.1簡介
1.1.1 UNIX簡史
1.1.2 起源
1.1.3 擴散
1.1.4 BSD
1.1.5 System V
1.1.6 商業化
1.1.7 Mach
1.1.8 標準
1.1.9 OSF和UI
1.1.10 SVR4及其之後
1.2 變革使命
1.2.1 功能
1.2.2 網路
1.2.3 性能
1.2.4 硬體變化
1.2.5 質量提升
1.2.6 變革
1.2.7 其他應用程式領域
1.2.8 小即是美
1.2.9 靈活性
1.3 回顧過去,展望未來
1.3.1 UNIX系統的優點是什麼
1.3.2 UNIX系統的缺點是什麼
1.4 本書內容說明
參考文獻
第2章 進程與核心
2.1 簡介
2.2 模式、空間和上下文
2.3 進程抽象
2.3.1進程狀態
2.3.2 進程上下文
2.3.3 用戶憑據
2.3.4 u區和proc結構
2.4 執行在核心態中
2.4.1 系統調用接口
2.4.2 中斷處理
2.5 同步
2.5.1 阻塞操作
2.5.2 中斷
2.5.3 多處理器
2.6 進程調度
2.7 信號
2.8 新的進程和程式
2.8.1 fork和exec
2.8.2 進程的創建
2.8.3 fork的最佳化
2.8.4 調用新的程式
2.8.5 進程終止
2.8.6 等待進程終止
2.8.7 僵死進程
2.9 小結
2.10 練習題
參考文獻
第3章 執行緒和輕量級進程
3.1 簡介
3.1.1 動機
3.1.2 多執行緒和多處理器
3.1.3 並發和並行
3.2 基本抽象
3.2.1 核心執行緒
3.2.2 輕量級進程
3.2.3 用戶執行緒
3.3 輕量級執行緒設計時要考慮的問題
3.3.1 fork的語義
3.3.2 其他系統調用
3.3.3 信號傳遞和處理
3.3.4 可見性
3.3.5 棧增長
3.4 用戶級別的執行緒庫
3.4.1 編程接口
3.4.2 執行緒庫的實現
3.5 調度器激活
3.6 Solaris和SVR4上的多執行緒
3.6.1 核心執行緒
3.6.2 輕量級進程的實現
3.6.3 用戶執行緒
3.6.4 用戶執行緒的實現
3.6.5 中斷處理
3.6.6 系統調用處理
3.7 Mach的執行緒
3.7.1 Mach抽象:任務和執行緒
3.7.2 Mach的C-threads
3.8 Digital UNIX
3.8.1 UNIX接口
3.8.2 系統調用和信號
3.8.3 pthreads庫
3.9 Mach 3.0的continuation
3.9.1 編程模型
3.9.2 使用continuation
3.9.3 最佳化
3.9.4 分析
3.10 小結
3.11 練習題
參考文獻
第4章 信號和會話管理
4.1 簡介
4.2 信號生成和處理
4.2.1 信號處理
4.2.2 信號的生成
4.2.3 典型場景
4.2.4 睡眠與信號
4.3 不可靠的信號
4.4 可靠的信號
4.4.1 主要特性
4.4.2 SVR3實現
4.4.3 BSD信號管理
4.5 SVR4上的信號
4.6 信號的實現
4.6.1 信號生成
4.6.2 交付和處理
4.7 異常
4.8 Mach的異常處理
4.8.1 異常連線埠
4.8.2 錯誤處理
4.8.3 調試器互動
4.8.4 分析
4.9 進程組和終端管理
4.9.1 基本概念
4.9.2 SVR3模型
4.9.3 限制
4.9.4 4.3BSD的進程組和終端
4.9.5 缺點
4.10 SVR4的會話體系結構
4.10.1 動機
4.10.2 會話和進程組
4.10.3 數據結構
4.10.4 控制終端
4.10.5 4.4BSD的會話實現機制
4.11 小結
4.12 練習題
參考文獻
第5章 進程調度
5.1 簡介
5.2 時鐘中斷處理
5.2.1 callout
5.2.2 告警
5.3 調度器目標
5.4 傳統的UNIX調度
5.4.1 進程優先權
5.4.2 調度器的實現
5.4.3 運行佇列的操作
5.4.4 分析
5.5 SVR4調度器
5.5.1 類無關層
5.5.2 調度類的接口
5.5.3 分時類
5.5.4 實時類
5.5.5 priocntl系統調用
5.5.6 分析
5.6 Solaris 2.x調度的改善
5.6.1 可搶占的核心
5.6.2 多處理器的支持
5.6.3 隱式調度
5.6.4 優先權反轉
5.6.5 優先權繼承的實現
5.6.6 優先權繼承的局限性
5.6.7 turnstile
5.6.8 分析
5.7 Mach上的調度
多處理器支持
5.8 Digital UNIX的實時調度
多處理器支持
5.9 其他調度實現
5.9.1 公平調度方法
5.9.2 最終期限驅動調度方法
5.9.3 三級調度器
5.10 小結
5.11 練習題
參考文獻
第6章 進程間通信
6.1 簡介
6.2 通用的IPC方法
6.2.1 信號
6.2.2 管道
6.2.3 SVR4管道
6.2.4 進程跟蹤
6.3 System V IPC
6.3.1 公共元素
6.3.2 信號量
6.3.3 訊息佇列
6.3.4 共享記憶體
6.3.5 討論
6.4 Mach IPC
基本概念
6.5 訊息
6.5.1 訊息數據結構
6.5.2 訊息傳遞接口
6.6 連線埠
6.6.1 連線埠命名空間
6.6.2 連線埠數據結構
6.6.3 連線埠轉換
6.7 訊息傳遞
6.7.1 轉換連線埠權利
6.7.2 out-of-line記憶體
6.7.3 控制流
6.7.4 通知
6.8 連線埠操作
6.8.1 銷毀連線埠
6.8.2 備份連線埠
6.8.3 連線埠集合
6.8.4 連線埠插補
6.9 擴展性
6.10 Mach 3.0的增強
6.10.1 一次性的傳送權利
6.10.2 Mach 3.0的通知
6.10.3 傳送權利的用戶引用計數
6.11 討論
6.12 小結
6.13 練習題
參考文獻
第7章 同步和多處理器
7.1 簡介
7.2 傳統UNIX核心里的同步機制
7.2.1 中斷禁止
7.2.2 睡眠和喚醒
7.2.3 傳統方法的局限性
7.3 多處理器系統
7.3.1 記憶體模型
7.3.2 同步支持
7.3.3 軟體體系架構
7.4 多處理器的同步問題
7.4.1 喚醒丟失問題
7.4.2 驚群問題
7.5 信號量
7.5.1 信號量提供互斥操作
7.5.2 使用信號量提供事件等待
7.5.3 使用信號量來控制可計數的資源
7.5.4 信號量的缺點
7.5.5 Convoy
7.6 自旋鎖
7.7 條件變數
7.7.1 實現問題
7.7.2 事件
7.7.3 阻塞鎖
7.8 讀寫鎖
7.8.1 設計考慮
7.8.2 實現
7.9 引用計數
7.10 其他考慮
7.10.1 死鎖避免
7.10.2 遞歸鎖
7.10.3 阻塞還是自旋
7.10.4 鎖什麼
7.10.5 粒度和持續時間
7.11 案例研究
7.11.1 SVR4.2/MP
7.11.2 Digital UNIX
7.11.3 其他實現
7.12 小結
7.13 練習題
參考文獻
第8章 檔案系統接口和框架
8.1 簡介
8.2 檔案的用戶接口
8.2.1 檔案和目錄
8.2.2 檔案屬性
8.2.3 檔案描述符
8.2.4 檔案I/O
8.2.5 分散-聚集I/O
8.2.6 檔案鎖機制
8.3 檔案系統
8.4 特殊檔案
8.4.1 符號連結
8.4.2 管道和FIFO
8.5檔案系統框架
8.6Vnode/Vfs架構
8.6.1目標
8.6.2 從設備I/O得到的註解
8.6.3 vnode/vfs接口概覽
8.7 實現概覽
8.7.1 目標
8.7.2 Vnodes以及打開檔案
8.7.3 Vnode
8.7.4 Vnode引用計數
8.7.5 Vfs對象
8.8 檔案系統相關對象
8.8.1 每個檔案的私有數據
8.8.2 vnodeops結構
8.8.3 vfs層中檔案系統相關部分
8.9 掛載檔案系統
8.9.1 虛擬檔案系統轉換表
8.9.2 mount函式實現
8.9.3 VFS_MOUNT過程
8.10 檔案操作
8.10.1 路徑遍歷
8.10.2 目錄名查找快取
8.10.3 VOP_LOOKUP操作
8.10.4 打開檔案
8.10.5 檔案I/O
8.10.6 檔案屬性
8.10.7 用戶憑據
8.11 分析
8.11.1 SVR4系統實現的缺點
8.11.2 4.4BSD模型
8.11.3 OSF/1方法
8.12 小結
8.13 練習題
參考文獻
第9章 檔案系統的實現
9.1 簡介
9.2 System V檔案系統(s5fs)
9.2.1 目錄
9.2.2 inode
9.2.3 超級塊
9.3 s5fs核心組織
9.3.1 記憶體inode
9.3.2 inode查找
9.3.3 檔案I/O
9.3.4 inode的分配和回收
9.4 s5fs的分析
9.5 伯克利快速檔案系統(FFS)
9.6 硬碟結構
9.7 磁碟組織
9.7.1 塊和片段
9.7.2 分配策略
9.8 FFS的增強功能
9.9 分析
9.10 臨時檔案系統
9.10.1 記憶體檔案系統
9.10.2 tmpfs檔案系統
9.11 特殊用途檔案系統
9.11.1 specfs檔案系統
9.11.2 /proc檔案系統
9.11.3 處理器檔案系統
9.11.4 Trans lucent檔案系統
9.12 舊的緩衝區快取
9.12.1 基本操作
9.12.2 緩衝區頭結構
9.12.3 優點
9.12.4 缺點
9.12.5 保證檔案系統的一致性
9.13 小結
9.14 練習題
參考文獻
第10章 分散式檔案系統
10.1 簡介
10.2 分散式檔案系統的一般特徵
10.3 網路檔案系統
10.3.1 用戶視角
10.3.2 設計目標
10.3.3 NFS的組件
10.3.4 無狀態設計
10.4 NFS協定集
10.4.1 外部數據表示
10.4.2 遠程過程調用
10.5 NFS實現
10.5.1 控制流
10.5.2 檔案句柄
10.5.3 掛載操作
10.5.4 路徑名的查找
10.6 UNIX語義
10.6.1 打開檔案許可
10.6.2 已打開檔案的刪除
10.6.3 讀寫操作
10.7 NFS性能
10.7.1 性能瓶頸
10.7.2 客戶端快取
10.7.3 延遲寫
10.7.4 重傳快取
10.8 專用NFS伺服器
10.8.1 Auspex的Functional Multiprocessor 架構
10.8.2 IBM的HA-NFS伺服器
10.9 NFS安全
10.9.1 NFS訪問控制
10.9.2 UID重映射
10.9.3 根用戶重映射
10.10 NFS版本
10.11 遠程檔案共享
10.12 RFS架構
10.12.1 遠程訊息協定
10.12.2 有狀態操作
10.13 RFS實現
10.13.1 遠程掛載
10.13.2 RFS客戶端和伺服器
10.13.3 崩潰恢復
10.13.4 其他問題
10.14 客戶端快取
10.15 Andrew檔案系統
10.15.1 可伸縮架構
10.15.2 存儲和命名空間的組織
10.15.3 會話級語義
10.16 AFS實現
10.16.1 快取與一致性
10.16.2 路徑名查找
10.16.3 安全性
10.17 AFS的不足
10.18 DCE的分散式檔案系統
10.18.1 DFS架構
10.18.2 快取一致性
10.18.3 令牌管理器
10.18.4 DFS的其他服務
10.18.5 分析
10.19 小結
10.20 練習題
參考文獻
第11章 高級檔案系統
11.1 簡介
11.2 傳統檔案系統的局限
11.3 檔案系統簇(SUN-FFS)
11.4 日誌方法
11.5 日誌結構檔案系統
11.6 4.4BSD日誌結構檔案系統
11.7 元數據日誌
11.8 Episode檔案系統
11.9 "看門狗"監視器
11.10 4.4BSD的portal檔案系統
11.11 可堆疊檔案系統層次
11.12 4.4BSD檔案系統接口
11.13 小結
11.14 練習題
參考文獻
第12章 核心記憶體分配
12.1 簡介
12.2 功能需求
12.3 資源映射分配器
12.4 簡單的冪空閒鍊表分配器
12.5 McKusick-Karels分配器
12.6 夥伴系統
12.7 SVR4的惰性夥伴算法
12.8 Mach和OSF/1的區塊分配器
12.9 一種針對多處理器系統的分層式分配器
12.10 Solaris 2.4的Slab分配器
12.11 小結
12.12 練習題
參考文獻
第13章 虛擬記憶體
13.1 簡介
13.2 按需分頁
13.3 對硬體的需求
13.4 4.3BSD-案例研究
13.5 4.3 BSD 記憶體管理操作
13.6 分析
13.7 練習題
參考文獻
第14章 SVR4 VM架構
14.1 簡介
14.2 記憶體映射檔案
14.3 VM的設計理念
14.4 基礎抽象
14.5 段驅動程式
14.6 交換層
14.7 VM操作
14.8 與vnode子系統的互動
14.9 Solaris的虛擬交換空間
14.10 分析
14.11 性能改進
14.12 小結
14.13 練習題
參考文獻
第15章 其他記憶體管理技術
15.1 簡介
15.2 Mach的記憶體管理設計
15.3 記憶體共享機制
15.4 記憶體對象與Pager
15.5 外部pager和內部pager
15.6 頁面替換
15.7 分析
15.8 4.4BSD的記憶體管理
15.9 旁路轉換緩衝區的一致性
15.10 Mach中的TLB擊落算法
15.11 SVR4和SVR4.2 UNIX中的TLB一致性
15.12 其他TLB一致性算法
15.13 虛擬地址快取
15.14 練習題
參考文獻
第16章 設備驅動和I/O
16.1 簡介
16.2 概述
16.3 設備驅動程式框架
16.4 輸入輸出(I/O)子系統
16.5 poll系統調用
16.6 塊設備I/O操作
16.7 DDI/DKI規範
16.8 更新的SVR4發行版
16.9 未來方向
16.10 小結
16.11 練習題
參考文獻
第17章 STREAMS
17.1 動機
17.2 概述
17.3 訊息和佇列
17.4 流I/O
17.5 配置和設定
17.6 STREAMS的ioctl命令
17.7 記憶體分配
17.8 多路復用
17.9 FiFO和管道
17.10 網路接口
17.11 小結
17.12 練習題
參考文獻

相關詞條

熱門詞條

聯絡我們