注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計其他編程語言/工具UNIX xv6內(nèi)核源碼深入剖析

UNIX xv6內(nèi)核源碼深入剖析

UNIX xv6內(nèi)核源碼深入剖析

定 價:¥99.00

作 者: 高聯(lián)雄
出版社: 清華大學(xué)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302614630 出版時間: 2022-11-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  本書對UNIX xv6的源碼進行了深入剖析和詳細注解,同時配合大量實例與圖表,對每個模塊先提煉關(guān)鍵數(shù)據(jù)結(jié)構(gòu)和核心方法,再結(jié)合源碼分析其工作機制,讓讀者明白其原理及具體實現(xiàn),以求理論和實踐能力同步提升,為深入理解操作系統(tǒng)原理乃至進一步研究學(xué)習(xí)Linux和Android等類UNIX系統(tǒng)內(nèi)核打下堅實基礎(chǔ)。 本書第1章對xv6進行概述;第2章介紹xv6操作系統(tǒng)結(jié)構(gòu);第3章介紹xv6開發(fā)、測試和運行的軟件環(huán)境;第4章簡要介紹x86計算機組成原理;第5章介紹x86的實模式與保護模式;第6章深入分析xv6的啟動;第7~10章介紹xv6的虛擬空間管理、中斷與系統(tǒng)調(diào)用、鎖以及進程管理,第11、12章介紹xv6的文件系統(tǒng);第13章介紹exec()函數(shù)、管道與字符串的實現(xiàn);第14章介紹xv6的多處理器支持;第15章介紹字符設(shè)備驅(qū)動;第16章介紹用戶進程的初始化、API和Shell的實現(xiàn)。 本書適合操作系統(tǒng)初、中級學(xué)習(xí)者,系統(tǒng)程序員,嵌入式系統(tǒng)開發(fā)者以及對UNIX和Linux等類UNIX內(nèi)核感興趣的讀者。

作者簡介

  高聯(lián)雄,北京郵電大學(xué)博士,昆明學(xué)院副教授、碩導(dǎo),主要研究領(lǐng)域為信號與信息處理。先后主持和參與了華為鴻蒙操作系統(tǒng)實驗等省部級以上教學(xué)和科研項目10余項,參與的研究工作還獲得了省部級科技進步獎;潛心操作系統(tǒng)教學(xué)二十余年,從UNIX、MINIX、Linux到xv6,每一個重要的操作系統(tǒng)均深入內(nèi)核研讀源碼并應(yīng)用于教學(xué)之中;鑒于xv6的簡潔優(yōu)美,耗費兩年游刃其間,寫成《UNIX xv6內(nèi)核源碼深入剖析》一書。

圖書目錄

