注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)LinuxLinux內(nèi)核設(shè)計(jì)的藝術(shù):圖解Linux操作系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理預(yù)售商品

Linux內(nèi)核設(shè)計(jì)的藝術(shù):圖解Linux操作系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理預(yù)售商品

Linux內(nèi)核設(shè)計(jì)的藝術(shù):圖解Linux操作系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理預(yù)售商品

定 價(jià):¥79.00

作 者: 新設(shè)計(jì)團(tuán)隊(duì)
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: LINUX

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111347446 出版時(shí)間: 2011-06-01 包裝: 平裝
開(kāi)本: ` 頁(yè)數(shù): 444 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  關(guān)于Linux內(nèi)核的書(shū)已經(jīng)不計(jì)其數(shù),但這本書(shū)卻是獨(dú)樹(shù)一幟的,它的內(nèi)容代表著Linux內(nèi)核研究成果的世界頂尖級(jí)水平,它在世界范圍內(nèi)首次提出并闡述了操作系統(tǒng)設(shè)計(jì)的核心指導(dǎo)思想——主奴機(jī)制,這是所有操作系統(tǒng)研究者的一筆寶貴財(cái)富。本書(shū)可能也代表著同類(lèi)圖書(shū)的頂尖水平,是一本真正能引導(dǎo)我們較為容易地、極為透徹地理解Linux內(nèi)核的經(jīng)典之作,也可能是當(dāng)前唯一能從本質(zhì)上指引我們?nèi)ピO(shè)計(jì)和開(kāi)發(fā)擁有自主知識(shí)產(chǎn)權(quán)的操作系統(tǒng)的著作。它的出版也許會(huì)成為L(zhǎng)inux內(nèi)核研究領(lǐng)域的一個(gè)里程碑事件。《Linux內(nèi)核設(shè)計(jì)的藝術(shù):圖解Linux操作系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》的最大特點(diǎn)是它的寫(xiě)作方式和內(nèi)容組織方式,與同類(lèi)書(shū)完全不同。它在深刻地分析了傳統(tǒng)講解方法的利弊之后,破舊立新,從認(rèn)知學(xué)的角度開(kāi)創(chuàng)了一種全新的方式。以操作系統(tǒng)的真實(shí)運(yùn)行過(guò)程為主線(xiàn),結(jié)合真實(shí)的內(nèi)核源代碼、349幅精確的內(nèi)核運(yùn)行時(shí)序圖和具有點(diǎn)睛之妙的文字說(shuō)明,對(duì)操作系統(tǒng)從開(kāi)機(jī)加電到系統(tǒng)完全準(zhǔn)備就緒的整個(gè)過(guò)程進(jìn)行了系統(tǒng)而完整地分析,深刻地揭示了其間每一個(gè)動(dòng)作的設(shè)計(jì)意圖和實(shí)現(xiàn)原理,完美地再現(xiàn)了操作系統(tǒng)設(shè)計(jì)者的設(shè)計(jì)思路。閱讀本書(shū)就如同跟隨著操作系統(tǒng)設(shè)計(jì)者一起去思考,我們會(huì)在閱讀的過(guò)程中發(fā)現(xiàn)Linux內(nèi)核設(shè)計(jì)的精妙,會(huì)發(fā)現(xiàn)原來(lái)處處都“暗藏玄機(jī)”,哪怕是一行很短的代碼?!禠inux內(nèi)核設(shè)計(jì)的藝術(shù):圖解Linux操作系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》在所有細(xì)節(jié)上都力求完美。為了保證知識(shí)的準(zhǔn)確性,操作系統(tǒng)運(yùn)行過(guò)程中的每個(gè)動(dòng)作都經(jīng)過(guò)了嚴(yán)格的考證;為了讓我們真正理解Linux內(nèi)核的原理,它突破傳統(tǒng),以L(fǎng)inux的真實(shí)運(yùn)行過(guò)程為主線(xiàn)進(jìn)行講解;為了做到真正易于理解,創(chuàng)新性地使用了圖解的方式,精心繪制了349幅分辨率600dpi的時(shí)序圖,圖中表現(xiàn)的運(yùn)行時(shí)結(jié)構(gòu)和狀態(tài)與操作系統(tǒng)實(shí)際運(yùn)行時(shí)的真實(shí)狀態(tài)完全吻合;為了提高閱讀體驗(yàn),本書(shū)采用了雙色印刷,以便于我們更清楚地觀(guān)察每一幅圖中的細(xì)節(jié)。

作者簡(jiǎn)介

暫缺《Linux內(nèi)核設(shè)計(jì)的藝術(shù):圖解Linux操作系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理預(yù)售商品》作者簡(jiǎn)介

圖書(shū)目錄

前言
第1章 從開(kāi)機(jī)加電到執(zhí)行main函數(shù)之前的過(guò)程1
1.1 啟動(dòng)BIOS,準(zhǔn)備實(shí)模式下的中斷向量表和中斷服務(wù)程序1
1.1.1 BIOS的啟動(dòng)原理2
1.1.2 BIOS在內(nèi)存中加載中斷向量表和中斷服務(wù)程序3
1.2 加載操作系統(tǒng)內(nèi)核程序并為保護(hù)模式做準(zhǔn)備4
1.2.1 加載第一部分代碼—引導(dǎo)程序(bootsect)5
1.2.2 加載第二部分代碼—setup7
1.2.3 加載第三部分代碼—system模塊12
1.3 開(kāi)始向32位模式轉(zhuǎn)變,為main函數(shù)的調(diào)用做準(zhǔn)備16
1.3.1 關(guān)中斷并將system移動(dòng)到內(nèi)存地址起始位置0x0000016
1.3.2 設(shè)置中斷描述符表和全局描述符表18
1.3.3 打開(kāi)A20,實(shí)現(xiàn)32位尋址20
1.3.4 為在保護(hù)模式下執(zhí)行head.s做準(zhǔn)備21
1.3.5 head.s開(kāi)始執(zhí)行24
1.4 本章小結(jié)41
第2章 從main到怠速42
2.1 開(kāi)中斷之前的準(zhǔn)備工作43
2.1.1 復(fù)制根設(shè)備號(hào)和硬盤(pán)參數(shù)表 44
2.1.2 物理內(nèi)存規(guī)劃格局45
2.1.3 虛擬盤(pán)設(shè)置與初始化46
2.1.4 內(nèi)存管理結(jié)構(gòu)mem_map初始化47
2.1.5 異常處理類(lèi)中斷服務(wù)程序掛接48
2.1.6 初始化塊設(shè)備請(qǐng)求項(xiàng)結(jié)構(gòu)50
2.1.7 與建立人機(jī)交互界面相關(guān)的外設(shè)的中斷服務(wù)程序掛接52
2.1.8 開(kāi)機(jī)啟動(dòng)時(shí)間設(shè)置55
2.1.9 系統(tǒng)開(kāi)始激活進(jìn)程056
2.1.10 進(jìn)程相關(guān)事務(wù)初始化設(shè)置57
2.1.11 時(shí)鐘中斷設(shè)置59
2.1.12 系統(tǒng)調(diào)用服務(wù)程序掛接59
2.1.13 初始化緩沖區(qū)管理結(jié)構(gòu)61
2.1.14 初始化硬盤(pán)63
2.1.15 初始化軟盤(pán)65
2.1.16 開(kāi)中斷66
2.2 進(jìn)程創(chuàng)建的最基本動(dòng)作67
2.2.1 操作系統(tǒng)為進(jìn)程0創(chuàng)建進(jìn)程1做準(zhǔn)備67
2.2.2 在進(jìn)程槽中為進(jìn)程1 申請(qǐng)一個(gè)空閑位置并獲取進(jìn)程號(hào)71
2.2.3 復(fù)制進(jìn)程信息之前,先將一些數(shù)據(jù)壓棧73
2.2.4 初步設(shè)置進(jìn)程1管理結(jié)構(gòu)74
2.2.5 進(jìn)程0創(chuàng)建進(jìn)程1的過(guò)程中發(fā)生時(shí)鐘中斷76
2.2.6 從時(shí)鐘中斷返回78
2.2.7 調(diào)整進(jìn)程1管理結(jié)構(gòu)79
2.2.8 設(shè)置進(jìn)程1的線(xiàn)性地址空間及物理頁(yè)面81
2.2.9 繼續(xù)調(diào)整進(jìn)程1管理結(jié)構(gòu)84
2.2.10 操作系統(tǒng)如何區(qū)分進(jìn)程0和進(jìn)程187
2.2.11 進(jìn)程0準(zhǔn)備切換到進(jìn)程189
2.2.12 系統(tǒng)切換到進(jìn)程1執(zhí)行90
2.3 加載根文件系統(tǒng)92
2.3.1 進(jìn)程1如何開(kāi)始執(zhí)行96
2.3.2 進(jìn)程1開(kāi)始執(zhí)行98
2.3.3 進(jìn)程1開(kāi)始以數(shù)據(jù)塊的形式操作硬盤(pán)99
2.3.4 將找到的緩沖塊與請(qǐng)求項(xiàng)掛接101
2.3.5 將請(qǐng)求項(xiàng)與硬盤(pán)處理函數(shù)掛接104
2.3.6 進(jìn)行硬盤(pán)讀盤(pán)前的準(zhǔn)備工作105
2.3.7 給硬盤(pán)下達(dá)讀盤(pán)指令106
2.3.8 進(jìn)程1由于等待讀盤(pán)操作掛起107
2.3.9 系統(tǒng)切換到進(jìn)程0執(zhí)行109
2.3.10 進(jìn)程0的執(zhí)行過(guò)程110
2.3.11 進(jìn)程0執(zhí)行過(guò)程中發(fā)生硬盤(pán)中斷111
2.3.12 硬盤(pán)中斷服務(wù)程序響應(yīng)后,進(jìn)程0繼續(xù)執(zhí)行113
2.3.13 再次響應(yīng)硬盤(pán)中斷并喚醒進(jìn)程1114
2.3.14 讀盤(pán)操作完成后,進(jìn)程1繼續(xù)執(zhí)行116
2.3.15 進(jìn)程1繼續(xù)設(shè)置硬盤(pán)管理結(jié)構(gòu)117
2.3.16 進(jìn)程1獲取軟盤(pán)超級(jí)塊,為加載根文件系統(tǒng)做準(zhǔn)備118
2.3.17 進(jìn)程1備份超級(jí)塊數(shù)據(jù)119
2.3.18 進(jìn)程1將根文件系統(tǒng)從軟盤(pán)拷貝到虛擬盤(pán)120
2.3.19 進(jìn)程1開(kāi)始加載根文件系統(tǒng)122
2.3.20 進(jìn)程1準(zhǔn)備加載根文件系統(tǒng)超級(jí)塊123
2.3.21 進(jìn)程1加載根文件系統(tǒng)超級(jí)塊124
2.3.22 進(jìn)程1繼續(xù)加載根文件系統(tǒng)126
2.3.23 進(jìn)程1準(zhǔn)備讀取根目錄i節(jié)點(diǎn)127
2.3.24 進(jìn)程1加載根目錄i節(jié)點(diǎn)128
2.3.25 進(jìn)程1結(jié)束加載根文件系統(tǒng)的過(guò)程129
2.4 打開(kāi)終端設(shè)備文件及復(fù)制文件句柄131
2.4.1 進(jìn)程1與內(nèi)核文件表掛接,為打開(kāi)文件做準(zhǔn)備133
2.4.2 確定打開(kāi)操作的起點(diǎn)135
2.4.3 獲得枝梢i節(jié)點(diǎn)—dev目錄文件的i節(jié)點(diǎn)136
2.4.4 確定dev目錄文件i節(jié)點(diǎn)為枝梢i節(jié)點(diǎn)137
2.4.5 繼續(xù)返回枝梢i節(jié)點(diǎn)138
2.4.6 查找tty0文件的i節(jié)點(diǎn)138
2.4.7 將tty0設(shè)備文件的i節(jié)點(diǎn)返回給sys_open系統(tǒng)調(diào)用 139
2.4.8 分析tty0文件i節(jié)點(diǎn)140
2.4.9 設(shè)置文件管理結(jié)構(gòu)并返回給用戶(hù)進(jìn)程141
2.4.10 進(jìn)程1復(fù)制tty0文件句柄142
2.4.11 進(jìn)程1繼續(xù)復(fù)制tty0文件句柄144
2.5 創(chuàng)建進(jìn)程2145
2.5.1 進(jìn)程1準(zhǔn)備創(chuàng)建進(jìn)程2145
2.5.2 復(fù)制進(jìn)程2管理結(jié)構(gòu)并進(jìn)行調(diào)整146
2.5.3 設(shè)置進(jìn)程2的頁(yè)目錄項(xiàng)并復(fù)制進(jìn)程2的頁(yè)表146
2.5.4 調(diào)整進(jìn)程2管理結(jié)構(gòu)中與文件有關(guān)的內(nèi)容146
2.5.5 進(jìn)程1執(zhí)行過(guò)程中發(fā)生時(shí)鐘中斷148
2.5.6 進(jìn)程1從時(shí)鐘中斷返回,準(zhǔn)備切換到進(jìn)程2150
2.6 進(jìn)程1等待進(jìn)程2退出150
2.6.1 進(jìn)程1查找它自己的子進(jìn)程151
2.6.2 對(duì)進(jìn)程2的狀態(tài)進(jìn)行處理151
2.6.3 切換到進(jìn)程2執(zhí)行153
2.7 shell程序的加載154
2.7.1 進(jìn)程2開(kāi)始執(zhí)行156
2.7.2 為打開(kāi)/etc/rc文件做準(zhǔn)備156
2.7.3 進(jìn)程2打開(kāi)“/etc/rc”配置文件157
2.7.4 通過(guò)壓棧為加載shell文件做準(zhǔn)備158
2.7.5 為參數(shù)和環(huán)境變量設(shè)置做準(zhǔn)備159
2.7.6 得到shell文件的i節(jié)點(diǎn)160
2.7.7 為加載參數(shù)和環(huán)境變量做準(zhǔn)備161
2.7.8 根據(jù)i節(jié)點(diǎn),對(duì)shell文件進(jìn)行檢測(cè)162
2.7.9 檢測(cè)shell文件頭163
2.7.10 備份文件頭并進(jìn)行分析163
2.7.11 對(duì)shell文件進(jìn)行進(jìn)一步分析165
2.7.12 拷貝參數(shù)和環(huán)境變量166
2.7.13 調(diào)整進(jìn)程2的管理結(jié)構(gòu)167
2.7.14 繼續(xù)調(diào)整進(jìn)程2管理結(jié)構(gòu)168
2.7.15 釋放進(jìn)程2繼承的頁(yè)面169
2.7.16 檢測(cè)協(xié)處理器170
2.7.17 調(diào)整shell程序所在的線(xiàn)性空間地址171
2.7.18 為shell程序準(zhǔn)備參數(shù)和環(huán)境變量172
2.7.19 繼續(xù)調(diào)整進(jìn)程2管理結(jié)構(gòu)173
2.7.20 調(diào)整EIP,使其指向shell程序入口地址173
2.7.21 shell程序執(zhí)行引發(fā)缺頁(yè)中斷175
2.7.22 缺頁(yè)中斷中shell程序加載前的檢測(cè)175
2.7.23 為即將載入的內(nèi)容申請(qǐng)頁(yè)面177
2.7.24 將shell程序載入新獲得的頁(yè)面177
2.7.25 根據(jù)shell程序的情況,調(diào)整頁(yè)面的內(nèi)容178
2.7.26 將線(xiàn)性地址空間與程序所在的物理頁(yè)面對(duì)應(yīng)179
2.8 系統(tǒng)實(shí)現(xiàn)怠速180
2.8.1 shell進(jìn)程準(zhǔn)備創(chuàng)建update進(jìn)程180
2.8.2 進(jìn)程2開(kāi)始執(zhí)行/etc/rc文件181
2.8.3 準(zhǔn)備加載update進(jìn)程181
2.8.4 update進(jìn)程的作用182
2.8.5 shell程序檢測(cè)“/etc/rc”文件183
2.8.6 shell進(jìn)程退出184
2.8.7 shell進(jìn)程退出善后處理185
2.8.8 進(jìn)程1清理shell進(jìn)程管理結(jié)構(gòu)187
2.8.9 系統(tǒng)開(kāi)始重建shell190
2.8.10 shell進(jìn)程為何不會(huì)再次退出192
2.9 小結(jié)194
第3章 安裝文件系統(tǒng)195
3.1 獲取硬盤(pán)設(shè)備號(hào)196
3.1.1 用戶(hù)發(fā)出安裝硬盤(pán)文件系統(tǒng)指令196
3.1.2 從分析路徑開(kāi)始,準(zhǔn)備查找hd1設(shè)備的掛接點(diǎn)197
3.1.3 以根目錄i節(jié)點(diǎn)為依托,得到dev目錄文件的i節(jié)點(diǎn)197
3.1.4 從dev目錄文件中找到代表hd1設(shè)備文件的目錄項(xiàng)198
3.1.5 得到hd1設(shè)備文件的i節(jié)點(diǎn)號(hào)199
3.1.6 釋放dev目錄文件的相關(guān)內(nèi)容200
3.1.7 得到hd1設(shè)備文件的i節(jié)點(diǎn)200
3.1.8 獲得hd1設(shè)備的設(shè)備號(hào)200
3.1.9 釋放hd1設(shè)備文件的i節(jié)點(diǎn)201
3.2 獲取虛擬盤(pán)上的掛接點(diǎn)202
3.3 得到hd1設(shè)備文件的超級(jí)塊202
3.3.1 準(zhǔn)備讀取hd1設(shè)備文件超級(jí)塊203
3.3.2 為hd1設(shè)備文件的超級(jí)塊找到存儲(chǔ)位置203
3.3.3 初始化空閑超級(jí)塊并加鎖203
3.3.4 從硬盤(pán)獲得hd1設(shè)備文件的超級(jí)塊204
3.3.5 加載邏輯塊位圖和i節(jié)點(diǎn)位圖205
3.4 將hd1設(shè)備文件與mnt目錄文件的i節(jié)點(diǎn)掛接206
3.5 小結(jié)207
第4章 文件操作208
4.1 打開(kāi)文件211
4.1.1 用戶(hù)程序調(diào)用open庫(kù)函數(shù)產(chǎn)生軟中斷212
4.1.2 建立用戶(hù)進(jìn)程與文件管理表的關(guān)系213
4.1.3 從硬盤(pán)上獲取helloc.txt文件的i節(jié)點(diǎn)214
4.1.4 將helloc.txt文件與文件管理表相掛接226
4.2 讀文件227
4.2.1 為按照用戶(hù)要求讀入文件做準(zhǔn)備228
4.2.2 確定要讀入的數(shù)據(jù)塊的位置230
4.2.3 將指定的數(shù)據(jù)塊從硬盤(pán)讀入到高速緩沖塊233
4.2.4 將數(shù)據(jù)拷貝到用戶(hù)指定的內(nèi)存234
4.3 新建文件237
4.3.1 查找路徑“/mnt/user/hello.txt”238
4.3.2 為hello.txt文件新建一個(gè)i節(jié)點(diǎn)240
4.3.3 為hello.txt文件新建目錄項(xiàng)242
4.3.4 完成hello.txt新建操作并返回給用戶(hù)進(jìn)程245
4.4 寫(xiě)文件246
4.4.1 文件寫(xiě)入前的準(zhǔn)備工作248
4.4.2 確定hello.txt文件的寫(xiě)入位置249
4.4.3 為數(shù)據(jù)的寫(xiě)入申請(qǐng)緩沖塊252
4.4.4 將指定的寫(xiě)入數(shù)據(jù)從用戶(hù)數(shù)據(jù)區(qū)拷貝到緩沖塊253
4.4.5 數(shù)據(jù)同步到硬盤(pán)的方法1255
4.4.6 將文件寫(xiě)入硬盤(pán)的情況2257
4.5 修改文件260
4.5.1 對(duì)文件的當(dāng)前操作指針進(jìn)行重定位261
4.5.2 對(duì)文件進(jìn)行修改261
4.6 關(guān)閉文件263
4.6.1 當(dāng)前進(jìn)程與文件管理表“脫鉤”264
4.6.2 將文件管理表中hello.txt對(duì)應(yīng)的引用次數(shù)減1265
4.6.3 hello.txt文件與文件管理表“脫鉤”266
4.7 刪除文件268
4.7.1 系統(tǒng)準(zhǔn)備刪除hello.txt文件268
4.7.2 刪除hello.txt文件在硬盤(pán)上對(duì)應(yīng)的數(shù)據(jù)和i節(jié)點(diǎn)270
4.7.3 對(duì)hello.txt文件所在的user目錄做處理275
4.8 本章小結(jié)275
第5章 用戶(hù)進(jìn)程與內(nèi)存管理277
5.1 用戶(hù)進(jìn)程的創(chuàng)建277
5.1.1 為創(chuàng)建進(jìn)程str1準(zhǔn)備條件277
5.1.2 為str1進(jìn)程管理結(jié)構(gòu)找到存儲(chǔ)空間279
5.1.3 復(fù)制str1進(jìn)程管理結(jié)構(gòu)281
5.1.4 確定str1進(jìn)程在線(xiàn)性空間中的位置282
5.1.5 復(fù)制str1進(jìn)程頁(yè)表并設(shè)置其對(duì)應(yīng)的頁(yè)目錄項(xiàng)283
5.1.6 調(diào)整str1進(jìn)程中與文件相關(guān)的結(jié)構(gòu)285
5.1.7 建立str1進(jìn)程與全局描述符表GDT的關(guān)聯(lián)286
5.1.8 將str1進(jìn)程設(shè)為就緒態(tài)287
5.2 為用戶(hù)進(jìn)程str1的加載做準(zhǔn)備288
5.2.1 為str1進(jìn)程加載自身對(duì)應(yīng)的程序做準(zhǔn)備288
5.2.2 讀取str1可執(zhí)行文件的i節(jié)點(diǎn)并統(tǒng)計(jì)參數(shù)和環(huán)境變量289
5.2.3 讀取str1可執(zhí)行文件的文件頭290
5.2.4 對(duì)str1可執(zhí)行程序文件頭進(jìn)行分析291
5.2.5 拷貝str1可執(zhí)行程序的參數(shù)和環(huán)境變量292
5.2.6 調(diào)整str1進(jìn)程管理結(jié)構(gòu)中可執(zhí)行程序?qū)?yīng)的i節(jié)點(diǎn)292
5.2.7 繼續(xù)調(diào)整str1進(jìn)程管理結(jié)構(gòu)—文件和信號(hào)相關(guān)的字段293
5.2.8 釋放str1進(jìn)程的頁(yè)表294
5.2.9 重新設(shè)置str1的程序代碼段和數(shù)據(jù)段295
5.2.10 創(chuàng)建環(huán)境變量和參數(shù)指針表296
5.2.11 繼續(xù)根據(jù)str1可執(zhí)行程序情況調(diào)整str1進(jìn)程管理結(jié)構(gòu)297
5.2.12 設(shè)置str1可執(zhí)行程序的棧指針和eip值297
5.3 對(duì)缺頁(yè)中斷的處理298
5.3.1 產(chǎn)生缺頁(yè)中斷并由操作系統(tǒng)響應(yīng)298
5.3.2 為str1程序申請(qǐng)一個(gè)內(nèi)存頁(yè)面299
5.3.3 將str1程序加載到新分配的頁(yè)面中300
5.3.4 檢測(cè)是否需要對(duì)頁(yè)面剩余空間清0300
5.3.5 將str1程序占用的物理內(nèi)存地址與str1進(jìn)程的線(xiàn)性地址空間對(duì)應(yīng)301
5.3.6 不斷通過(guò)缺頁(yè)中斷加載str1程序的全部?jī)?nèi)容301
5.3.7 str1程序需要壓棧302
5.3.8 str1程序第一次調(diào)用foo程序壓棧302
5.3.9 str1程序第二次壓棧,產(chǎn)生缺頁(yè)中斷302
5.3.10 處理str1程序第二次壓棧產(chǎn)生的缺頁(yè)中斷302
5.3.11 str1程序繼續(xù)執(zhí)行,反復(fù)壓棧并產(chǎn)生缺頁(yè)中斷303
5.3.12 str1程序運(yùn)行結(jié)束后清棧303
5.4 str1用戶(hù)進(jìn)程的退出305
5.4.1 str1進(jìn)程準(zhǔn)備退出305
5.4.2 釋放str1程序所占頁(yè)面305
5.4.3 解除str1程序與文件有關(guān)的內(nèi)容并給父進(jìn)程發(fā)信號(hào)306
5.4.4 str1程序退出后執(zhí)行進(jìn)程調(diào)度307
5.5 多個(gè)用戶(hù)進(jìn)程“同時(shí)”運(yùn)行308
5.5.1 依次創(chuàng)建str1、str2和str3進(jìn)程308
5.5.2 str1進(jìn)程壓棧的執(zhí)行效果309
5.5.3 str1運(yùn)行過(guò)程中產(chǎn)生時(shí)鐘中斷并切換到str2執(zhí)行309
5.5.4 str2執(zhí)行過(guò)程遇到時(shí)鐘中斷切換到str3執(zhí)行310
5.5.5 三個(gè)程序執(zhí)行一段時(shí)間后在主內(nèi)存的分布格局311
5.6 進(jìn)程的調(diào)度與切換311
5.6.1 str1剛被shell創(chuàng)建并處于就緒態(tài)311
5.6.2 shell進(jìn)程將自己掛起,然后準(zhǔn)備切換到str1執(zhí)行311
5.6.3 準(zhǔn)備切換到str1進(jìn)程執(zhí)行312
5.6.4 str1執(zhí)行時(shí)發(fā)生時(shí)鐘中斷314
5.6.5 時(shí)鐘中斷遞減str1運(yùn)行的時(shí)間片315
5.6.6 str1執(zhí)行一段時(shí)間后掛起,shell進(jìn)程新建str2進(jìn)程315
5.6.7 str2運(yùn)行期間發(fā)生時(shí)鐘中斷316
5.6.8 系統(tǒng)切換到str1程序執(zhí)行317
5.7 內(nèi)核的分頁(yè)318
5.7.1 為設(shè)置內(nèi)核的頁(yè)目錄表和頁(yè)表做準(zhǔn)備—所占空間清0318
5.7.2 設(shè)置內(nèi)核對(duì)應(yīng)的頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng)的內(nèi)容319
5.7.3 設(shè)置內(nèi)核對(duì)應(yīng)的全局描述符表GDT320
5.8 頁(yè)寫(xiě)保護(hù)321
5.8.1 進(jìn)程A和進(jìn)程B共享頁(yè)面321
5.8.2 進(jìn)程A準(zhǔn)備進(jìn)行壓棧操作322
5.8.3 進(jìn)程A的壓棧動(dòng)作引發(fā)頁(yè)寫(xiě)保護(hù)322
5.8.4 將進(jìn)程A的頁(yè)表指向新申請(qǐng)的頁(yè)面323
5.8.5 拷貝原頁(yè)面內(nèi)容到進(jìn)程A新申請(qǐng)的頁(yè)面324
5.8.6 進(jìn)程B準(zhǔn)備操作共享頁(yè)面325
5.8.7 假設(shè)進(jìn)程B先執(zhí)行壓棧操作的情況325
5.9 小結(jié)326
第6章 多個(gè)進(jìn)程“同時(shí)”操作一個(gè)文件327
6.1 三個(gè)進(jìn)程操作同一個(gè)文件327
6.1.1 進(jìn)程A執(zhí)行,hello.txt文件被打開(kāi)328
6.1.2 進(jìn)程A讀取hello.txt文件并由于等待硬盤(pán)中斷而被系統(tǒng)掛起328
6.1.3 進(jìn)程B準(zhǔn)備打開(kāi)hello.txt文件330
6.1.4 系統(tǒng)準(zhǔn)備為進(jìn)程B獲取hello.txt文件的i節(jié)點(diǎn)332
6.1.5 系統(tǒng)找到hello.txt文件已經(jīng)載入的i節(jié)點(diǎn)333
6.1.6 系統(tǒng)準(zhǔn)備為進(jìn)程B從硬盤(pán)上讀取hello.txt文件334
6.1.7 系統(tǒng)找到了正在操作的緩沖塊,將進(jìn)程B掛起335
6.1.8 系統(tǒng)再次切換到進(jìn)程0執(zhí)行337
6.1.9 進(jìn)程C啟動(dòng)并打開(kāi)hello.txt文件337
6.1.10 進(jìn)程C也由于等待緩沖塊解鎖而被系統(tǒng)掛起338
6.1.11 緩沖塊解鎖后先喚醒進(jìn)程C339
6.1.12 系統(tǒng)將進(jìn)程B設(shè)為就緒狀態(tài)340
6.1.13 系統(tǒng)將指定數(shù)據(jù)寫(xiě)入緩沖塊341
6.1.14 寫(xiě)入完成后,進(jìn)程C繼續(xù)執(zhí)行341
6.1.15 進(jìn)程C準(zhǔn)備切換到進(jìn)程B342
6.1.16 進(jìn)程C切換到進(jìn)程B執(zhí)行,進(jìn)程B喚醒進(jìn)程A342
6.1.17 進(jìn)程B不斷執(zhí)行,直到時(shí)間片減為0后切換到進(jìn)程A執(zhí)行343
6.1.18 進(jìn)程A、B、C退出,寫(xiě)入數(shù)據(jù)由update進(jìn)程同步344
6.2 緩沖區(qū)與外設(shè)的數(shù)據(jù)同步344
6.2.1 系統(tǒng)不斷為進(jìn)程A向緩沖區(qū)寫(xiě)入數(shù)據(jù)346
6.2.2 繼續(xù)執(zhí)行引發(fā)緩沖塊數(shù)據(jù)需要同步346
6.2.3 將緩沖區(qū)中的數(shù)據(jù)同步到硬盤(pán)上347
6.2.4 進(jìn)程A由于等待空閑請(qǐng)求項(xiàng)而被系統(tǒng)掛起349
6.2.5 進(jìn)程B開(kāi)始執(zhí)行350
6.2.6 進(jìn)程B也被掛起351
6.2.7 進(jìn)程C開(kāi)始執(zhí)行并隨后被掛起352
6.2.8 進(jìn)程A和進(jìn)程C均被喚醒352
6.2.9 進(jìn)程B切換到進(jìn)程A執(zhí)行354
6.3 小結(jié)356
第7章 IPC問(wèn)題358
7.1 管道機(jī)制358
7.1.1 為管道文件在文件管理表中申請(qǐng)空閑項(xiàng)360
7.1.2 為管道文件與進(jìn)程建立聯(lián)系創(chuàng)造條件360
7.1.3 創(chuàng)建管道文件i節(jié)點(diǎn)361
7.1.4 將管道文件i節(jié)點(diǎn)與文件管理表建立聯(lián)系362
7.1.5 將管道文件句柄返回給用戶(hù)進(jìn)程363
7.1.6 讀管道進(jìn)程開(kāi)始操作管道文件363
7.1.7 寫(xiě)管道進(jìn)程向管道中寫(xiě)入數(shù)據(jù)364
7.1.8 寫(xiě)管道進(jìn)程繼續(xù)向管道寫(xiě)入數(shù)據(jù)366
7.1.9 寫(xiě)管道進(jìn)程已將管道空間寫(xiě)滿(mǎn)366
7.1.10 寫(xiě)管道進(jìn)程掛起366
7.1.11 讀管道進(jìn)程從管道中讀出數(shù)據(jù)367
7.1.12 讀管道進(jìn)程繼續(xù)執(zhí)行,不斷從管道中讀出數(shù)據(jù)369
7.1.13 讀管道進(jìn)程執(zhí)行中發(fā)生時(shí)鐘中斷369
7.1.14 讀管道進(jìn)程執(zhí)行過(guò)程中再次發(fā)生時(shí)鐘中斷370
7.1.15 讀管道進(jìn)程切換到寫(xiě)管道進(jìn)程執(zhí)行371
7.1.16 寫(xiě)管道進(jìn)程掛起切換到讀管道進(jìn)程執(zhí)行371
7.1.17 讀管道進(jìn)程繼續(xù)執(zhí)行,直到把管道中的數(shù)據(jù)讀完372
7.1.18 讀取完成后,讀進(jìn)程掛起,寫(xiě)進(jìn)程繼續(xù)執(zhí)行373
7.2 信號(hào)機(jī)制374
7.2.1 processig進(jìn)程開(kāi)始執(zhí)行376
7.2.2 processig進(jìn)程進(jìn)入可中斷等待狀態(tài)377
7.2.3 sendsig進(jìn)程開(kāi)始執(zhí)行并向processig進(jìn)程發(fā)信號(hào)379
7.2.4 系統(tǒng)檢測(cè)當(dāng)前進(jìn)程接收到信號(hào)并準(zhǔn)備處理381
7.2.5 系統(tǒng)檢測(cè)信號(hào)處理函數(shù)指針掛接是否正常382
7.2.6 調(diào)整processig進(jìn)程的內(nèi)核棧結(jié)構(gòu),使之先執(zhí)行信號(hào)處理函數(shù)383
7.2.7 信號(hào)對(duì)進(jìn)程執(zhí)行狀態(tài)的影響386
7.3 小結(jié)393
第8章 操作系統(tǒng)的設(shè)計(jì)指導(dǎo)思想395
8.1 運(yùn)行一個(gè)最簡(jiǎn)單的程序,看操作系統(tǒng)為程序運(yùn)行做了哪些工作395
8.2 操作系統(tǒng)的設(shè)計(jì)指導(dǎo)思想—主奴機(jī)制398
8.2.1 主奴機(jī)制中的進(jìn)程及進(jìn)程創(chuàng)建機(jī)制399
8.2.2 操作系統(tǒng)在內(nèi)存管理中的主奴機(jī)制400
8.2.3 操作系統(tǒng)在文件系統(tǒng)中體現(xiàn)的主奴機(jī)制401
8.3 實(shí)現(xiàn)主奴機(jī)制的三種關(guān)鍵技術(shù)402
8.3.1 保護(hù)和分頁(yè)402
8.3.2 特權(quán)級(jí)405
8.3.3 中斷405
8.4 建立主奴機(jī)制的決定性因素—先機(jī)407
8.5 軟件和硬件的關(guān)系:主機(jī)與進(jìn)程、外設(shè)與文件408
8.5.1 非用戶(hù)進(jìn)程—進(jìn)程0、進(jìn)程1、shell進(jìn)程408
8.5.2 文件與數(shù)據(jù)存儲(chǔ)409
8.6 父子進(jìn)程共享頁(yè)面414
8.7 操作系統(tǒng)的全局中斷與進(jìn)程的局部中斷—信號(hào)414
8.8 小結(jié)415
結(jié)束語(yǔ)415
“新設(shè)計(jì)團(tuán)隊(duì)”簡(jiǎn)介416
附錄 搭建Linux 0.11系統(tǒng)環(huán)境421

本目錄推薦

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