Linux 內核探秘-深入解析文件系統和設備驅動的架構與設計 Linux内核探秘:深入解析文件系统和设备驱动的架构与设计

高劍林

  • 出版商: 機械工業
  • 出版日期: 2014-01-01
  • 定價: $354
  • 售價: 8.5$301
  • 語言: 簡體中文
  • 頁數: 219
  • 裝訂: 平裝
  • ISBN: 7111445856
  • ISBN-13: 9787111445852
  • 相關分類: Linux

已絕版

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

《Linux內核探秘(深入解析文件系統和設備驅動的架構與設計)》從工業需求角度出發,註重效率和實用性,是幫助內核研發及調試、驅動開發等領域工程師正確認識並高效利用Linux內核的難得佳作!作者高劍林是騰訊公司資深的Linux內核專家和存儲系統專家,在該領域工作和研究的10餘年間,面試了數百位Linux內核工程師,深知學習Linux內核過程中經常遇到的困惑,以及在工作中容易犯的錯誤。基於這些原因作者撰寫了本書。本書出發點和寫作方式可謂獨闢蹊徑,將Linux內核分為兩個維度,一是基礎部分和應用部分,二是內核架構和內核實現,將兩個維有機統一,深入分析了Linux內核的文件系統、設備驅動的架構設計與實現原理。
    《Linux內核探秘(深入解析文件系統和設備驅動的架構與設計)》在邏輯上分為三部分:第一部分(第1?2章)首先將內核層劃分為基礎層和應用層,講解了基礎層包含的服務和數據結構,以及應用層包含的各種功能,然後對文件系統的架構進行了提綱挈領的介紹,為讀者學習後面的知識打下基礎;第二部分(第3?9章)從設備到總線到驅動,逐步深入,剖析了設備的總體架構、為設備服務的特殊文件系統sysfs、字符設備和input設備、platform總線、serio總線、PCI總線、塊設備的實現原理和工作機制;第三部分(第10?13章)對文件系統的讀寫機制進行了深入分析,最後通過一個真實文件系統ext2,複習本書所有知識點。

<目錄>

前言
第1章  內核的基礎層和應用層
  1.1 內核基礎層提供的服務
    1.1.1 內核中使用內存
    1.1.2 內核中的任務調度
    1.1.3 軟中斷和tasklet
    1.1.4 工作隊列
    1.1.5 自旋鎖
    1.1.6 內核信號量
    1.1.7 原子變量
  1.2 內核基礎層的數據結構
    1.2.1 雙向鏈表
    1.2.2 hash鏈表
    1.2.3 單向鏈表
    1.2.4 紅黑樹
    1.2.5 radix樹
  1.3 內核應用層
  1.4 從Linux內核源碼結構縱覽內核
  1.5 內核學習和應用的四個階段
  1.6 本章小結
第2章  文件系統
  2.1 文件系統的基本概念
    2.1.1 什麼是VFS
    2.1.2 超級塊super_block
    2.1.3 目錄項dentry
    2.1.4 索引節點inode
    2.1.5 文件
  2.2 文件系統的架構
    2.2.1 超級塊作用分析
    2.2.2 dentry作用分析
    2.2.3 inode作用分析
    2.2.4 文件作用分析
  2.3 從代碼層次深入分析文件系統
    2.3.1 一個最簡單的文件系統aufs
    2.3.2 文件系統如何管理目錄和文件
    2.3.3 文件系統的掛載過程
    2.3.4 文件打開的代碼分析
  2.4 本章小結
第3章  設備的概念和總體架構
  3.1 設備的配置表
  3.2 訪問設備寄存器和設備內存
  3.3 設備中斷和DMA
  3.4 總線對設備的掃描
  3.5 設備驅動管理
  3.6 本章小結
第4章  為設備服務的特殊文件系統sysfs
  4.1 文件和目錄的創建
    4.1.1 sysfs文件系統的初始化
    4.1.2 sysfs文件系統目錄的創建
    4.1.3 普通文件的創建

  4.2 sysfs文件的打開操作
    4.2.1 real_lookup函數詳解
    4.2.2 為文件創建inode結構
    4.2.3 為dentry結構綁定屬性
    4.2.4 調用文件系統中的open函數
  4.3 sysfs文件的讀寫
    4.3.1 讀文件的過程分析
    4.3.2 寫文件的過程分析
  4.4 kobject結構
    4.4.1 kobject和kset的關係
    4.4.2 kobject實例:總線的註冊
  4.5 本章小結
