注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡操作系統Linux源碼趣讀

Linux源碼趣讀

Linux源碼趣讀

定 價:¥158.00

作 者: 閃客
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787121462870 出版時間: 2023-09-01 包裝: 平塑勒單襯
開本: 頁數: 字數:  

內容簡介

  用讀一本小說的心態(tài)來閱讀本書,你會對整個操作系統的體系結構和邏輯細節(jié)有非常清晰的認識,從此愛上并閱讀更多的操作系統源碼。第1部分:進入內核前的苦力活。覆蓋從開機到運行到Linux中的main函數的關鍵流程解析,幫你清晰認識Intel CPU的體系結構。第2部分:“大戰(zhàn)”前期的初始化工作。講述main中的各種初始化函數,這些函數是操作系統各個模塊的交互橋梁,為理解后續(xù)操作系統各個模塊的運作原理打好基礎。第3部分:一個新進程的誕生。講述從內核態(tài)切換至用戶態(tài),并建立起第一個用戶進程的全部過程。學完這部分,你將會理解一個多進程的操作系統是如何建立和運作的。第4部分:shell程序的到來。主要討論如何將磁盤中存儲的shell程序加載到內存中來,并最終交給CPU去執(zhí)行。通過這個過程你會看清一個程序從存儲到硬盤到最終被執(zhí)行的全部過程。第5部分:一條shell命令的執(zhí)行。讓我們跟著一條shell命令“走南闖北”,從用戶輸入給計算機一個字符串開始,一直到該程序的最終執(zhí)行,這一過程能幫你把前面所學的知識融會貫通,整個操作系統的啟動流程與運作原理,將會生動形象地浮現在你的腦海中。

作者簡介

  閃客,平時樂于研究計算機底層技術與技術分享。作為“無聊的”微信公眾號作者,兩年時間積累近10萬粉絲,擅長使用通俗易懂的語言講解復雜的技術原理,他的“破玩意”系列、“降妖除魔”系列、“操作系統源碼”系列等,都深受讀者喜愛。

圖書目錄

第1 部分 進入內核前的苦力活
第1回 最開始的兩行代碼  / 2
開機后初始化指向BIOS  / 3
讀取硬盤啟動區(qū)(第一扇區(qū))  / 4
加載到內存 0x7c00 位置,并跳轉到這里  / 5
第2回 從0x7c00 到0x90000  / 8
第3回 做好訪問內存的基礎準備工作  / 13
這些寄存器是干什么的  / 14
CPU 訪問內存的三種途徑  / 15
再次回顧一下前三回的內容  / 16
第4回 把全部的操作系統代碼從硬盤搬到內存  / 17
把剩下的操作系統代碼從硬盤請到內存  / 17
聊聊操作系統的編譯過程  / 21
挪來挪去的真討厭  / 22
擴展閱讀:什么是中斷  / 23
擴展閱讀:什么是軟中斷  / 38
第5回 將重要的操作系統代碼放在零地址處  / 48
第6回 解決段寄存器的歷史包袱問題  / 56
保護模式下的物理地址計算方式  / 57
全局描述符表  / 59
第7回 六行代碼進入保護模式  / 63
第8回 重新設置中斷描述符表與全局描述符表  / 69
第9回 開啟分頁機制  / 75
第10 回 進入main 函數前的最后一躍  / 86
第1 部分總結與回顧  / 92
第2 部分 “大戰(zhàn)”前期的初始化工作
第11 回 整個操作系統就二十幾行代碼  / 98
第12 回 管理內存前先劃分出三個邊界值  / 103
第13 回 主內存初始化mem_init  / 106
第14 回 中斷初始化trap_init  / 110
第15 回 塊設備請求項初始化blk_dev_init  / 116
第16 回 控制臺初始化tty_init  / 123
第17 回 時間初始化time_init  / 132
第18 回 進程調度初始化sched_init  / 138
第19 回 緩沖區(qū)初始化buffer_init  / 147
第20 回 硬盤初始化hd_init  / 155
第2 部分總結與回顧  / 159
第3 部分 一個新進程的誕生
第21 回 第3 部分全局概述  / 172
move_to_user_mode  / 173
fork  / 174
init  / 174
pause  / 175
第22 回 從內核態(tài)切換到用戶態(tài)  / 176
讓進程無法跳出用戶態(tài)  / 176
內核態(tài)與用戶態(tài)的本質—特權級  / 177
特權級轉換的方式  / 178
除了改變特權級還做了哪些事  / 181
第23 回 如果讓你來設計進程調度  / 184
整體流程設計  / 185
上下文環(huán)境  / 186
運行時間信息  / 188
優(yōu)先級  / 188
進程狀態(tài)  / 189
第24 回 從一次定時器滴答來看進程調度  / 192
第25 回 通過fork 看一次系統調用  / 197
第26 回 fork 函數中進程基本信息的復制  / 205
第27 回 透過fork 來看進程的內存規(guī)劃  / 213
LDT 的賦值  / 214
頁表的復制  / 217
第28 回 番外篇——我居然會認為權威著作寫錯了  / 221
第29 回 番外篇——寫時復制就這么幾行代碼  / 227
儲備知識  / 227
寫時復制的本質  / 230
看看代碼是怎么寫的  / 232
第30 回 番外篇——你管這破玩意兒叫文件系統  / 237
第3 部分總結與回顧  / 251
第4 部分展望  / 254

第4 部分 shell 程序的到來
第31 回 拿到硬盤信息   / 258
第32 回 加載根文件系統  / 264
硬盤中的文件系統格式是怎樣的  / 266
內存中用于文件系統的數據結構有哪些  / 267
第33 回 打開終端設備文件  / 272
第34 回 進程2 的創(chuàng)建   / 281
fork  / 282
close  / 285
open  / 285
execve  / 286
第35 回 execve 加載并執(zhí)行shell 程序   / 287
讀取文件開頭 1KB 的數據  / 289
將這 1KB 的數據解析為 exec 結構  / 290
判斷是腳本文件還是可執(zhí)行文件  / 291
準備參數空間  / 291
設置 eip 和 esp,完成搖身一變  / 296
計算機的世界沒有魔法  / 297
第36 回 缺頁中斷  / 301
跳轉到一個不存在的地址會發(fā)生什么  / 302
缺頁中斷do_no_page  / 304
缺頁中斷返回  / 309
第37 回 shell 程序跑起來了  / 311
第38 回 操作系統啟動完畢!  / 317
第39 回 番外篇——調試Linux 最早期的代碼  / 322
整體思路和效果  / 322
第一步:配置虛擬機  / 324
第二步:安裝qemu  / 324
第三步:下載并運行可調試的 Linux-0.11 源碼  / 325
第四步:通過 vscode 遠程調試  / 327
第40 回 番外篇——為什么有些技術原理你怎么看也看不懂  / 331
第4 部分總結與回顧  / 333
第5 部分 一條shell 命令的執(zhí)行
第41 回 一條shell 命令的執(zhí)行過程概述   / 338
第42 回 用鍵盤輸入一條命令  / 342
第43 回 shell 程序讀取你的命令  / 352
第44 回 進程的阻塞與喚醒  / 359
第45 回 解析并執(zhí)行shell 命令  / 364
第46 回 讀硬盤數據全流程  / 375
如果讓你來設計這個函數  / 375
鳥瞰操作系統的讀操作函數  / 376
執(zhí)行讀操作file_read  / 382
第47 回 讀取硬盤數據的細節(jié)  / 391
第48 回 信號  / 400
第49 回 番外篇——為什么你學得比別人慢  / 406
第5 部分總結與回顧  / 411

本目錄推薦

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