注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)x86匯編語言:編寫64位多處理器多線程操作系統(tǒng)

x86匯編語言:編寫64位多處理器多線程操作系統(tǒng)

x86匯編語言:編寫64位多處理器多線程操作系統(tǒng)

定 價:¥128.00

作 者: 李忠 王曉波 李雙圓
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787121479083 出版時間: 2024-06-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  編寫一個簡單的、簡易的操作系統(tǒng)雛形,用來演示64位環(huán)境下的多處理器管理、動態(tài)內(nèi)存分配、多處理器多任務的調(diào)度和切換、多處理器多線程的調(diào)度和切換、數(shù)據(jù)競爭和鎖,但它不包括文件管理、設備管理等內(nèi)容。本書主要聚焦以下問題:1,與IA-32架構進行對比,介紹64位處理器的基本架構,包括寄存器的變化、指令集和工作模式的變化、系統(tǒng)表的變化、內(nèi)存組織和內(nèi)存訪問模式的變化;2,IA-32e模式的特點及如何進入IA-32e模式,重點介紹其64位子模式;3,IA-32e模式的4級和5級分頁;4,IA-32e模式下的中斷和異常處理;5,64位模式下的單處理器多任務和任務切換;6,64位模式下的多處理器管理和初始化,包括高級可編程中斷控制器APIC;7,64位模式下的多處理器多任務和任務切換;8,64位模式下的多處理器多線程和線程切換;9,高速緩存及與多線程有關的原子操作、鎖、線程同步,等等。

作者簡介

  李忠,2000年至今,長春電視臺。主要出版著作《穿越計算機的迷霧》(第1、第2版)《x86匯編語言:從實模式到保護模式》(第1、第2版)《C語言非常道》等。

圖書目錄

