注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計程序設計綜合OS X與iOS內核編程

OS X與iOS內核編程

OS X與iOS內核編程

定 價:¥89.00

作 者: (澳)Ole Henry Halvorsen (澳)Douglas Clarke 譯者:賈偉
出版社: 人民郵電出版社
叢編項:
標 簽: 操作系統(tǒng)/系統(tǒng)開發(fā) 計算機/網絡

購買這本書可以去


ISBN: 9787115318244 出版時間: 2013-06-02 包裝: 平裝
開本: 16 頁數: 400 字數:  

內容簡介

  與傳統(tǒng)的用戶應用程序開發(fā)不同,內核環(huán)境更加復雜多變,任何問題都會嚴重影響系統(tǒng)的穩(wěn)定性、安全性和性能,所以一定要確保內核代碼中沒有任何錯誤?!禣S X與iOS內核編程》介紹了非常實用的內核開發(fā)方法,是XNU內核開發(fā)者必備的“九陰真經”?!禣S X與iOS內核編程》兩位作者都活躍在計算機軟硬件以及驅動程序開發(fā)一線,具有豐富的實戰(zhàn)經驗。Ole Henry Halvorsen是最早一批為USB 3.0和Thunderbolt創(chuàng)建視頻硬件設備的開發(fā)人員。Douglas Clarke具有15年以上的麥金塔計算機專業(yè)軟硬件開發(fā)經驗。本書匯集了兩位作者多年的實戰(zhàn)經驗與智慧感悟,展現了一幅XNU內核編程與設備驅動程序開發(fā)的斑斕畫卷。相信在作者循循善誘、通俗易懂的講解下,讀者定能為書中的精彩內容深深吸引,漸入化境,在不知不覺中煉就內核開發(fā)的絕世武功。如果你對iOS和Mac OS X操作系統(tǒng)感興趣,關注內核開發(fā),或者你本身就是驅動程序開發(fā)人員,那么如此精彩的一本好書絕對不容錯過。

作者簡介

  Ole Henry Halvorsen,目前在一家生產專業(yè)視頻設備的公司擔任高級軟件工程師,負責面向Mac、Linux和PC的高端高清視頻硬件驅動程序和軟件開發(fā)。他是最早一批為USB 3.0和Thunderbolt創(chuàng)建視頻硬件設備的開發(fā)者,曾是美國SGI公司的研發(fā)工程師,致力于研究NAS和SAN存儲技術,以及為超級計算和高性能計算提供解決方案。Halvorsen擁有澳大利亞莫納什大學網絡計算學士學位以及信息技術碩士學位。Douglas Clarke,有15年以上的麥金塔計算機專業(yè)開發(fā)經驗。他職業(yè)生涯的大部分時間都致力于硬件和設備驅動程序開發(fā),曾為Mac OS 9、Mac OS X和Windows編寫驅動程序。早在Mac OS X第1版面市一年以前,他就開始接觸I/O Kit,從那以后一直在使用它。目前Clarke正在為實時視頻應用開發(fā)驅動程序,他擁有澳大利亞莫納什大學計算機科學學士學位。

圖書目錄

