新書推薦:
《
中年成长:突破人生瓶颈的心理自助方案
》
售價:NT$
296.0
《
维奥莱塔:一个女人的一生
》
售價:NT$
347.0
《
商业银行担保管理实务全指引
》
售價:NT$
658.0
《
信风万里:17世纪耶稣会中国年信研究(全二册)
》
售價:NT$
811.0
《
青铜之美 国宝里的中式美学
》
售價:NT$
806.0
《
海外中国研究·朱熹的思维世界(增订版)
》
售價:NT$
653.0
《
甲骨文丛书·沙漠之王:英美在中东的霸权之争
》
售價:NT$
505.0
《
汗青堂丛书147·光明时代:中世纪新史
》
售價:NT$
388.0
|
內容簡介: |
作業系統並不深奧,本書給予權威解讀
.用6000多行程式碼建立一個完整的作業系統。
.徹底剖析作業系統的原理,實現核心執行緒、特權等級變換、使用者處理程序、系統呼叫、檔案系統等作業系統基本的組成單元。
.用實際程式碼解釋了鎖、號誌、生產者消費者問題。
.實現一個簡單的shell,幫助大家理解內部命令、外部命令、管線等操作。
作業系統是一切電腦運作的基礎,不管是你我熟悉的Windows、伺服器用的Linux,綜合兩者的MacOS,當然還有手機上的iOS或是Android,甚至是車載、機載的系統,都是作業系統的一種。
一般認為作業系統是最複雜的軟體,但隨著工具的進步,再加上資訊的流通,作業系統的底層運作方式也不再是祕密。本書使用C語言及少量的組合語言,用最簡單易懂的方式,讓你建立一個自己的作業系統,解說清楚,程式碼詳盡,從前視為巨型公司的頂尖工程團隊才能完成的艱鉅任務,現在由大師帶你動手,撰寫自己的作業系統!
|
關於作者: |
鄭鋼
畢業於北京大學,前百度運維高級工程師,對作業系統有深入的研究。愛運動,喜鑽研,熱衷於嘗試前沿技術,樂於分享學習成果。
|
目錄:
|
前言
Chapter00一些你可能正感到迷惑的問題
0.1作業系統是什麼
0.2你想研究到什麼程度
0.3撰寫作業系統,哪些需要我來做
0.4軟體是如何存取硬體的
0.5應用程式是什麼,和作業系統是如何配合到一起的
0.6為什麼稱為「陷入」核心
0.7記憶體存取為什麼要分段
0.8程式中為什麼分為程式碼片段、資料段?這和記憶體存取機制中的段是一回事嗎
0.9實體位址、邏輯位址、有效位址、線性位址、虛擬位址的區別
0.10什麼是段重疊
0.11什麼是平坦模型
0.12cs、ds這種sreg段暫存器,位寬是多少
0.13什麼是專案,什麼是協定
0.14為什麼Linux系統下的應用程式不能在Windows系統下執行
0.15區域變數和函數參數為什麼要放在堆疊中
0.16為什麼說組合語言比C語言快
0.17先有的語言,還是先有的編譯器,第1個編譯器是怎麼產生的
0.18編譯型程式與直譯型程式的區別
0.19什麼是大端位元組序、小端位元組序
0.20BIOS中斷、DOS中斷、Linux中斷的區別
0.21Section和Segment的區別
0.22什麼是魔術參數
0.23作業系統是如何識別檔案系統的
0.24如何控制CPU的下一行指令
0.25指令集、系統結構、微架構、程式語言
0.26函數庫函數是使用者處理程序與核心的橋樑
0.27逸出字元與ASCII碼
0.28MBR、EBR、DBR和OBR各是什麼
Chapter01部署工作環境
1.1工欲善其事,必先利其器
1.2我們需要哪些編譯器
1.3作業系統的宿主環境
1.4設定bochs
1.5執行bochs
Chapter02撰寫MBR主啟動記錄,讓我們開始掌權
2.1電腦的啟動過程
2.2軟體接力第一棒,BIOS
2.3讓MBR先飛一會兒
Chapter03增強MBR
3.1地址、section、vstart淺嘗即止
3.2CPU的真實模式
3.3讓我們直接對顯示器說點什麼吧
3.4bochs偵錯方法
3.5硬碟介紹
3.6讓MBR使用硬碟
Chapter04保護模式入門
4.1保護模式概述CPU,變成了16位元
4.2初見保護模式
4.3通用描述元表
4.4處理器微架構簡介
4.5使用遠跳躍指令清空管線,更新段描述符號緩衝暫存器
4.6保護模式之記憶體段的保護
Chapter05保護模式進階,向核心邁進
5.1取得實體記憶體容量
5.2啟用記憶體分頁機制,暢遊虛擬空間
5.3載入核心
5.4特權等級深入淺出
Chapter06增強核心
6.1函數呼叫約定簡介
6.2組合語言和C語言混合程式設計
6.3實現自己的列印函數
6.4內聯組合語言
Chapter07中斷
7.1中斷是什麼,為什麼要有中斷
7.2作業系統是中斷驅動的
7.3中斷分類
7.4中斷描述符號表
7.5可程式化中斷控制器8259A
7.6撰寫中斷處理常式
7.7可程式化計數器計時器8253簡介
7.8加強時脈中斷的頻率,讓中斷來得更猛烈一些
Chapter08記憶體管理系統
8.1makefile簡介
8.2實現assert斷言
8.3實現字串操作函數
8.4點陣圖bitmap及其函數的實現
8.5記憶體管理系統
Chapter09執行緒
9.1實現核心執行緒
9.2在核心空間實現執行緒
9.3核心資料結構,雙向鏈結串列
9.4多執行緒排程
Chapter10輸入輸出系統
10.1同步機制——鎖
10.2用鎖實現終端輸出
10.3從鍵盤取得輸入
10.4撰寫鍵盤驅動
10.5環狀輸入緩衝區
Chapter11使用者處理程序
11.1為什麼要有工作狀態段TSS
11.2定義並初始化TSS
11.3實現使用者處理程序
11.3執行時期註釋
Chapter12進一步增強核心
12.1Linux系統呼叫淺析.
12.2系統呼叫的實現
12.3讓使用者處理程序「說話」
12.4增強堆積記憶體管理
Chapter13撰寫硬碟驅動程式
13.1硬碟及分區表
13.2撰寫硬碟驅動程式
Chapter14檔案系統
14.1檔案系統概念簡介
14.2建立檔案系統
14.3檔案描述符號簡介
14.4檔案操作相關的基礎函數
14.5建立檔案
14.6檔案的開啟與關閉
14.7實現檔案寫入
14.8讀取檔案
14.9實現檔案讀寫指標定位功能
14.10實現檔案刪除功能
14.11建立目錄
14.12檢查目錄
14.13刪除目錄
14.14工作的工作目錄
14.15獲得檔案屬性
Chapter15系統互動
15.1fork的原理與實現
15.2增加read系統呼叫,取得鍵盤輸入
15.3增加putchar、clear系統呼叫
15.4實現一個簡單的shell
15.5載入使用者處理程序
15.6實現系統呼叫wait和exit
15.7管線
|
|