预购商品
书目分类
特别推荐
前 言 第1章 計算機基礎 1 1.1 認識電 1 1.2 信息表示 5 1.2.1 二進位 5 1.2.2 十六進位 6 1.3 計算 7 1.3.1 邏輯運算 8 1.3.2 邏輯門 8 1.3.3 加法器 10 1.4 記憶體 12 1.4.1 物理實現 12 1.4.2 數學抽象 16 1.5 匯流排 17 1.6 寄存器 20 1.7 程式 22 1.8 外存 26 1.9 外設及介面 27 1.9.1 I/O位址空間 28 1.9.2 記憶體映射I/O 29 1.10 位址空間 30 1.11 數學模型到物理世界 31 第2章 認識Linux 34 2.1 什麼是作業系統 34 2.2 檔案系統 35 2.3 終端 37 2.4 shell 39 2.5 Linux常用命令 40 2.6 ANSI轉義序列 43 2.7 編輯器 45 2.8 準備“物理”計算機 47 第3章 機器語言程式設計 49 3.1 程式及指令 49 3.2 補數 50 3.3 ASCII碼 52 3.4 串口 53 3.5 “向串口寫字元A”的程式流程 55 3.6 寫外設指令 55 3.7 準備源操作數 57 3.8 準備目的操作數 58 3.9 跳轉指令 59 3.10 創建程式檔 60 3.11 程式執行過程 61 3.12 使用kvmtool運行程式 69 第4章 組合語言程式設計 71 4.1 初識組合語言 71 4.2 段及段寄存器 72 4.3 指令指標寄存器 74 4.4 通用寄存器 75 4.5 標誌寄存器 76 4.6 彙編指令格式 78 4.7 第一個組合語言程式 78 4.7.1 彙編和連結 79 4.7.2 運行 80 4.7.3 顯式設置操作數的段寄存器 83 4.7.4 虛擬指令.code16 85 4.8 構建工具Make 85 4.9 操作數定址 86 4.9.1 立即數定址 87 4.9.2 直接定址 88 4.9.3 ModR/M定址 89 4.9.4 SIB定址 94 4.9.5 SIB + disp定址 98 4.10 程式運行流程控制 101 4.10.1 選擇 101 4.10.2 迴圈 102 4.11 棧 103 4.12 函數及x86調用約定 107 4.12.1 call和ret指令 108 4.12.2 棧幀 110 4.12.3 多模組及符號可見性 113 4.12.4 參數傳遞 114 4.12.5 區域變數 116 4.12.6 返回值及參數清理 118 4.12.7 寄存器保存和恢復 119 4.13 連結 122 4.13.1 目的檔案合併 123 4.13.2 符號解析 125 4.13.3 符號的可見性 128 第5章 C語言程式設計 129 5.1 基本語法 130 5.1.1 詞法元素 130 5.1.2 運算式 131 5.1.3 聲明 132 5.1.4 語句 133 5.1.5 識別字 135 5.1.6 物件的存儲類別 138 5.1.7 標頭檔 138 5.1.8 預處理指令 139 5.2 C語言入口 141 5.3 第一個C程式 142 5.4 從C語言到機器語言 143 5.5 變數 145 5.5.1 變數類型 146 5.5.2 區域變數 147 5.5.3 全域變數 150 5.5.4 全域變數的連結性 151 5.5.5 靜態區域變數 152 5.5.6 變數類型轉換 154 5.5.7 溢出 155 5.6 運算 157 5.6.1 算數運算 157 5.6.2 遞增和遞減 158 5.6.3 關係運算 159 5.6.4 邏輯運算 161 5.6.5 位運算 163 5.6.6 賦值運算 164 5.6.7 運算的優先順序和結合性 165 5.7 程式運行流程控制 166 5.7.1 選擇 166 5.7.2 迴圈 168 5.8 數組 172 5.9 結構體 175 5.9.1 基本語法 175 5.9.2 記憶體佈局 176 5.9.3 位域 179 5.10 指針 180 5.10.1 基本語法 181 5.10.2 指向結構體的指標 183 5.10.3 指針的+/-運算 185 5.10.4 雙指針 186 5.10.5 void指針 188 5.10.6 空指針 189 5.11 函數 189 5.11.1 基本語法 189 5.11.2 參數的值傳遞和指針傳遞 191 5.11.3 const參數 195 5.11.4 函數指針 195 5.12 內聯彙編 197 第6章 32位引導過程 200 6.1 真實模式 200 6.2 保護模式 201 6.3 內核映射組成及佈局 203 6.3.1 真實模式位址空間 203 6.3.2 內核映射的佈局 205 6.3.3 內核映射檔組織 206 6.4 創建保護模式的段描述符 207 6.4.1 段描述符格式 207 6.4.2 保護模式的內核程式碼片段描述符 208 6.4.3 保護模式的內核數據段描述符 210 6.4.4 創建保護模式的段描述符表 210 6.5 告知處理器段描述符表位址 211 6.6 開啟處理器保護模式 212 6.7 跳轉到內核保護模式部分 213 6.7.1 準備保護模式部分 213 6.7.2 跳轉到保護模式部分 214 6.8 編譯及創建內核映射檔 215 6.8.1 編譯內核 215 6.8.2 組裝內核映射檔 217 6.9 使用Make構建內核 220 第7章 64位引導過程 222 7.1 記憶體分頁 222 7.1.1 為什麼要分頁 222 7.1.2 分頁模式下的位址翻譯過程 224 7.1.3 程式的虛擬位址空間 225 7.1.4 分頁模式下的定址 225 7.1.5 頁表 226 7.2 64位元模式下程式的虛擬位址空間 228 7.3 創建64位元模式的臨時段描述符表 229 7.3.1 程式碼片段 230 7.3.2 數據段 231 7.3.3 為64位元模式創建臨時段描述符表 231 7.4 建立內核映射的虛擬位址到物理位址的映射 233 7.4.1 建立四級頁表映射 234 7.4.2 建立三級頁表映射 235 7.4.3 建立二級頁表映射 236 7.4.4 建立一級頁表映射 239 7.5 建立恒等映射 240 7.6 切入64位元模式 244 7.6.1 使能PAE 244 7.6.2 設置CR3指向頁表 244 7.6.3 使能64位元模式 245 7.6.4 開啟分頁 245 7.6.5 跳轉到64位元部分 246 7.7 走進內核64位元部分 248 7.7.1 創建64位元模式段描述符表 248 7.7.2 轉換到內核位址空間 251 7.7.3 構建內核64位元部分 254 第8章 記憶體管理 258 8.1 獲取記憶體信息 258 8.1.1 BIOS簡介 258 8.1.2 讀取記憶體信息 260 8.1.3 E820的C數據結構表示 262 8.1.4 計算實體記憶體大小 263 8.1.5 print的實現 264 8.1.6 使用Make內置函數提取文件 266 8.1.7 創建Make中的文件依賴關係 267 8.2 頁面管理 269 8.2.1 劃分頁面 269 8.2.2 為內核映射保留頁面 270 8.2.3 分配頁面 271 8.2.4 歸還頁面 272 8.3 映射實體記憶體 272 8.3.1 線性映射 274 8.3.2 第1階段映射 275 8.3.3 第2階段映射 278 8.4 區塊管理 281 8.4.1 塊管理數據組織 281 8.4.2 分配區塊 284 8.4.3 釋放區塊 289 第9章 進程 292 9.1 程式運行環境 292 9.2 創建應用程式 293 9.3 創建任務結構體 295 9.4 建立進程位址映射 297 9.4.1 內核空間映射 298 9.4.2 用戶空間映射 299 9.5 創建進程任務狀態段及內核棧 300 9.5.1 準備任務狀態段及內核棧 302 9.5.2 創建任務狀態段的段描述符 304 9.5.3 設置任務寄存器 307 9.6 偽造中斷現場 307 9.7 設置CR3指向進程頁表 310 9.8 進入用戶空間 310 9.9 I/O埠存取權限控制 311 第10章 中斷和異常 313 10.1 中斷及其處理過程 313 10.1.1 可程式設計中斷控制器8259A 314 10.1.2 進階可程式中斷控制卡APIC 317 10.1.3 MSI 317 10.2 初始化8259A 318 10.3 組織中斷描述符表 321 10.3.1 初始化中斷描述符表 322 10.3.2 設置中斷寄存器 324 10.4 時鐘中斷 325 10.4.1 時鐘中斷處理函數 325 10.4.2 設置時鐘中斷描述符 327 10.4.3 程式設計時鐘晶片8254 327 10.4.4 開啟中斷 329 10.4.5 現場保存和恢復 329 10.5 缺頁異常 334 第11章 進程調度 338 11.1 任務狀態 338 11.2 創建進程 339 11.3 空閒任務 341 11.4 任務調度 342 11.5 任務切換 345 第12章 系統調用 349 12.1 系統調用工作機制 349 12.2 內核系統調用入口 351 12.3 設置MSR寄存器 354 12.4 實現系統調用sleep 357 12.5 C庫 360 12.6 應用調用sleep掛起 362 第13章 進程間通信 364 13.1 共用記憶體原理 364 13.2 內核共用記憶體實現 366 13.3 C庫實現共用記憶體介面 368 13.4 應用使用共用記憶體通信 368 第14章 顯示及輸入 370 14.1 圖形處理器 370 14.2 文字模式和圖形模式 371 14.3 獲取模式信息 373 14.4 將framebuffer映射到用戶空間 374 14.5 應用獲取模式信息 376 14.6 設計字體 377 14.7 圖形庫 379 14.8 應用繪製 383 14.9 鍵盤輸入 384
王柏生 資深作業系統技術專家,北京市科學技術進步獎一等獎獲得者。有20餘年作業系統研發經驗,現任百度主任架構師,曾就職於中國科學院軟體研究所、紅旗Linux,一直從事作業系統相關領域的研發工作,在作業系統領域有深厚積累。著有《深度探索Linux系統虛擬化》《深度探索Linux作業系統》等暢銷書。 王晟寒 對計算機技術有著濃厚的興趣,9歲開始跟隨爸爸學習編寫作業系統,在爸爸的指導下,自己動手完成了本書作業系統的編寫。5歲開始學習小提琴,現為學校交響樂團成員。業餘時間熱愛閱讀,喜歡游泳、籃球等體育運動。
最近浏览商品
客服公告
热门活动
订阅电子报