注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)LinuxIA-64 Linux內核設計與實現(xiàn)

IA-64 Linux內核設計與實現(xiàn)

IA-64 Linux內核設計與實現(xiàn)

定 價:¥45.00

作 者: (美)David Mosberger,(美)Stephane Eranian著;梁金昆等譯;梁金昆譯
出版社: 清華大學出版社
叢編項: 國外經(jīng)典教材·計算機科學與技術
標 簽: Linux

ISBN: 9787302096108 出版時間: 2004-11-01 包裝: 平裝
開本: 26cm 頁數(shù): 414 字數(shù):  

內容簡介

  本書是操作系統(tǒng)軟件發(fā)展史上的一個里程碑,將介紹一種強大而又完全開放的操作系統(tǒng),并采用獨特視角分析了將其內核移植到一個嶄新的CPU架構上的內核設計師們的設計思路。本書適用于學習操作系統(tǒng)編程的學生,也能教給經(jīng)驗豐富的內核程序員一兩個竅門。本書從技術角度深入地介紹了現(xiàn)代CPU及其指令集和架構,以及Linux內核;并展示了現(xiàn)代微處理器的設計師們如何從效率和可伸縮性的角度來構建微處理器:另外還介紹了在與硬件無關的層次上內核的設計目標,以及介于與硬件無關的部分和IA-64架構之間的特定實現(xiàn)。本書涵蓋了內核設計師在把Linux移植到IA-64的過程中所做出的全部決策,這展示了他們如何將硬件和軟件整合為一個能正常運轉的系統(tǒng)。本書的作者之一躋身于能接替LinusTorvalds領導Linux內核開發(fā)的最后候選人之列。兩位作者均受聘于HP的研究實驗室,HP公司創(chuàng)造了IA-64的直系祖先及其架構,后來與Intel合作開發(fā)IA-64架構。兩位作者領導了Linux內核向IA-64處理器的移植,因此他們是講述這一主題的最佳人選。如果想從系統(tǒng)程序員的角度理解IA-64架構,或者想更深刻地理解Linux內核,或是面臨著以下任務:改進軟件對處理器的利用,把某個操作系統(tǒng)移植到一種新型的處理器上,乃至設計一種新型的CPU,本書都將很適合你。本書為學習操作系統(tǒng)的學生提供了理論聯(lián)系實際的重要橋梁。這面臨著一個嚴峻的考驗:保持架構整潔和可移植的抽象目標面臨著必須在實際的CPU上高效且可靠運行的挑戰(zhàn)。但最具革命意義的一點是對于所有讀者來說,本書實際上是完全可用的。僅僅幾年前,本書的內容和相關源代碼很可能還屬于商業(yè)秘密,而擁有這些資料的公司估計它們具有數(shù)千萬美元的價值。就算只是想看看IA-64內核源代碼,就必須先在HP的少數(shù)幾個部門之中找到一份工作。只是好奇的人或者學生是沒有這樣的機會的。實際上,在20世紀90年代初,AT&T估計其UNIX系統(tǒng)的知識產(chǎn)權價值為2.5億美元。資金雄厚的大學有時候會購買允許研究生使用UNIX源代碼的授權,但是一旦如此,那些研究員便加入了一份令人反感的非公開協(xié)定。時代已經(jīng)改變了:現(xiàn)在你已被授權使用該操作系統(tǒng)內核的全部源代碼,甚至可以隨意把它復制給你的朋友!是什么使這一改變成為可能呢?原因就是LinusTorvalds和數(shù)百名合作者以源代碼的形式公開了Linux內核,而最重要的是有了革命性的GNU通用公共許可(GNU GPL)。GPL的自由軟件(FreeSoftware)模型允許對該系統(tǒng)及其源代碼的自由使用和分發(fā),允許任何人參加該系統(tǒng)的開發(fā),使獨立的開發(fā)人員和商業(yè)界結成伙伴,但同時限制了合作的任何一方不公平地利用另一方。歡迎你加入其中。要理解GPL對Linux的重要性,必須要考慮20世紀80年代末到90年代初,UNIX所面臨的走向衰落的困境。商業(yè)人士深信Microsoft NT很快將一統(tǒng)天下。在那個時期,甚至連Apple和NeXT的創(chuàng)立者SteveJobs都讓步了,在其Pixar的臺式機上安裝了Windows系統(tǒng),而不是他自己的產(chǎn)品。但下面兩個因素拯救了UNIX:Microsoft承諾發(fā)布企業(yè)級NT,但該計劃延誤了5年多的時間:而GNU/Linux系統(tǒng)復興了UNIX的革命。GNU和Linux重新點燃了UNIX世界的希望,這完全是因為它們具有開放、共享的特性,并將其統(tǒng)一為一個能在所有廠商的硬件平臺上運行的通用操作系統(tǒng)。UNIX曾飽受過度分化的痛苦:為了緊緊抓住客戶,每個廠商都對系統(tǒng)進行了修改,而廠商非??释麙昊財?shù)量相當大的研發(fā)費用,以至于他們按用戶數(shù)量對UNIX客戶收費,并限制其系統(tǒng)只允許客戶授權已付費的用戶登錄。而遵循GPL的Linux則不易受到強制分化和知識產(chǎn)權保護問題的困擾:GPL的條款要求對軟件的改進必須與所有人共享,而且規(guī)定擁有軟件的任何人都能對其進行修改。一旦能修改軟件,你就能去除對系統(tǒng)的任何限制。GPL對于共享和類似于共享的規(guī)定趨向于涵蓋操作系統(tǒng)和底層硬件。這侵犯了廠商的利潤,但完全符合客戶的利益。實際效果是廠商開始把操作系統(tǒng)看作支持軟件,而不是利潤的直接來源。做到這一點是可能的,因為自由軟件的協(xié)作特性意味著任何個人或公司都不需要過多地負擔開發(fā)和服務的費用。公司可以與其直接的競爭對手共享這種五分化軟件的開發(fā),有些公司已經(jīng)這樣做了。例如,IBM和HP雖然為Linux的市場份額而競爭,但它們都熱衷于在許多自由軟件項目上進行合作。通過這種方式,這兩家公司可以共同完成無法獨立靠各自的預算來進行的工作。這就是自由軟件革命的合理結果:你現(xiàn)在可以研究和修改那些幾年前還是私有的成果,取得這些成果的人也不再保護其技術只限于其雇員使用,而會毫無保留地告訴你他們是如何取得這一成果的。本書從技術上深入地介紹了IA-64架構及其相應版本的Linux內核。因為你可以隨心所欲地探索Linux系統(tǒng),所以本書對你沒有絲毫的隱瞞。通過這些課程,你能學會把Linux內核移植到另一種處理器上,向內核添加新的特性,乃至為IA-64編寫一個全新的操作系統(tǒng)。你也可以選擇只是更加深入地了解應用程序如何獲得操作系統(tǒng)提供的服務,以及它們?yōu)楹尾扇‖F(xiàn)有的運行方式。如何使用這些信息完全取決于你的選擇。它們不再是實驗室里的秘密,相關的知識產(chǎn)權保護問題也已不復存在,操作系統(tǒng)的大門被猛然地推開。革命已經(jīng)到來:進來探索其中的奧秘吧。——BrucePerenS