第5章  字符設備和input設備
  5.1 文件如何變成設備
    5.1.1 init_special_inode函數
    5.1.2 def_chr_fops結構
  5.2 input設備的註冊
    5.2.1 主從設備號
    5.2.2 把input設備註冊到系統
    5.2.3 設備區間的登記
    5.2.4 註冊字符設備
    5.2.5 打開input設備
  5.3 input設備架構
    5.3.1 註冊input設備的驅動
    5.3.2 匹配input管理的設備和驅動
    5.3.3 註冊input設備
  5.4 本章小結
第6章  platform總線
  6.1 從驅動發現設備的過程
    6.1.1 驅動的初始化
    6.1.2 註冊驅動
    6.1.3 為總線增加一個驅動
    6.1.4 驅動加載
    6.1.5 遍歷總線上已經掛載的設備
  6.2 從設備找到驅動的過程
    6.2.1 註冊設備和總線類型
    6.2.2 註冊設備的資源
    6.2.3 增加一個設備對象
  6.3 本章小結
第7章  serio總線
  7.1 什麼是總線適配器
  7.2 向serio總線註冊設備
    7.2.1 註冊埠登記事件
    7.2.2 遍歷總線的驅動
    7.2.3 註冊input設備
  7.3 虛擬鍵盤驅動
    7.3.1 鍵盤驅動的初始化
    7.3.2 與設備建立連接
    7.3.3 啟動鍵盤設備
    7.3.4 輸入設備和主機系統之間的事件

  7.4 鍵盤中斷
    7.4.1 q40kbd設備的中斷處理
    7.4.2 serio總線的中斷處理
    7.4.3 驅動提供的中斷處理
  7.5 本章小結
第8章  PCI總線
  8.1 深入理解PCI總線
    8.1.1 PCI設備工作原理
    8.1.2 PCI總線域
    8.1.3 PCI資源管理
    8.1.4 PCI配置空間讀取和設置
  8.2 PCI設備掃描過程
    8.2.1 掃描0號總線
    8.2.2 掃描總線上的PCI設備
    8.2.3 掃描多功能設備
    8.2.4 掃描單個設備
    8.2.5 掃描設備信息
  8.3 本章小結
第9章  塊設備
  9.1 塊設備的架構
    9.1.1 塊設備、磁盤對象和隊列
    9.1.2 塊設備和通用磁盤對象的綁定
    9.1.3 塊設備的隊列和隊列處理函數
  9.2 塊設備創建的過程分析
    9.2.1 nbd驅動的初始化
    9.2.2 為通用磁盤對象創建隊列成員
    9.2.3 將通用磁盤對象加入系統
  9.3 塊設備文件系統
    9.3.1 塊設備文件系統的初始化
    9.3.2 塊設備文件系統的設計思路
  9.4 塊設備的打開流程
    9.4.1 獲取塊設備對象
    9.4.2 執行塊設備的打開流程
  9.5 本章小結
第10章  文件系統讀寫
  10.1 page cache機制
    10.1.1 buffer I/O和direct I/O
    10.1.2 buffer head和塊緩存
    10.1.3 page cache的管理
    10.1.4 page cache的狀態
  10.2 文件預讀
  10.3 文件鎖
  10.4 文件讀過程代碼分析
  10.5 讀過程返回
  10.6 文件寫過程代碼分析
  10.7 本章小結
第11章  通用塊層和scsi層
  11.1 塊設備隊列
    11.1.1 scsi塊設備隊列處理函數
    11.1.2 電梯演算法和對象

  11.2 硬盤HBA抽象層
  11.3 I/O的順序控制
  11.4 I/O調度演算法
    11.4.1 noop調度演算法
    11.4.2 deadline調度演算法
  11.5 I/O的處理過程
    11.5.1 I/O插入隊列的過程分析
    11.5.2 I/O出隊列的過程分析
    11.5.3 I/O返迴路徑
  11.6 本章小結
第12章  內核回寫機制
  12.1 內核的觸發條件
  12.2 內核回寫控制參數
  12.3 定時器觸發回寫
    12.3.1 啟動定時器
    12.3.2 執行回寫操作
    12.3.3 檢查需要回寫的頁面
    12.3.4 回寫超級塊內的inode
  12.4 平衡寫
    12.4.1 檢查直接回寫的條件
    12.4.2 回寫系統臟頁面的條件
    12.4.3 檢查電腦模式
  12.5 本章小結
第13章  一個真實文件系統ext2
  13.1 ext2的硬盤佈局
  13.2 ext2文件系統目錄樹
  13.3 ext2文件內容管理
  13.4 ext2文件系統讀寫
  13.5 本章小結