第1章 操作系統(tǒng)原理  1
1.1  操作系統(tǒng)的作用  3
1.2  進程管理  3
1.3  進程地址空間  4
1.4  操作系統(tǒng)服務  5
1.5  虛擬內存  6
1.6  調度  8
1.7  硬件和驅動程序  9
1.8  小結  11
第2章 Mac OS X和iOS  12
2.1  XNU內核  17
2.1.1  內核擴展(KEXT)  18
2.1.2  Mach  18
2.1.3  BSD層  27
2.1.4  I/O Kit  29
2.2  小結  31
第3章 Xcode和內核開發(fā)環(huán)境  32
3.1  語言的選擇:C++  32
3.2  Xcode  33
3.3  “Hello World”內核擴展  34
3.4  加載和卸載內核擴展  37
3.5  使用控制臺查看輸出  39
3.6  小結  40
第4章 I/O Kit框架  41
4.1  I/O Kit 模型  41
4.2  對象關系  43
4.3  Info.plist文件  43
4.3.1  驅動程序類  46
4.3.2  IORegistryExplorer  50
4.4  內核庫:libkern  52
4.4.1  OSObject  52
4.4.2  容器類  54
4.5  小結  56
第5章 應用程序與驅動程序的交互  57
5.1  I/O Kit框架  58
5.2  查找驅動程序  58
5.3  觀察設備移除  63
5.4  修改設備驅動程序屬性  65
5.5  基于狀態(tài)的交互  68
5.6  驅動程序的通知  79
5.7  小結  83
第6章 內存管理  84
6.1  內存類型  84
6.1.1  CPU物理地址  85
6.1.2  總線物理地址  85
6.1.3  用戶和內核虛擬地址  85
6.1.4  內存順序:大端序和小端序  86
6.1.5  32位和64位內存尋址  87
6.2  內存分配  88
6.2.1  底層分配機制  89
6.2.2  Mach內存域分配器  89
6.2.3  kalloc家族  89
6.2.4  BSD中的內存分配  90
6.2.5  I/O Kit內存分配  91
6.2.6  使用C++的new操作符分配內存  92
6.3  內存描述符  92
6.3.1  IOBufferMemoryDescriptor  94
6.3.2  其他的內存描述符  95
6.4  映射內存  95
6.4.1  用戶空間任務到內核空間的內存映射  95
6.4.2  IOMemoryMap類  97
6.4.3  內核到用戶空間任務的內存映射  98
6.4.4  將內存映射到指定的用戶空間任務  99
6.4.5  物理地址映射  100
6.5  小結  101
第7章 同步和線程  102
7.1  同步原語  102
7.2  原子操作  104
7.3  鎖  107
7.3.1  自旋鎖  107
7.3.2  互斥  109
7.3.3  條件變量  110
7.3.4  讀/寫互斥  112
7.4  同步異步事件:工作環(huán)  113
7.4.1  IOCommandGate  115
7.4.2  定時器  116
7.4.3  釋放工作環(huán)  117
7.5  內核線程  118
7.6  小結  119
第8章 USB  120
8.1  USB體系結構  120
8.1.1  USB傳輸速度  122
8.1.2  主機控制器  123
8.1.3  USB協(xié)議  124
8.1.4  端點  126
8.1.5  USB描述符  126
8.1.6  USB設備類  127
8.2  I/O Kit USB支持  128
8.2.1  USB設備和驅動程序處理  129
8.2.2  加載USB驅動程序  130
8.2.3  USB Prober  132
8.2.4  驅動程序示例:USB大容量存儲器設備驅動程序  133
8.2.5  驅動程序啟動  138
8.2.6  處理設備移除  138
8.2.7  枚舉接口  139
8.2.8  枚舉端點  140
8.2.9  執(zhí)行設備請求  141
8.2.10  執(zhí)行批量端點和中斷端點的I/O  144
8.3  小結  147
第9章 PCI Express和Thunderbolt  148
9.1  I/O Kit中的PCI  150
9.1.1  匹配和加載驅動程序  151
9.1.2  驅動程序示例:一個簡單的PCI驅動程序  154
9.1.3  訪問配置空間寄存器  156
9.1.4  PCI I/O內存區(qū)  158
9.1.5  處理設備移除  161
9.2  中斷  162
9.2.1  I/O Kit中斷機制  163
9.2.2  注冊接收中斷  164
9.2.3  啟用MSI  166
9.2.4  處理主中斷  166
9.2.5  處理二級中斷  168
9.3  直接內存訪問  168
9.3.1  將物理地址轉換為總線地址  170
9.3.2  為DMA準備內存  171
9.3.3  建立分散/聚集列表  172
9.3.4  IODMACommand類  173
9.4  小結  175
第10章 電源管理  177
10.1  響應電源狀態(tài)改變  179
10.2  請求電源狀態(tài)改變  184
10.3  處理設備空閑  185
10.4  觀察設備電源狀態(tài)改變  186
10.5  匯總  187
10.6  小結  191
第11章 串行端口驅動程序  192
11.1  Mac OS X串行端口體系結構概覽  192
11.2  串行端口驅動程序  194
11.3  實現IOSerialDriverSync類  197
11.4  串行端口狀態(tài)  200
11.5  串行端口事件  204
11.6  串行數據傳輸  207
11.7  從用戶空間訪問串行端口  211
11.8  小結  214
第12章 音頻驅動程序  215
12.1  數字音頻和音頻設備簡介  215
12.2  Core Audio  217
12.3  I/O Kit音頻支持  218
12.4  實現一個音頻驅動程序  219
12.4.1  驅動程序和硬件初始化  221
12.4.2  注冊音頻控制  223
12.4.3  實現音頻引擎  225
12.4.4   I/O引擎初始化  226
12.4.5  其他的音頻引擎功能  235
12.5  小結  236
第13章 網絡  238
13.1  網絡內核擴展  242
13.1.1  內核控制KPI  242
13.1.2  套接字過濾器  242
13.1.3  因特網協(xié)議過濾器  250
13.1.4  接口過濾器  255
13.2  調試和測試網絡擴展  258
13.3  I/O Kit中的網絡  259
13.3.1  構建簡單以太網控制器驅動程序  261
13.3.2  MyEthernetDriver設計  262
13.3.3  驅動程序初始化和啟動  264
13.3.4  介質和狀態(tài)選擇  266
13.3.5  配置設備硬件地址  268
13.3.6  啟用和禁用設備  268
13.3.7  傳輸網絡分組  270
13.3.8  接收分組  271
13.3.9  對MyEthernetDriver進行測試  274
13.4  小結  276
第14章 存儲系統(tǒng)  277
14.1  傳輸層驅動程序  278
14.2  IOBlockStorageDevice接口  279
14.3  構建RAM磁盤設備  282
14.4  分區(qū)規(guī)則  292
14.4.1  實現一個示例分區(qū)規(guī)則  293
14.4.2  媒介內容線索屬性  300
14.5  媒介過濾器驅動程序  300
14.5.1  加密過濾器規(guī)則示例  302
14.5.2  創(chuàng)建一個自定義GUID分區(qū)表  306
14.6  小結  308
第15章 用戶空間USB驅動程序  310
15.1  背景  310
15.2  IOUSBLib框架  311
15.3  處理異步操作  315
15.4  IOUSBDeviceInterface類  316
15.5  IOUSBInterfaceInterface類  320
15.5.1  屬性方法  321
15.5.2  端點數據傳輸方法  322
15.5.3  低延遲同步傳輸  328
15.6  小結  330
第16章 調試  331
16.1  常見的問題類型  331
16.2  內核恐慌  332
16.3  調試機制  333
16.3.1  啟動時修復崩潰  335
16.3.2  采用IOLog()追蹤  335
16.3.3  輸出棧跟蹤  336
16.3.4  通過FireWire遠程跟蹤  337
16.3.5  遠程內核核心轉儲  339
16.3.6  KDB  340
16.3.7  通過以太網或FireWire使用GDB遠程調試  340
16.3.8  實時調試運行的內核  344
16.3.9  使用虛擬機調試  344
16.3.10  在內核中使用GDB調試  344
16.3.11  使用Activity Monitor診斷掛起進程  354
16.3.12  查找內存和資源泄漏  355
16.4  小結  356
第17章 高級內核編程  357
17.1  內核中的SSE和浮點  357
17.2  多功能驅動程序  358
17.3  編寫I/O Kit族  358
17.4  內核控制KPI  359
17.4.1  內核控制注冊  361
17.4.2  客戶端連接  362
17.4.3  獲取和設置選項  363
17.4.4  從用戶空間訪問內核控制  364
17.5  內核中的進程處理  365
17.6  加載資源  366
17.7  KEXT資源之外的內容  367
17.8  內核驅動程序通知  368
17.9  小結  371
第18章 部署  372
18.1  安裝和加載內核擴展  372
18.2  加載首選項和設置  374
18.3  內核擴展的版本管理  375
18.4  測試和品質保證  375
18.5  打包KEXT和軟件  376
18.5.1  構建Hello World內核擴展安裝包  378
18.5.2  將內容添加至安裝包  378
18.5.3  配置安裝包  379
18.5.4  構建安裝包  382
18.5.5  卸載安裝包  383
18.6  小結  383
索引  385
 






本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號