作者簡介

  David Mosberger是惠普實驗室的高級研究專家。在1998年初,他創(chuàng)立了一個項目,將Linux引入IA-64平臺,隨后開發(fā)了第一個IA-64 Linux內核源代碼方面的首席設計師、開發(fā)人員和負責人。Stephane Eranian是惠普實驗室的高級研究專家。他從1998年下半年開始從事將Linux引入IA-64平臺的工作。他是內核性能監(jiān)控子系統(tǒng)的主要設計師,兼任Linux/IA-64elilo引導裝載程序的負責人。

圖書目錄

第1章 引言
 1.1 微處理器:從CISC到EPIC
  1.1.1 微處理器分類小結
  1.1.2 IA-64的架構和安騰
 1.2 Linux簡史
  1.2.1 早期發(fā)展
  1.2.2 分支發(fā)展:Linux走向多平臺
  1.2.3 IA-64 Linux
  1.2.4 Linux發(fā)展史小結
 1.3 Linux內核概述
  1.3.1 主要概念
  1.3.2 硬件模型
  1.3.3 內核組件
  1.3.4 內核源碼
 1.4 小結
第2章 IA-64架構
 2.1 用戶級指令集的架構
  2.1.1 指令格式
  2.1.2 指令順序化
  2.1.3 寄存器組
  2.1.4 指令集概述
  2.1.5 整型數(shù)與SIMD指令
  2.1.6 內存/信號量指令
  2.1.7 分支指令
  2.1.8 與寄存器堆棧有關的指令
  2.1.9 控制指令
  2.1.10 浮點型指令
  2.1.11 模調度循環(huán)
 2.2 運行時/軟件規(guī)范
  2.2.1 數(shù)據(jù)模型
  2.2.2 寄存器用法
  2.2.3 過程鏈接
  2.2.4 內存堆棧
  2.2.5 寄存器堆棧
  2.2.6 全局指針
  2.2.7 IA-64匯編語言編程
 2.3 系統(tǒng)指令集架構
  2.3.1 系統(tǒng)寄存器組
  2.3.2 特權指令
  2.3.3 中斷
 2.4 寄存器堆棧引擎
  2.4.1 寄存器堆棧配置寄存器
  2.4.2 處理NaT位
  2.4.3 RSE算術
  2.4.4 RSE算術輔助例程
  2.4.5 影響RSE的指令
 2.5 小結