目 錄
第1章 基本要求和相關說明 1
1.1 配書代碼和工具 1
1.2 NASM的下載和安裝 1
1.3 NASMIDE的下載和使用 3
1.4 下載和安裝VirtualBox 7
1.5 使用FixVhdWr將程序寫入虛擬硬盤 8
1.6 本書的代碼組織 10
第2章 x64架構的基本執(zhí)行環(huán)境 37
2.1 x64架構的由來 37
2.2 物理地址、有效地址和線性地址 39
2.3 x64架構的工作模式 40
2.3.1 x86處理器的工作模式 40
2.3.2 IA-32e模式及其子模式 41
2.4 x64架構的寄存器 43
2.4.1 x64架構對通用寄存器的擴展 43
2.4.2 x64架構的通用寄存器訪問規(guī)則 45
2.5 x86處理器的物理地址空間 46
2.6 傳統(tǒng)模式的內(nèi)存訪問 47
2.6.1 傳統(tǒng)模式下的線性地址和物理地址 47
2.6.2 傳統(tǒng)模式下的32位4KB分頁技術 48
2.6.3 傳統(tǒng)模式下如何利用超過4GB的物理內(nèi)存 49
2.6.4 傳統(tǒng)模式下的32位4MB分頁技術 50
2.6.5 傳統(tǒng)模式下的32位PAE分頁技術 52
2.6.6 傳統(tǒng)模式下的32位PAE-4KB分頁技術 52
2.6.7 傳統(tǒng)模式下的32位PAE-2MB分頁技術 54
2.7 IA-32e模式的內(nèi)存訪問 56
2.7.1 x64架構的線性地址空間 56
2.7.2 擴高(Canonical)地址 57
2.7.3 擴高地址的特點和處理器檢查 58
2.7.4 兼容模式的內(nèi)存訪問 59
2.7.5 64位模式的內(nèi)存訪問 60
2.7.6 x64架構的段寄存器 60
2.7.7 x64架構的代碼段描述符 61
2.7.8 x64架構的數(shù)據(jù)段描述符 62
2.7.9 x64架構的4級和5級分頁 63
2.8 x64架構的系統(tǒng)表和系統(tǒng)描述符 65
2.8.1 x64架構的GDTR 65
2.8.2 x64架構的IDTR 66
2.8.3 x64架構的LDT描述符和LDTR 67
2.8.4 x64架構的TSS描述符和TR 68
2.9 x64架構的標志寄存器和指令指針寄存器 69
2.10 x64架構的尋址方式 71
2.10.1 x64架構下傳統(tǒng)模式的尋址方式 71
2.10.2 x64架構下IA-32e模式的尋址方式 72
2.10.3 64位模式的RIP相對尋址方式 73
2.10.4 64位模式下的指令變化情況 75
2.11 IA-32e模式下的中斷和異常處理概述 77
第3章 進入IA-32e模式 79
3.1 如何進入IA-32e模式 79
3.2 本章代碼清單 81
3.3 執(zhí)行主引導程序 101
3.3.1 NASM的文件包含 101
3.3.2 主引導程序的說明 102
3.3.3 用BIOS硬盤擴展讀加載內(nèi)核加載器 103
3.3.4 通過數(shù)據(jù)段訪問棧中的數(shù)據(jù)結構 106
3.3.5 讀取內(nèi)核加載器程序的剩余部分 107
3.3.6 轉入內(nèi)核加載器執(zhí)行 109
3.4 執(zhí)行內(nèi)核加載器 110
3.4.1 檢測處理器是否支持IA-32e模式 110
3.4.2 位測試指令BT 111
3.4.3 獲取處理器的商標和地址尺寸 111
3.5 進入保護模式 115
3.6 加載內(nèi)核程序 118
3.7 為進入IA-32e模式準備4級分頁 121
3.7.1 2MB和1GB頁面的4級分頁方式 122
3.7.2 4級頭表的格式 123
3.7.3 頁目錄指針項的格式 125
3.7.4 頁目錄項和頁表項的格式 127
3.7.5 4級頭表的創(chuàng)建和初始化 129
3.7.6 創(chuàng)建指向4級頭表自身的4級頭表項 129
3.7.7 準備映射物理內(nèi)存的低端2MB空間 130
3.7.8 創(chuàng)建與低端2MB物理內(nèi)存對應的分頁系統(tǒng)表項 132
3.7.9 將物理內(nèi)存低端的2MB映射到線性地址空間的高端 134
3.7.10 為多任務環(huán)境準備必要的4級頭表項 136
3.7.11 為多任務環(huán)境預分配254個頁目錄指針表 137
3.7.12 進程上下文標識PCID 139
3.7.13 控制寄存器CR3的內(nèi)容格式 140
3.7.14 設置控制寄存器CR3并開啟物理地址擴展功能 141
3.7.15 型號專屬寄存器IA32_EFER的設置和分頁的開啟 142
3.8 進入IA-32e的兼容模式執(zhí)行 143
3.9 進入64位模式的內(nèi)核執(zhí)行 144
3.10 讓內(nèi)核工作在線性地址空間的高端 145
3.10.1 啟用GDT和棧區(qū)的高端線性地址 146
3.10.2 使用RIP相對尋址方式計算內(nèi)核的高端線性地址 147
3.10.3 讓處理器轉到內(nèi)核程序對應的高端位置繼續(xù)執(zhí)行 148
3.11 初始化IA-32e模式下的中斷系統(tǒng) 149
3.11.1 IA-32e模式下的中斷門和陷阱門 149
3.11.2 IA-32e模式下的中斷處理過程 151
3.11.3 通用的中斷和異常處理策略 152
3.11.4 通用異常服務例程的工作過程 152
3.11.5 加載有效地址指令LEA 155
3.11.6 創(chuàng)建通用異常處理過程的中斷門 156
3.11.7 安裝通用異常處理過程的中斷門 157
3.11.8 安裝通用中斷處理過程的中斷門 159
3.11.9 初始化8259中斷控制器 159
3.11.10 打印64位模式下的第一條信息 160
3.12 本章代碼的編譯和運行 162
第4章 單處理器環(huán)境下的多任務管理和調(diào)度 164
4.1 本章代碼清單 165
4.2 初始化快速系統(tǒng)調(diào)用環(huán)境 182
4.2.1 快速系統(tǒng)調(diào)用的原理 182
4.2.2 為快速系統(tǒng)調(diào)用安裝段描述符 184
4.2.3 為快速系統(tǒng)調(diào)用準備段選擇子 186
4.2.4 設置快速系統(tǒng)調(diào)用的入口點 187
4.2.5 快速系統(tǒng)調(diào)用時的RFLAGS和棧切換 188
4.3 動態(tài)內(nèi)存分配 189
4.3.1 內(nèi)核空間的分配策略 189
4.3.2 內(nèi)核可用線性地址的獲取和更新 190
4.3.3 立即數(shù)在64位模式下的長度限制 192
4.3.4 計算本次內(nèi)存分配涉及的線性地址范圍 193
4.3.5 獲取與指定線性地址對應的4級頭表項的線性地址 193
4.3.6 頁面分配與頁映射位串 196
4.3.7 頁映射位串的定義和空閑頁的查找 197
4.3.8 獲取與指定線性地址對應的頁目錄指針項的線性地址 199
4.3.9 檢查與指定線性地址對應的頁目錄指針項是否存在 201
4.3.10 分配頁目錄表并安裝與線性地址對應的頁目錄指針項 201
4.3.11 安裝與指定線性地址對應的頁目錄項、頁表項和頁面 202
4.4 創(chuàng)建并安裝TSS描述符 203
4.4.1 LDT和TSS描述符的格式 204
4.4.2 創(chuàng)建和安裝64位的TSS描述符并加載任務寄存器TR 205
4.5 初始化實時時鐘中斷 206
4.6 創(chuàng)建外殼任務 207
4.6.1 準備創(chuàng)建外殼任務 207
4.6.2 為新任務創(chuàng)建任務控制塊PCB 208
4.6.3 為新任務創(chuàng)建4級頭表 209
4.6.4 將指定的線性地址映射到指定的物理頁 211
4.6.5 復制當前活動4級頭表的內(nèi)容給新任務的4級頭表 212
4.6.6 切換到新任務的地址空間并清空4級頭表的前半部分 212
4.6.7 為新任務分配0特權級使用的??臻g 213
4.6.8 為新任務分配3特權級使用的棧空間 214
4.6.9 從硬盤上加載用戶程序 215
4.6.10 生成任務標識 216
4.6.11 將新任務的PCB添加到PCB鏈表 217
4.6.12 設置外殼任務的狀態(tài) 220
4.7 設置任務狀態(tài)段TSS 220
4.8 轉到外殼任務的局部空間執(zhí)行 221
4.9 快速系統(tǒng)調(diào)用的進入和返回 222
4.9.1 為快速系統(tǒng)調(diào)用指定功能號 223
4.9.2 根據(jù)功能號計算內(nèi)核例程的線性地址 223
4.9.3 快速系統(tǒng)調(diào)用的返回和指令前綴REX 225
4.10 利用實時時鐘中斷執(zhí)行任務切換 226
4.10.1 查找處于就緒狀態(tài)的任務 226
4.10.2 任務切換的執(zhí)行過程 227
4.11 外殼任務的執(zhí)行過程 229
4.11.1 通過系統(tǒng)調(diào)用獲取屏幕上可用的顯示行坐標 229
4.11.2 通過系統(tǒng)調(diào)用獲取當前時間 230
4.11.3 在外殼任務中顯示當前時間 231
4.12 用戶任務的創(chuàng)建和執(zhí)行 232
4.12.1 當前任務標識的獲取 233
4.12.2 用戶程序例程庫的介紹 233
4.12.3 將64位二進制數(shù)轉換為十進制字符串 234
4.12.4 在每輪相加中將結果和加數(shù)轉換為字符串 235
4.12.5 字符串的連接和顯示 236
4.12.6 用戶任務的終止 236
4.13 本章程序的編譯和執(zhí)行 238
第5章 多處理器和APIC的初始化 240
5.1 多處理器環(huán)境概述 240
5.2 同時多線程和INTEL超線程技術 241
5.3 高級可編程中斷控制器APIC 243
5.3.1 中斷引腳、中斷類型和中斷源 245
5.3.2 本地中斷源和本地向量表 246
5.3.3 APIC的工作模式和APIC ID 247
5.3.4 組成Local APIC ID的處理器拓撲 248
5.3.5 Local APIC的地址映射 249
5.3.6 I/O APIC的地址映射 250
5.3.7 多處理器的初始化過程和MP規(guī)范 251
5.3.8 高級的配置和電源接口(ACPI)規(guī)范 252
5.4 本章代碼清單 252
5.5 獲取ACPI申領的物理內(nèi)存地址范圍 271
5.5.1 ACPI的數(shù)據(jù)結構和表 271
5.5.2 E820功能調(diào)用和內(nèi)存地址范圍結構 272
5.5.3 查詢和保存物理地址映射數(shù)據(jù) 272
5.5.4 準備映射ACPI申領的內(nèi)存 274
5.5.5 映射ACPI申領的內(nèi)存 275
5.6 訪問ACPI的數(shù)據(jù)結構和表 277
5.6.1 根系統(tǒng)描述指針結構 277
5.6.2 搜索根系統(tǒng)描述指針結構 278
5.6.3 系統(tǒng)描述表的層次結構和表頭格式 278
5.6.4 擴展的系統(tǒng)描述表XSDT 280
5.6.5 通過XSDT搜索多APIC描述表MADT 281
5.6.6 根系統(tǒng)描述表RSDT 282
5.6.7 通過RSDT搜索多APIC描述表MADT 283
5.6.8 多APIC描述表MADT的格式 284
5.6.9 準備遍歷中斷控制器結構列表 286
5.6.10 從中斷控制器結構內(nèi)提取處理器和APIC信息 287
5.7 映射APIC地址 288
5.8 測量Local APIC定時器 289
5.8.1 Local APIC定時器 290
5.8.2 Local APIC定時器的精度 290
5.8.3 APIC定時器的本地向量表寄存器及其設置 291
5.8.4 設置CMOS RTC以測量Local APIC定時器 292
5.8.5 測量Local APIC定時器在1ms內(nèi)經(jīng)歷的時鐘周期數(shù) 294
5.9 使用Local APIC定時器中斷切換任務 295
5.9.1 多處理器系統(tǒng)的虛擬線模式 295
5.9.2 中斷輸入引腳LINT0的本地向量表寄存器 296
5.9.3 設置Local APIC定時器 298
5.10 使用經(jīng)由I/O APIC的中斷執(zhí)行任務切換 299
5.10.1 I/O APIC概述 300
5.10.2 I/O APIC的I/O重定向表寄存器 302
5.10.3 用I/O API

本目錄推薦

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