第1章  xv6概述
1.1  xv6的前身UNIX
1.1.1  UNIX發(fā)展簡史
1.1.2  UNIX家族
1.2  xv6的誕生
1.3  xv6的源碼與文檔
第2章  xv6操作系統(tǒng)結(jié)構(gòu)
2.1  xv6體系結(jié)構(gòu)
2.1.1  硬件與內(nèi)核
2.1.2  界面
2.1.3  內(nèi)核態(tài)與用戶態(tài)
2.2  進程管理
2.3  虛擬內(nèi)存、文件與I/O設(shè)備驅(qū)動
2.4  系統(tǒng)調(diào)用、API與內(nèi)核函數(shù)
2.4.1  系統(tǒng)調(diào)用
2.4.2  API
2.4.3  內(nèi)核函數(shù)
第3章  xv6的軟件環(huán)境
3.1  xv6的C語言技巧
3.1.1  static
3.1.2  inline
3.1.3  函數(shù)指針
3.1.4  函數(shù)指針示例
3.1.5  雙重指針
3.2  AT&T匯編與內(nèi)聯(lián)匯編
3.2.1  AT&T匯編
3.2.2  GCC內(nèi)聯(lián)匯編
3.3  函數(shù)調(diào)用與堆棧
3.3.1  棧幀、寄存器慣例與調(diào)用約定
3.3.2  棧幀示例1
3.3.3  棧幀示例2
3.3.4  匯編語言中調(diào)用C語言函數(shù)
3.3.5  C語言函數(shù)調(diào)用匯編語言函數(shù)
3.4  xv6編譯、調(diào)試與鏈接
3.4.1  gcc命令
3.4.2  make命令
3.4.3  xv6的Makefile文件
3.4.4  gdb命令
3.4.5  ELF文件結(jié)構(gòu)
3.4.6  使用ld命令鏈接xv6
3.5  Bochs與QEMU模擬器
3.5.1  Bochs模擬器
3.5.2  Bochs模擬器的配置
3.5.3  QEMU模擬器選項及內(nèi)核調(diào)試
第4章  x86計算機組成原理
4.1  計算機系統(tǒng)
4.2  計算機硬件系統(tǒng)
4.2.1  硬件組成
4.2.2  總線
4.3  CPU
4.3.1  Cache與指令部件
4.3.2  MMU與BIU
4.3.3  寄存器組
4.4  內(nèi)存
4.5  中斷系統(tǒng)
4.5.1  中斷
4.5.2  中斷控制器與中斷處理程序
4.6  I/O端口與外設(shè)
4.6.1  I/O端口與端口尋址
4.6.2  控制器與I/O設(shè)備
第5章  x86實模式與保護模式
5.1  x86的地址與工作模式
5.1.1  地址的概念
5.1.2  16位實模式
5.1.3  32位保護模式
5.2  A20地址線
5.3  保護模式與段寄存器
5.3.1  分段機制
5.3.2  邏輯地址轉(zhuǎn)換為線性地址
5.3.3  段選擇符
5.3.4  段寄存器
5.3.5  xv6的段選擇符和段寄存器的設(shè)定
5.4  描述符
5.4.1  描述符格式
5.4.2  非系統(tǒng)描述符
5.4.3  系統(tǒng)描述符
5.4.4  xv6中的描述符
5.5  描述符表、TSS與特權(quán)等級保護
5.5.1  描述符表
5.5.2  TSS與任務(wù)切換
5.5.3  系統(tǒng)地址寄存器
5.5.4  段的特權(quán)等級保護
5.6  xv6的段管理
5.6.1  實模式下的段
5.6.2  保護模式引導(dǎo)階段的GDT
5.6.3  內(nèi)核的GDT
5.6.4  IDT
5.6.5  TSS與TR
5.7  保護模式分頁機制
5.7.1  控制寄存器
5.7.2  分頁機制
5.7.3  CR3、頁目錄項與頁表項的格式
5.7.4  虛擬地址與物理地址的轉(zhuǎn)換
5.8  xv6的地址空間
第6章  xv6的啟動
6.1  概述
6.1.1  引導(dǎo)扇區(qū)與啟動流程
6.1.2  啟動過程的地址空間設(shè)置
6.1.3  啟動過程的堆棧
6.2  BP的引導(dǎo)
6.2.1  BP從實模式進入保護模式
6.2.2  進入32位模式
6.2.3  調(diào)用bootmain()函數(shù)
6.2.4  BP加載內(nèi)核映像文件
6.3  BP進入內(nèi)核
6.3.1  內(nèi)核入口地址
6.3.2  內(nèi)核的進入
6.4  BP的初始化
6.4.1  運行主函數(shù)
6.4.2  啟動AP
6.5  AP的進入與初始化
6.5.1  AP的進入
6.5.2  AP的初始化
第7章  虛擬空間管理
7.1  虛擬地址空間布局與映射
7.1.1  虛擬地址空間及布局
7.1.2  內(nèi)核空間映射
7.1.3  內(nèi)核的幾個特殊地址
7.2  空間初始化、分配與釋放
7.2.1  空閑幀管理
7.2.2  內(nèi)核頁面分配
7.2.3  內(nèi)存初始化
7.2.4  空間釋放
7.3  內(nèi)核虛擬空間管理
7.3.1  內(nèi)核虛擬空間分配、構(gòu)建與切換
7.3.2  頁面映射與頁表查找
7.4  用戶空間管理
7.4.1  初始進程的用戶空間
7.4.2  用戶空間加載
7.4.3  用戶空間復(fù)制
7.4.4  用戶空間切換
7.4.5  用戶空間分配與釋放
第8章  中斷與系統(tǒng)調(diào)用
8.1  xv6中斷處理
8.1.1  IDT初始化
8.1.2  xv6中斷號
8.1.3  中斷向量數(shù)組與中斷向量
8.1.4  中斷響應(yīng)與中斷返回
8.1.5  中斷處理程序
8.2  系統(tǒng)調(diào)用
8.2.1  系統(tǒng)調(diào)用函數(shù)
8.2.2  系統(tǒng)調(diào)用函數(shù)的實現(xiàn)
8.2.3  系統(tǒng)調(diào)用分派
8.2.4  函數(shù)指針數(shù)組與系統(tǒng)函數(shù)
8.2.5  提取調(diào)用參數(shù)
8.2.6  系統(tǒng)調(diào)用示例
8.3  驅(qū)動程序
8.4  中斷與系統(tǒng)調(diào)用及內(nèi)核堆棧
8.4.1  中斷與系統(tǒng)調(diào)用處理過程
8.4.2  中斷的內(nèi)核堆棧
第9章  鎖
9.1  自旋鎖
9.1.1  自旋鎖的概念
9.1.2  自旋鎖的實現(xiàn)
9.2  睡眠鎖
9.2.1  睡眠鎖的概念
9.2.2  睡眠鎖的實現(xiàn)
9.3  內(nèi)核的死鎖
第10章  進程管理
10.1  進程的基本概念
10.1.1  進程的概念
10.1.2  進程的狀態(tài)與生命周期
10.1.3  進程的上下文
10.1.4  處理器結(jié)構(gòu)體、當前處理器與當前進程
10.2  進程的切換
10.2.1  上下文切換原理
10.2.2  切換函數(shù)的定義
10.2.3  切換函數(shù)的實現(xiàn)
10.2.4  切換函數(shù)的詳細解釋
10.2.5  上下文切換與陷阱幀
10.3  進程調(diào)度與進程表
10.3.1  進程的調(diào)度
10.3.2  進程表
10.4  進程的生成、退出與等待
10.4.1  進程的生成、退出與等待示例
10.4.2  創(chuàng)建子進程
10.4.3  進程退出與等待
10.5  進程的睡眠與喚醒
10.5.1  條件同步
10.5.2  空等問題
10.5.3  喚醒丟失問題
10.5.4  睡眠與喚醒函數(shù)的實現(xiàn)
10.6  進程讓出與殺死進程
10.7  系統(tǒng)的初始進程
10.7.1  初始進程的建立
10.7.2  切換入初始進程
第11章  文件系統(tǒng)
11.1  概述
11.1.1  文件系統(tǒng)的功能
11.1.2  文件系統(tǒng)的分層
11.1.3  磁盤布局
11.2  磁盤層
11.2.1  磁盤初始化
11.2.2  磁盤中斷處理
11.2.3  磁盤讀寫
11.3  塊緩存層
11.3.1  緩沖塊結(jié)構(gòu)體
11.3.2  塊緩存及其初始化
11.3.3  緩沖塊讀取
11.3.4  緩沖塊寫入與釋放
11.3.5  緩沖塊的使用
11.4  日志層
11.4.1  事務(wù)與日志
11.4.2  日志
11.4.3  日志的靜態(tài)函數(shù)
11.4.4  日志的對外接口
11.4.5  事務(wù)的操作與實現(xiàn)
11.5  磁盤塊管理
11.6  i節(jié)點
11.6.1  磁盤i節(jié)點
11.6.2  i節(jié)點及其鎖
11.6.3  icache初始化與i節(jié)點更新
11.6.4  i節(jié)點的分配、獲取、復(fù)制與釋放
11.6.5  i節(jié)點的映射、截斷、狀態(tài)與讀寫
11.7  目錄層
11.7.1  目錄項
11.7.2  目錄項查找
11.7.3  目錄項鏈接
11.7.4  通過路徑查找i節(jié)點
第12章  文件描述符與系統(tǒng)調(diào)用
12.1  文件描述符層
12.1.1  文件結(jié)構(gòu)體
12.1.2  文件表及其初始化
12.1.3  文件分配、文件指針復(fù)制與關(guān)閉
12.1.4  文件狀態(tài)與文件讀寫
12.2  系統(tǒng)調(diào)用層
12.2.1  文件系統(tǒng)調(diào)用
12.2.2  鏈接與刪除鏈接
12.2.3  文件創(chuàng)建
12.2.4  文件打開
12.2.5  文件讀寫
12.2.6  管道
12.2.7  載入執(zhí)行
第13章  exec()函數(shù)、管道與字符串
13.1  exec()函數(shù)
13.1.1  內(nèi)核函數(shù)exec()
13.1.2  系統(tǒng)調(diào)用函數(shù)exec()
13.2  管道
13.2.1  管道結(jié)構(gòu)體
13.2.2  管道的分配、關(guān)閉與讀寫
13.2.3  管道系統(tǒng)調(diào)用函數(shù)
13.3  字符串
第14章  多處理器
14.1  多處理器系統(tǒng)架構(gòu)
14.2  多處理器配置的數(shù)據(jù)結(jié)構(gòu)
14.2.1  多處理器環(huán)境與內(nèi)存布局
14.2.2  mp結(jié)構(gòu)體
14.2.3  MP配置表頭
14.2.4  MP配置表表項
14.3  LAPIC
14.3.1  LAPIC的結(jié)構(gòu)
14.3.2  LAPIC的寄存器
14.3.3  LAPIC ID與版本
14.3.4  ICR與AP啟動
14.3.5  LAPIC計時器
14.3.6  偽中斷
14.3.7  LVT與ICR
14.3.8  EOI與TPR
14.3.9  LAPIC可接收的中斷源
14.4  I/O APIC
14.4.1  I/O APIC寄存器
14.4.2  I/O APIC寄存器訪問
14.4.3  I/O APIC初始化與中斷打開
第15章  字符設(shè)備驅(qū)動
15.1  鍵盤
15.1.1  鍵盤端口
15.1.2  掃描碼
15.1.3  中斷處理與驅(qū)動
15.2  控制臺
15.2.1  控制臺與文件讀寫
15.2.2  控制臺輸入
15.2.3  控制臺輸出
15.2.4  標準文件初始化
15.3  控制臺輸出示例
15.4  串口通信
15.4.1  UART硬件
15.4.2  UART端口
15.4.3  UART初始化
15.4.4  UART輸入輸出與中斷處理
第16章  初始進程、API與Shell
16.1  初始進程
16.1.1  載入初始用戶程序
16.1.2  初始用戶程序init
16.2  API
16.2.1  API的定義和實現(xiàn)
16.2.2  接口函數(shù)使用示例
16.3  Shell
16.3.1  Shell概述
16.3.2  程序sh的主要功能
16.4  命令結(jié)構(gòu)體及其構(gòu)造與運行
16.4.1  命令
16.4.2  載入執(zhí)行命令
16.4.3  重定向命令
16.4.4  管道命令
16.4.5  并列命令
16.4.6  后臺命令
16.5  輸入字符串的解析
16.5.1  命令解析
16.5.2  行解析
16.5.3  管道命令解析
16.5.4  重定向命令解析
16.5.5  塊解析函數(shù)
16.5.6  載入執(zhí)行命令解析
16.5.7  提取操作符
參考文獻
附錄A  縮略語與術(shù)語
 
 
 

本目錄推薦

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