第3章 進程、任務和線程
 3.1 Linux任務
  3.1.1 創(chuàng)建任務
  3.1.2 歷史的觀點
 3.2 線程接口
  3.2.1 pt_regs結構
  3.2.2 switch_stack結構
  3.2.3 線程結構
  3.2.4 IA-64寄存器堆棧
  3.2.5 IA-64線程狀態(tài)小結
  3.2.6 運行線程
  3.2.7 創(chuàng)建線程
  3.2.8 終止線程
  3.2.9 跨地址空間邊界移動線程
 3.3 線程同步
  3.3.1 并發(fā)模式
  3.3.2 原子操作
  3.3.3 信號量
  3.3.4 中斷屏蔽
  3.3.5 自旋鎖
 3.4 小結
第4章 虛擬內存
 4.1 虛擬內存系統(tǒng)簡介
  4.1.1 虛擬地址到物理地址的轉換
  4.1.2 請求頁面調度
  4.1.3 頁面調度和交換
  4.1.4 保護
 4.2 Linux進程的地址空間
  4.2.1 用戶地址空間
  4.2.2 頁表映射的內核段
  4.2.3 一對一映射的內核段
  4.2.4 IA-64地址空間的結構
 4.3 頁表
  4.3.1 折疊頁表層
  4.3.2 虛擬映射的線性頁表
  4.3.3 Linux/ia64頁表的結構
  4.3.4 頁表項
  4.3.5 頁表訪問
  4.3.6 頁表目錄的創(chuàng)建
 4.4 旁路轉換緩沖區(qū)
  4.4.1 IA-64 TLB架構
  4.4.2 TLB一致性的維護
  4.4.3 遲緩的TLB清除
 4.5 頁面錯誤處理
  4.5.1 示例:寫時復制的工作原理
  4.5.2 Linux頁面錯誤處理程序
  4.5.3 IA-64實現(xiàn)
 4.6 內存一致性
  4.6.1 Linux內核中的一致性維護
  4.6.2 IA-64實現(xiàn)
 4.7 切換地址空間
  4.7.1 地址空間切換的接口
  4.7.2 IA-64實現(xiàn)
 4.8 討論與總結
第5章 內核入口與出口
 5.1 中斷
  5.1.1 內核入口路徑
  5.1.2 內核出口路徑
  5.1.3 討論
  5.1.4 IA-64實現(xiàn)
  5.1.5 切換IA-64寄存器堆棧
 5.2 系統(tǒng)調用
  5.2.1 錯誤信號
  5.2.2 重新啟動系統(tǒng)調用執(zhí)行
  5.2.3 從內核調用系統(tǒng)調用
  5.2.4 IA-64實現(xiàn)
 5.3 信號
  5.3.1 與信號有關的系統(tǒng)調用
  5.3.2 信號遞交
  5.3.3 IA-64實現(xiàn)
 5.4 內核存取用戶內存
  5.4.1 示例:gettimeofday()如何返回timeval結構
  5.4.2 禁用合法性檢測
  5.4.3 IA-64實現(xiàn)
 5.5 小結
