《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理》是2013年機械工業出版社出版的圖書,作者是新設計團隊。
基本介紹
- 書名:Linux核心設計的藝術
- 作者:新設計團隊
- ISBN:9787111421764
- 頁數:468
- 定價:89.00元
- 出版社:機械工業出版社
- 出版時間:2013-5
- 裝幀:平裝
- 副標題:Linux作業系統架構設計實現原理
作者簡介,內容簡介,目錄,
作者簡介
新設計團隊,一直在為設計一個自主的、有所突破和創新的作業系統而努力。為了讓新的成員能更快、更容易地理解作業系統的精髓,從更高的角度去鑑賞和發現作業系統設計中的精妙與不足,團隊成員以Linux0.11核心為例,對作業系統的設計思想和實現原理進行了深刻地剖析,取得了十分好的效果,很好地培養和鍛鍊了團隊成員對作業系統的駕馭能力。為了實現讓國人也能設計出自己的作業系統的目標,本書作者團隊無私地將他們的獨特研究方式與研究成果奉獻了出來,希望所有想要深刻理解Linux核心和作業系統設計思想的朋友能從中受益。
內容簡介
《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理(第2版)》的第1版廣獲好評,著作權被中國台灣和美國兩家大型出版社引進,第2版根據讀者的反饋和作者對作業系統的最新研究成果對第1版進行了大幅最佳化和重寫,使其內容質量更上一層樓。《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理(第2版)》在眾多關於Linux核心的書中獨樹一幟,它在世界範圍內首次提出並闡述了作業系統設計的核心指導思想——主奴機制,這是所有作業系統研究者的一筆寶貴財富。它也是一本能真正引導我們較為容易地、極為透徹地理解Linux核心的經典之作,也可能是當前唯一能從本質上指引我們去設計和開發擁有自主智慧財產權的作業系統的著作。
《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理(第2版)》的最大特點是它的寫作方式和內容組織方式與同類書完全不同。它在深刻地分析了傳統講解方法的利弊之後,破舊立新,從認知學的角度開創了一種全新的方式。以作業系統的真實運行過程為主線,結合真實的核心原始碼、300餘幅精確的核心運行時序圖和具有點睛之妙的文字說明,對作業系統從開機加電到系統完全準備就緒,及運行用戶程式的整個過程進行了系統而完整地分析,深刻地揭示了其間每一個動作的設計意圖和實現原理,完美地再現了作業系統設計者的設計思路。閱讀《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理(第2版)》就如同跟隨著作業系統設計者一起去思考,我們會在閱讀的過程中發現Linux核心設計的精妙,會發現原來處處都“暗藏玄機”,哪怕是一行很短的代碼。
《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理(第2版)》在所有細節上都力求完美。為了保證知識的準確性,作業系統運行過程中的每個動作都經過了嚴格的考證;為了讓我們真正理解Linux核心的原理,它突破傳統,以Linux的真實運行過程為主線進行講解;為了做到真正易於理解,創新性地使用了圖解的方式,精心繪製了300餘幅解析度600dpi的時序圖,圖中表現的運行時結構和狀態與作業系統實際運行時的真實狀態完全吻合;為了提高閱讀體驗,《Linux核心設計的藝術圖解Linux作業系統架構設與實現原理(第2版)》採用了雙色印刷,以便於我們更清楚地觀察每一幅圖中的細節。
目錄
前 言
第1章 從開機加電到執行main函式之前的過程
1.1 啟動BIOS,準備實模式下的中斷向量表和中斷服務程式
1.1.1 BIOS的啟動原理
1.1.2 BIOS 在記憶體中載入中斷向量表和中斷服務程式
1.2 載入作業系統核心程式並為保護模式做準備
1.2.1 載入第一部分核心代碼--引導程式(bootsect)
1.2.2 載入第二部分核心代碼--setup
1.2.3 載入第三部分核心代碼--system模組
1.3 開始向32位模式轉變,為main函式的調用做準備
1.3.1 關中斷並將system移動到記憶體地址起始位置0x0000
1.3.2 設定中斷描述符表和全局描述符表
1.3.3 打開A20,實現32位定址
1.3.4 為保護模式下執行head.s做準備
1.3.5 head.s開始執行
1.4 本章小結
第2章 設備環境初始化及激活進程
2.1 設定根設備、硬碟
2.2 規劃物理記憶體格局,設定緩衝區、虛擬盤、主記憶體
2.3 設定虛擬盤空間並初始化
2.4 記憶體管理結構mem_map初始化
2.5 異常處理類中斷服務程式掛接
2.6 初始化塊設備請求項結構
2.7 與建立人機互動界面相關的外設的中斷服務程式掛接
2.7.1 對串列口進行設定
2.7.2 對顯示器進行設定
2.7.3 對鍵盤進行設定
2.8 開機啟動時間設定
2.9 初始化進程
2.9.1 初始化進程
2.9.2 設定時鐘中斷
2.9.3 設定系統調用總入口
2.10 初始化緩衝區管理結構
2.11 初始化硬碟
2.12 初始化軟碟
2.13 開啟中斷
2.14 進程0由0特權級翻轉到3特權級,成為真正的進程
2.15 本章小結
第3章 進程1的創建及執行
3.1 進程1的創建
3.1.1 進程0創建進程
3.1.2 在task[64]中為進程1申請一個空閒位置並獲取進程號
3.1.3 調用copy_process函式
3.1.4 設定進程1的分頁管理
3.1.5 進程1共享進程0的檔案
3.1.6 設定進程1在GDT中的表項
3.1.7 進程1處於就緒態
3.2 核心第一次做進程調度
3.3 輪轉到進程1執行
3.3.1 進程1為安裝硬碟檔案系統做準備
3.3.2 進程1格式化虛擬盤並更換根設備為虛擬盤
3.3.3 進程1在根設備上載入根檔案系統
3.4 本章小結
第4章 進程2的創建及執行
4.1 打開終端設備檔案及複製檔案句柄
4.1.1 打開標準輸入設備檔案
4.1.2 打開標準輸出、標準錯誤輸出設備檔案
4.2 進程1創建進程2並切換到進程2執行
4.3 載入shell程式
4.3.1 關閉標準輸入設備檔案,打開rc檔案
4.3.2 檢測shell檔案
4.3.3 為shell程式的執行做準備
4.3.4 執行shell程式
4.4 系統實現怠速
4.4.1 創建update進程
4.4.2 切換到shell進程執行
4.4.3 重建shell
4.5 本章小結
第5章 檔案操作
5.1 安裝檔案系統
5.1.1 獲取外設的超級塊
5.1.2 確定根檔案系統的掛接點
5.1.3 將超級塊與根檔案系統掛接
5.2 打開檔案
5.2.1 將進程的*filp[20]與file_table[64]掛接
5.2.2 獲取檔案i節點
5.2.3 將檔案i節點與file_table[64]掛接
5.3 讀檔案
5.3.1 確定數據塊在外設中的位置
5.3.2 將數據塊讀入緩衝塊
5.3.3 將緩衝塊中的數據複製到進程空間
5.4 新建檔案
5.4.1 查找檔案
5.4.2 新建檔案i節點
5.4.3 新建檔案目錄項
5.5 寫檔案
5.5.1 確定檔案的寫入位置
5.5.2 申請緩衝塊
5.5.3 將指定的數據從進程空間複製到緩衝塊
5.5.4 數據同步到外設的兩種方法
5.6 修改檔案
5.6.1 重定位檔案的當前操作指針
5.6.2 修改檔案
5.7 關閉檔案
5.7.1 當前進程的filp與file_table[64]脫鉤
5.7.2 檔案i節點被釋放
5.8 刪除檔案
5.8.1 對檔案的刪除條件進行檢查
5.8.2 進行具體的刪除工作
5.9 本章小結
第6章 用戶進程與記憶體管理
6.1 線性地址的保護
6.1.1 進程線性地址空間的格局
6.1.2 段基址、段限長、GDT、LDT、特權級
6.2 分頁
6.2.1 線性地址映射到物理地址
6.2.2 進程執行時分頁
6.2.3 進程共享頁面
6.2.4 核心分頁
6.3 一個用戶進程從創建到退出的完整過程
6.3.1 創建str1進程
6.3.2 str1進程載入的準備工作
6.3.3 str1進程的運行、載入
6.3.4 str1進程的退出
6.4 多個用戶進程同時運行
6.4.1 進程調度
6.4.2 頁防寫
6.5 本章小結
第7章 緩衝區和多進程操作檔案
7.1 緩衝區的作用
7.2 緩衝區的總體結構
7.3 b_dev、b_blocknr及request的作用
7.3.1 保證進程與緩衝塊數據互動的正確性
7.3.2 讓數據在緩衝區中停留的時間儘可能長
7.4 uptodate和dirt的作用
7.4.1 b_uptodate的作用
7.4.2 b_dirt的作用
7.4.3 i_uptodate、i_dirt和s_dirt的作用
7.5 count、 lock、wait、request的作用
7.5.1 b_count的作用
7.5.2 i_count的作用
7.5.3 b_lock、*b_wait的作用
7.5.4 i_lock、i_wait、s_lock、*s_wait的作用
7.5.5 補充request的作用
7.6 實例1:關於緩衝塊的進程等待佇列
7.7 總體來看緩衝塊和請求項
7.8 實例2:多進程操作檔案的綜合實例
7.9 本章小結
第8章 進程間通信
8.1 管道機制
8.1.1 管道的創建過程
8.1.2 管道的操作
8.2 信號機制
8.2.1 信號的使用
8.2.2 信號對進程執行狀態的影響
8.3 本章小結
第9章 作業系統的設計指導思想
9.1 運行一個最簡單的程式,看作業系統為程式運行做了哪些工作
9.2 作業系統的設計指導思想--主奴機制
9.2.1 主奴機制中的進程及進程創建機制
9.2.2 作業系統的設計如何體現主奴機制
9.3 實現主奴機制的三種關鍵技術
9.3.1 保護和分頁
9.3.2 特權級
9.3.3 中斷
9.4 建立主奴機制的決定性因素--先機
9.5 軟體和硬體的關係
9.5.1 非用戶進程--進程0、進程1、shell進程
9.5.2 檔案與數據存儲
9.6 父子進程共享頁面
9.7 作業系統的全局中斷與進程的局部中斷--信號
9.8 本章小結
結束語
“新設計團隊”簡介
第1章 從開機加電到執行main函式之前的過程
1.1 啟動BIOS,準備實模式下的中斷向量表和中斷服務程式
1.1.1 BIOS的啟動原理
1.1.2 BIOS 在記憶體中載入中斷向量表和中斷服務程式
1.2 載入作業系統核心程式並為保護模式做準備
1.2.1 載入第一部分核心代碼--引導程式(bootsect)
1.2.2 載入第二部分核心代碼--setup
1.2.3 載入第三部分核心代碼--system模組
1.3 開始向32位模式轉變,為main函式的調用做準備
1.3.1 關中斷並將system移動到記憶體地址起始位置0x0000
1.3.2 設定中斷描述符表和全局描述符表
1.3.3 打開A20,實現32位定址
1.3.4 為保護模式下執行head.s做準備
1.3.5 head.s開始執行
1.4 本章小結
第2章 設備環境初始化及激活進程
2.1 設定根設備、硬碟
2.2 規劃物理記憶體格局,設定緩衝區、虛擬盤、主記憶體
2.3 設定虛擬盤空間並初始化
2.4 記憶體管理結構mem_map初始化
2.5 異常處理類中斷服務程式掛接
2.6 初始化塊設備請求項結構
2.7 與建立人機互動界面相關的外設的中斷服務程式掛接
2.7.1 對串列口進行設定
2.7.2 對顯示器進行設定
2.7.3 對鍵盤進行設定
2.8 開機啟動時間設定
2.9 初始化進程
2.9.1 初始化進程
2.9.2 設定時鐘中斷
2.9.3 設定系統調用總入口
2.10 初始化緩衝區管理結構
2.11 初始化硬碟
2.12 初始化軟碟
2.13 開啟中斷
2.14 進程0由0特權級翻轉到3特權級,成為真正的進程
2.15 本章小結
第3章 進程1的創建及執行
3.1 進程1的創建
3.1.1 進程0創建進程
3.1.2 在task[64]中為進程1申請一個空閒位置並獲取進程號
3.1.3 調用copy_process函式
3.1.4 設定進程1的分頁管理
3.1.5 進程1共享進程0的檔案
3.1.6 設定進程1在GDT中的表項
3.1.7 進程1處於就緒態
3.2 核心第一次做進程調度
3.3 輪轉到進程1執行
3.3.1 進程1為安裝硬碟檔案系統做準備
3.3.2 進程1格式化虛擬盤並更換根設備為虛擬盤
3.3.3 進程1在根設備上載入根檔案系統
3.4 本章小結
第4章 進程2的創建及執行
4.1 打開終端設備檔案及複製檔案句柄
4.1.1 打開標準輸入設備檔案
4.1.2 打開標準輸出、標準錯誤輸出設備檔案
4.2 進程1創建進程2並切換到進程2執行
4.3 載入shell程式
4.3.1 關閉標準輸入設備檔案,打開rc檔案
4.3.2 檢測shell檔案
4.3.3 為shell程式的執行做準備
4.3.4 執行shell程式
4.4 系統實現怠速
4.4.1 創建update進程
4.4.2 切換到shell進程執行
4.4.3 重建shell
4.5 本章小結
第5章 檔案操作
5.1 安裝檔案系統
5.1.1 獲取外設的超級塊
5.1.2 確定根檔案系統的掛接點
5.1.3 將超級塊與根檔案系統掛接
5.2 打開檔案
5.2.1 將進程的*filp[20]與file_table[64]掛接
5.2.2 獲取檔案i節點
5.2.3 將檔案i節點與file_table[64]掛接
5.3 讀檔案
5.3.1 確定數據塊在外設中的位置
5.3.2 將數據塊讀入緩衝塊
5.3.3 將緩衝塊中的數據複製到進程空間
5.4 新建檔案
5.4.1 查找檔案
5.4.2 新建檔案i節點
5.4.3 新建檔案目錄項
5.5 寫檔案
5.5.1 確定檔案的寫入位置
5.5.2 申請緩衝塊
5.5.3 將指定的數據從進程空間複製到緩衝塊
5.5.4 數據同步到外設的兩種方法
5.6 修改檔案
5.6.1 重定位檔案的當前操作指針
5.6.2 修改檔案
5.7 關閉檔案
5.7.1 當前進程的filp與file_table[64]脫鉤
5.7.2 檔案i節點被釋放
5.8 刪除檔案
5.8.1 對檔案的刪除條件進行檢查
5.8.2 進行具體的刪除工作
5.9 本章小結
第6章 用戶進程與記憶體管理
6.1 線性地址的保護
6.1.1 進程線性地址空間的格局
6.1.2 段基址、段限長、GDT、LDT、特權級
6.2 分頁
6.2.1 線性地址映射到物理地址
6.2.2 進程執行時分頁
6.2.3 進程共享頁面
6.2.4 核心分頁
6.3 一個用戶進程從創建到退出的完整過程
6.3.1 創建str1進程
6.3.2 str1進程載入的準備工作
6.3.3 str1進程的運行、載入
6.3.4 str1進程的退出
6.4 多個用戶進程同時運行
6.4.1 進程調度
6.4.2 頁防寫
6.5 本章小結
第7章 緩衝區和多進程操作檔案
7.1 緩衝區的作用
7.2 緩衝區的總體結構
7.3 b_dev、b_blocknr及request的作用
7.3.1 保證進程與緩衝塊數據互動的正確性
7.3.2 讓數據在緩衝區中停留的時間儘可能長
7.4 uptodate和dirt的作用
7.4.1 b_uptodate的作用
7.4.2 b_dirt的作用
7.4.3 i_uptodate、i_dirt和s_dirt的作用
7.5 count、 lock、wait、request的作用
7.5.1 b_count的作用
7.5.2 i_count的作用
7.5.3 b_lock、*b_wait的作用
7.5.4 i_lock、i_wait、s_lock、*s_wait的作用
7.5.5 補充request的作用
7.6 實例1:關於緩衝塊的進程等待佇列
7.7 總體來看緩衝塊和請求項
7.8 實例2:多進程操作檔案的綜合實例
7.9 本章小結
第8章 進程間通信
8.1 管道機制
8.1.1 管道的創建過程
8.1.2 管道的操作
8.2 信號機制
8.2.1 信號的使用
8.2.2 信號對進程執行狀態的影響
8.3 本章小結
第9章 作業系統的設計指導思想
9.1 運行一個最簡單的程式,看作業系統為程式運行做了哪些工作
9.2 作業系統的設計指導思想--主奴機制
9.2.1 主奴機制中的進程及進程創建機制
9.2.2 作業系統的設計如何體現主奴機制
9.3 實現主奴機制的三種關鍵技術
9.3.1 保護和分頁
9.3.2 特權級
9.3.3 中斷
9.4 建立主奴機制的決定性因素--先機
9.5 軟體和硬體的關係
9.5.1 非用戶進程--進程0、進程1、shell進程
9.5.2 檔案與數據存儲
9.6 父子進程共享頁面
9.7 作業系統的全局中斷與進程的局部中斷--信號
9.8 本章小結
結束語
“新設計團隊”簡介