出版時(shí)間:2010 年6月 出版社:電子工業(yè)出版社 作者:郝慶豐 頁數(shù):751
Tag標(biāo)簽:無
內(nèi)容概要
操作系統(tǒng)是一種對計(jì)算機(jī)中各個(gè)設(shè)備和資源進(jìn)行管理并給應(yīng)用軟件提供各種服務(wù)的系統(tǒng)軟件,它的實(shí)現(xiàn)可分用戶態(tài)和內(nèi)核態(tài)兩大部分。一般而言,操作系統(tǒng)的算法和設(shè)計(jì)的復(fù)雜性大多在內(nèi)核態(tài)部分。因此,了解操作系統(tǒng)的內(nèi)核實(shí)現(xiàn)對于了解整個(gè)操作系統(tǒng)是非常重要的?! ”緯敿?xì)闡述操作系統(tǒng)的內(nèi)核(也包括少量用戶態(tài)部分),選擇UNIX第6版的全部內(nèi)核代碼及少量用戶部分代碼、總計(jì)10 000行作為講解對象,由框架到細(xì)節(jié)、由基礎(chǔ)到高級地進(jìn)行講述;在此過程中貫穿了操作系統(tǒng)中的各種知識和概念,比如內(nèi)存管理、進(jìn)程調(diào)度、中斷和設(shè)備管理以及文件系統(tǒng)等,使得內(nèi)容非常易于讀者理解?! ∵x擇UNIX作為講解對象是因?yàn)樗鼜?qiáng)大的生命力和應(yīng)用的廣泛性。在精妙的設(shè)計(jì)思想下,它具有小巧高效而健壯的內(nèi)核、豐富的功能、易擴(kuò)展的架構(gòu)和良好的開放性。UNIX所定義的很多接口(比如文件訪問接口)已經(jīng)成為行業(yè)標(biāo)準(zhǔn)。本書在講解時(shí),作者把這10 000行代碼按照不同的功能模塊分成不同的章節(jié)。每章一般最小以函數(shù)為單位,但在講解某個(gè)功能或接口時(shí),又會牽涉到很多相關(guān)的函數(shù),并其中揭示了很多優(yōu)秀的設(shè)計(jì)思想、數(shù)據(jù)結(jié)構(gòu)和算法?! ”緯m用于具有豐富開發(fā)經(jīng)驗(yàn)的高級軟件工程師,尤其是有志于進(jìn)行操作系統(tǒng)研究或?qū)Σ僮飨到y(tǒng)實(shí)現(xiàn)感興趣的軟件工程師,也可作為本專科院校計(jì)算機(jī)及相關(guān)專業(yè)學(xué)生學(xué)習(xí)操作系統(tǒng)和C語言的參考書。初級軟件開發(fā)人員在閱讀本書時(shí)可能會碰到一些困難,但如能堅(jiān)持研究,它也會是你提高編程水平的一個(gè)很好的選擇。
作者簡介
郝慶豐,畢業(yè)于清華大學(xué)電機(jī)系,曾在朗訊、愛立信等知名外企從事多年的軟件開發(fā)工作,有著多個(gè)UNIX和Linux平臺下大型服務(wù)器、網(wǎng)關(guān)項(xiàng)目的開發(fā)經(jīng)驗(yàn),并且參與過其中大部分項(xiàng)目的架構(gòu)設(shè)計(jì)。結(jié)合所開發(fā)項(xiàng)目,作者深入研究了UNIX操作系統(tǒng)內(nèi)核,并付諸于產(chǎn)品性能優(yōu)化之類的實(shí)際應(yīng)用,現(xiàn)在IBMCDL部門擔(dān)任高級軟件開發(fā)工程師。
書籍目錄
第1章 概論 1.1 歷史背景 1.2 UNIX誕生的經(jīng)過 1.3 UNIX版本6 1.4 各流派一覽 1.5 為什么取得成功 1.5.1 簡潔高效 1.5.2 健壯性 1.5.3 功能豐富 1.5.4 移植性 1.5.5 開放性 1.6 縮寫及術(shù)語說明 第2章 UNIX綜述 2.1 硬件平臺 2.1.1 中斷和自陷(Trap) 2.1.2 兩種處理器模式 2.1.3 通用寄存器 2.1.4 I/O設(shè)備管理 2.1.5 棧(Stack) 2.1.6 常用指令 2.1.7 備注 2.2 UNIX內(nèi)核綜述 2.2.1 模塊分類 2.2.2 各模塊間的通信 2.2.3 源文件 2.2.4 語法規(guī)則和編碼風(fēng)格說明 2.3 思考題 第3章 虛擬內(nèi)存 3.1 簡介 3.2 虛擬內(nèi)存的優(yōu)點(diǎn) 3.2.1 安全性 3.2.2 提高空間利用率 3.2.3 多進(jìn)程的支持 3.3 PDP11/40的虛擬內(nèi)存機(jī)制 3.3.1 頁地址寄存器(PAR) 3.3.2 頁描述寄存器(PDR) 3.3.3 活動頁寄存器地址 3.3.4 虛擬地址向物理地址的映射過程 3.3.5 異常處理 3.3.6 和現(xiàn)代頁式虛存的比較 3.4 UNIX的虛存實(shí)現(xiàn) 3.4.1 進(jìn)程空間分布 3.4.2 用戶活動頁寄存器設(shè)置函數(shù)estabur 3.4.3 用戶空間映射函數(shù)sureg 3.5 內(nèi)存管理 3.5.1 內(nèi)核內(nèi)存管理 3.5.2 用戶內(nèi)存管理 3.6 思考題 第4章 啟動模塊 4.1 操作流程 4.2 中斷向量 4.3 啟動函數(shù)start 4.4 備注 4.4.1 為什么需要引導(dǎo)程序和裝入程序 4.4.2 0地址處指令分析 4.4.3 為什么要使用匯編語言 4.4.4 Windows啟動過程淺析 4.5 思考題 第5章 進(jìn)程管理和調(diào)度 5.1 程序員眼中的虛擬機(jī) 5.2 系統(tǒng)資源 5.3 進(jìn)程上下文 5.4 進(jìn)程調(diào)度 5.5 UNIX實(shí)現(xiàn) 5.5.1 進(jìn)程上下文 5.5.2 進(jìn)程的兩種狀態(tài) 5.5.3 調(diào)度過程 5.5.4 備注 5.6 思考題 第6章 中斷處理過程 6.1 PSW寄存器 6.2 中斷處理流程 6.3 中斷向量 6.4 PDP /40的中斷類型 6.4.1 電傳終端接口輸入中斷 6.4.2 電傳終端接口輸出中斷 6.4.3 紙帶打孔機(jī)輸入中斷 6.4.4 紙帶打孔機(jī)輸出中斷 6.4.5 時(shí)鐘中斷 6.4.6 行打印機(jī)中斷 6.4.7 磁盤讀寫中斷 6.5 一些常用函數(shù) 6.5.1 特殊指令 6.5.2 fubyte(fuibyte) 6.5.3 fuword(fuiword) 6.5.4 subyte(suibyte) 6.5.5 suword(suiword) 6.5.6 clearseg 6.5.7 copyseg 6.5.8 copyin/copyout 6.5.9 dpadd 6.5.10 ldiv/lrem/lshift 6.6 call函數(shù) 6.7 時(shí)鐘中斷 6.7.1 基本概念 6.7.2 處理過程 6.8 call函數(shù)調(diào)用分派切換器的理由 6.9 內(nèi)核定時(shí)器 6.9.1 數(shù)據(jù)結(jié)構(gòu) 6.9.2 定時(shí)器的創(chuàng)建 6.9.3 定時(shí)器的觸發(fā) 6.10 一些例子 6.10.1 進(jìn)程優(yōu)先級的調(diào)整 6.10.2 進(jìn)程分派切換實(shí)例 6.11 備注 6.11.1 中斷服務(wù)函數(shù)中為什么不使用互斥鎖 6.11.2 中斷服務(wù)函數(shù)中為什么不訪問u變量 6.11.3 關(guān)于內(nèi)存管理違例自陷的處理過程 6.11.4 調(diào)度標(biāo)志runrun和runin 6.12 思考題 第7章 自陷 7.1 自陷原理 7.2 自陷向量 7.3 PDP11/40的自陷類型 7.3.1 系統(tǒng)出錯(cuò)自陷 7.3.2 系統(tǒng)調(diào)用自陷 7.3.3 調(diào)試自陷 7.3.4 自陷優(yōu)先級 7.4 自陷處理過程 7.4.1 匯編函數(shù)_trap 7.4.2 C函數(shù)trap 7.4.3 backup函數(shù) 第8章 文件系統(tǒng) 8.1 概述 8.2 框架 8.2.1 文件存儲的實(shí)現(xiàn) 8.2.2 UNIX文件系統(tǒng) 8.2.3 UNIX文件系統(tǒng)的詳細(xì)實(shí)現(xiàn) 8.3 文件訪問接口 8.3.1 文件創(chuàng)建接口creat 8.3.2 文件打開接口open 8.3.3 文件關(guān)閉接口close 8.3.4 文件讀接口read 8.3.5 文件寫接口write 8.3.6 文件定位接口seek 8.3.7 特殊文件創(chuàng)建接口mknod 8.3.8 文件鏈接接口link 8.3.9 取消文件鏈接接口unlink 8.3.10 設(shè)備加載接口smount 8.3.11 設(shè)備卸載接口sumount 8.4 節(jié)點(diǎn)和塊管理 8.4.1 節(jié)點(diǎn)緩存 8.4.2 塊緩存 8.4.3 塊訪問接口 8.4.4 節(jié)點(diǎn)訪問接口 8.5 塊設(shè)備驅(qū)動 8.5.1 概述 8.5.2 根設(shè)備——rk11磁盤 8.6 備注 8.6.1 FAT16文件系統(tǒng) 8.6.2 多進(jìn)程訪問文件的問題 8.6.3 進(jìn)程間同步 8.6.4 文件的刪除 8.6.5 設(shè)備驅(qū)動的擴(kuò)展 8.7 總結(jié) 8.8 思考題 第9章 字符設(shè)備驅(qū)動 9.1 交互終端——電傳打字機(jī)(teletypewriter) 9.1.1 設(shè)備特性 9.1.2 操作寄存器 9.1.3 驅(qū)動框架 9.1.4 驅(qū)動函數(shù) 9.1.5 shell應(yīng)用舉例 9.1.6 內(nèi)核打印接口 9.2 PC-11紙帶打孔機(jī) 9.2.1 設(shè)備特性 9.2.2 操作寄存器 9.2.3 驅(qū)動框架 9.2.4 驅(qū)動函數(shù) 9.2.5 讀取器狀態(tài)轉(zhuǎn)換圖 9.3 LP-11行打印機(jī) 9.3.1 設(shè)備特性 9.3.2 操作寄存器 9.3.3 驅(qū)動框架 9.3.4 驅(qū)動函數(shù) 9.4 現(xiàn)代打印機(jī) 9.4.1 并口 9.4.2 和內(nèi)核掛接 9.4.3 簡單的打印程序 9.4.4 CUPS 9.5 其他字符設(shè)備 9.5.1 內(nèi)存 9.5.2 磁盤 9.6 網(wǎng)絡(luò)驅(qū)動程序 9.7 綜合示例 9.8 總結(jié) 9.9 思考題 第10章 進(jìn)程交換過程 10.1 概述 10.2 具體實(shí)現(xiàn) 10.2.1 進(jìn)程換出函數(shù)xswap 10.2.2 程序段內(nèi)存釋放函數(shù)xccdec 10.2.3 交換函數(shù)swap 10.2.4 調(diào)用實(shí)例 10.3 綜合示例 10.4 思考題 第11章 UNIX可執(zhí)行文件 11.1 .out文件 11.1.1 可執(zhí)行頭 11.1.2 程序段 11.1.3 數(shù)據(jù)段 11.1.4 程序和數(shù)據(jù)重定向表 11.1.5 符號表 11.1.6 示例 11.2 動態(tài)鏈接過程* 11.2.1 靜態(tài)共享 11.2.2 動態(tài)共享 11.2.3 GOT/PLT表和位置無關(guān)代碼(PIC) 11.2.4 動態(tài)加載過程分析 第12章 系統(tǒng)調(diào)用 12.1 概述 12.2 系統(tǒng)調(diào)用的實(shí)現(xiàn) 12.2.1 用戶實(shí)現(xiàn) 12.2.2 系統(tǒng)調(diào)用表和trap自陷 12.2.3 內(nèi)核實(shí)現(xiàn) 12.3 各系統(tǒng)調(diào)用的實(shí)現(xiàn) 12.3.1 文件相關(guān)調(diào)用 12.3.2 進(jìn)程相關(guān)調(diào)用 12.3.3 信號相關(guān)調(diào)用 12.3.4 調(diào)試功能調(diào)用 12.3.5 用戶/組ID調(diào)用 12.3.6 時(shí)間相關(guān)調(diào)用 12.3.7 終端相關(guān)調(diào)用 第13章 進(jìn)程間通信 13.1 概述 13.2 管道 13.2.1 相關(guān)系統(tǒng)調(diào)用 13.2.2 管道實(shí)現(xiàn)過程分析 13.2.3 應(yīng)用示例 13.2.4 采用內(nèi)存文件實(shí)現(xiàn)管道 13.2.5 思考題 13.3 文件 13.4 有名管道 13.5 進(jìn)程間同步 13.5.1 信號量 13.5.2 互斥體 13.5.3 事件 13.6 死鎖 13.7 其他進(jìn)程間數(shù)據(jù)傳輸方式 13.7.1 消息(message) 13.7.2 信箱(mailbox) 13.7.3 共享內(nèi)存 第14章 多線程的實(shí)現(xiàn) 14.1 概述 14.2 線程和經(jīng)典進(jìn)程的比較 14.3 線程的示例實(shí)現(xiàn) 14.3.1 相關(guān)數(shù)據(jù)結(jié)構(gòu) 14.3.2 實(shí)現(xiàn)方案 14.3.3 線程創(chuàng)建調(diào)用CreateThread 14.3.4 內(nèi)核改動 14.3.5 線程退出調(diào)用ExitThread 14.3.6 線程id獲得調(diào)用gettid 14.3.7 線程掛起調(diào)用SuspendThread 14.3.8 線程恢復(fù)調(diào)用ResumeThread 14.3.9 線程終止調(diào)用TerminateThread 14.3.10 線程ID查詢調(diào)用GetThreadID 14.3.11 線程名查詢調(diào)用GetThreadName 14.3.12 使用示例 14.3.13 思考題 第15章 網(wǎng)絡(luò)多用戶 15.1 系統(tǒng)初始化過程 15.1.1 init進(jìn)程 15.1.2 getty程序 15.1.3 login程序 15.2 telnet程序 15.2.1 工作原理 15.2.2 常用配置 15.3 NFS(網(wǎng)絡(luò)文件系統(tǒng)) 15.3.1 基本原理 15.3.2 RPC(遠(yuǎn)程過程調(diào)用) 15.3.3 各過程的實(shí)現(xiàn) 15.3.4 簡單示例 附錄A 參考書目及資源 附錄B 思考題答案
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載