第6章 棧展開
 6.1 IA-64 ELF展開段
 6.2 內核展開接口
  6.2.1 管理展開表
  6.2.2 遍歷調用鏈
  6.2.3 訪問當前幀的CPU狀態(tài)
  6.2.4 展開接口的使用
 6.3 在匯編代碼中嵌入展開信息
  6.3.1 區(qū)間指令
  6.3.2 序言指令
  6.3.3 過程體指令
  6.3.4 通用指令
  6.3.5 實例
 6.4 實現(xiàn)方面
  6.4.1 幀信息結構
  6.4.2 展開描述符處理
  6.4.3 展開腳本
  6.4.4 遲緩初始化和腳本提示
  6.4.5 綜合考慮
 6.5 小結
第7章 I/O設備
 7.1 簡介
  7.1.1 現(xiàn)代計算機的結構
  7.1.2 現(xiàn)代計算機上的I/O軟件支持
 7.2 編程I/O
  7.2.1 內存映射I/O
  7.2.2 端口I/O
 7.3 直接內存訪問
  7.3.1 PCIDMA接口
  7.3.2 示例:發(fā)送網(wǎng)絡數(shù)據(jù)包
  7.3.3 IA-64實現(xiàn)
 7.4 設備中斷
  7.4.1 IA-64硬件中斷架構
  7.4.2 設備中斷接口
  7.4.3 中斷處理
  7.4.4 管理IA-64中斷定向邏輯
 7.5 小結
第8章 對稱多處理
 8.1 Linux中的多處理
 8.2 Linux鎖定
  8.2.1 鎖定規(guī)則
  8.2.2 大內核鎖
 8.3 多處理機支持接口
  8.3.1 支持實用工具
  8.3.2 IA-64實現(xiàn)
 8.4 CPU相關數(shù)據(jù)
  8.4.1 錯誤共享
  8.4.2 CPU相關數(shù)據(jù)的虛擬映射
 8.5 掛鐘時間維護
  8.5.1 多處理機中的掛鐘時間維護
  8.5.2 同步MP機器上的周期計數(shù)器
 8.6 小結
第9章 系統(tǒng)性能
 9.1 IA-64性能監(jiān)測單元概述
  9.1.1 PMU寄存器組
  9.1.2 控制監(jiān)測
  9.1.3 處理計數(shù)器溢出
 9.2 擴展安騰PMU
  9.2.1 安騰PMU的額外功能
  9.2.2 安騰PMU寄存器組
  9.2.3 安騰PMU事件
  9.2.4 事件采樣的硬件支持
  9.2.5 事件地址寄存器
  9.2.6 分支追蹤緩沖區(qū)
  9.2.7 其他特性
 9.3 內核性能監(jiān)測支持
  9.3.1 perfmon接口
  9.3.2 perfmon實現(xiàn)
  9.3.3 perfmon接口應用示例
 9.4 小結
第10 章 啟動
 10.1 IA-64固件概述
  10.1.1 處理器抽象層
  10.1.2 系統(tǒng)抽象層
  10.1.3 高級配置和電源接口
  10.1.4 可擴展固件接口
 10.2 啟動裝載程序
  10.2.1 裝載內核映像
  10.2.2 裝載初始RAM磁盤
  10.2.3 裝載FPSWA
  10.2.4 收集啟動參數(shù)
  10.2.5 啟動內核
 10.3 內核初始化
  10.3.1 引導接口
  10.3.2 IA-64實現(xiàn)
 10.4 小結
第11章 IA-32兼容性
 11.1 對1A-32的架構支持
  11.1.1 IA-32用戶級機器狀態(tài)
  11.1.2 IA-32用戶級機器狀態(tài)與IA-64寄存器之間的映射
  11.1.3 IA-32分段與內存尋址
  11.1.4 IA-32與IA-64之間的控制權傳遞
 11.2 Linux對IA-32應用程序的支持
  11.2.1 IA-32任務的內核表示
  11.2.2 模擬IA-32任務的地址空問
  11.2.3 絕對文件系統(tǒng)路徑
  11.2.4 啟動IA-32可執(zhí)行程序
  11.2.5 系統(tǒng)調用模擬
  11.2.6 信號傳遞
  11.2.7 訪問I/O端口空間
 11.3 小結
附錄A IA-64 CPU模型
附錄B 內核寄存器用法
附錄C IA-64指令
 C.1 整數(shù)指令
 C.2 內存指令
 C.3 信號量指令
 c.4 分支指令
 C.5 控制指令
 C.6 多媒體指令
 C.7 浮點指令
 C.8 特權指令
附錄D 安騰PMU事件
附錄E 詞匯表
參考文獻

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號