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

IA-64 Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)

IA-64 Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)

定 價(jià):¥45.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

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

本目錄推薦

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