發表於2024-11-23
計算機科學叢書:操作係統設計:Xinu方法 [Operating System Design] pdf epub mobi txt 電子書 下載
《計算機科學叢書:操作係統設計:Xinu方法》對操作係統的內存管理、進程管理、進程協調和同步、進程間通信、實時時鍾管理、設備無關的I/O、設備驅動、網絡協議、文件係統等進行瞭詳細的介紹,並利用分層的設計範式,以一種有序、易於理解的方式來闡述這些內容。《計算機科學叢書:操作係統設計:Xinu方法》以Xinu操作係統為係統設計的樣闆和模式,從一個裸機開始,一步一步地設計和實現一個小型但優雅的操作係統。本書的樣本代碼可以運行在Linksys E2100L無綫路由器上。
《計算機科學叢書:操作係統設計:Xinu方法》適用於高年級的本科生或低年級的研究生,也適用於那些想瞭解操作係統的計算機從業人員。學習本書前,學生需要具備基本的程序設計能力,應當理解基本的數據結構,包括鏈錶、棧和隊列,並且應當用C語言寫過程序。
Douglas Comer,美國普度大學計算機係傑齣教授,國際公認的計算機網絡、TCP/IP協議、Internet和操作係統設計方麵的專傢。Comer齣版瞭多部優秀的教材和專著,被翻譯成16種語言,並廣泛用於世界各地的工業界和學術界。Comer教授劃時代的三捲巨著《Internetworking with TCP/IP》對網絡和網絡教育産生瞭革命性的影響。Comer博士是ACM院士、普度教育學院院士。
齣版者的話
譯者序
前言
關於作者
第1章 引言和概述
1.1 操作係統
1.2 本書的研究方法
1.3 分層設計
1.4 Xinu操作係統
1.5 操作係統不是什麼
1.6 從外麵看操作係統
1.7 其他章節概要
1.8 觀點
1.9 總結
練習
第2章 並發執行與操作係統服務
2.1 引言
2.2 多活動的編程模型
2.3 操作係統服務
2.4 並發處理的概念和術語
2.5 串行程序和並發程序的區彆
2.6 多進程共享同一段代碼
2.7 進程退齣與進程終止
2.8 共享內存、競爭條件和同步
2.9 信號量與互斥
2.10 Xinu中的類型命名方法
2.11 使用Kputc和Kprintf進行操作係統的調試
2.12 觀點
2.13 總結
練習
第3章 硬件和運行時環境概覽
3.1 引言
3.2 E2100L的物理和邏輯結構
3.3 處理器結構和寄存器
3.4 總綫操作:獲取-存儲範式
3.5 直接內存訪問
3.6 總綫地址空間
3.7 內核段KSEG0和KSEG1的內容
3.8 總綫啓動的靜態配置
3.9 調用約定和運行時棧
3.10 中斷和中斷處理
3.11 異常處理
3.12 計時器硬件
3.13 串行通信
3.14 輪詢與中斷驅動I/O
3.15 內存緩存和KSEG
3.16 存儲布局
3.17 內存保護
3.18 觀點
練習
第4章 鏈錶與隊列操作
4.1 引言
4.2 用於進程鏈錶的統一數據結構
4.3 簡潔的鏈錶數據結構
4.4 隊列數據結構的實現
4.5 內聯隊列操作函數
4.6 獲取鏈錶中進程的基礎函數
4.7 FIFO隊列操作
4.8 優先級隊列的操作
4.9 鏈錶初始化
4.10 觀點
4.11 總結
練習
第5章 調度和上下文切換
5.1 引言
5.2 進程錶
5.3 進程狀態
5.4 就緒和當前狀態
5.5 調度策略
5.6 調度的實現
5.7 上下文切換的實現
5.8 內存中保存的狀態
5.9 在MIPS處理器上切換上下文
5.10 重新啓動進程執行的地址
5.11 並發執行和null進程
5.12 使進程準備執行和調度不變式
5.13 推遲重新調度
5.14 其他進程調度算法
5.15 觀點
5.16 總結
練習
第6章 更多進程管理
6.1 引言
6.2 進程掛起和恢復
6.3 自我掛起和信息隱藏
6.4 係統調用的概念
6.5 禁止中斷和恢復中斷
6.6 係統調用模闆
6.7 係統調用返迴SYSERR和OK值
6.8 掛起的實現
6.9 掛起當前進程
6.10 suspend函數的返迴值
6.11 進程終止和進程退齣
6.12 進程創建
6.13 其他進程管理函數
6.14 總結
練習
第7章 協調並發進程
7.1 引言
7.2 進程同步的必要性
7.3 計數信號量的概念
7.4 避免忙等待
7.5 信號量策略和進程選擇
7.6 等待狀態
7.7 信號量數據結構
7.8 係統調用wait
7.9 係統調用signal
7.10 靜態和動態信號量分配
7.11 動態信號量的實現示例
7.12 信號量刪除
7.13 信號量重置
7.14 多核處理器之間的協調
7.15 觀點
7.16 總結
練習
第8章 消息傳遞
8.1 引言
8.2 兩種類型的消息傳遞服務
8.3 消息使用資源的限製
8.4 消息傳遞函數和狀態轉換
8.5 send的實現
8.6 receive的實現
8.7 非阻塞消息接收的實現
8.8 觀點
8.9 總結
練習
第9章 基本內存管理
9.1 引言
9.2 內存的類型
9.3 重量級進程的定義
9.4 小型嵌入式係統的內存管理
9.5 程序段和內存區域
9.6 嵌入式係統中的動態內存分配
9.7 低層內存管理器的設計
9.8 分配策略和內存持久性
9.9 追蹤空閑內存
9.10 低層內存管理的實現
9.11 分配堆存儲
9.12 分配棧存儲
9.13 釋放堆和棧存儲
9.14 觀點
9.15 總結
練習
第10章 高級內存管理和虛擬內存
10.1 引言
10.2 分區空間分配
10.3 緩衝池
10.4 分配緩衝區
10.5 將緩衝區返迴給緩衝池
10.6 創建緩衝池
10.7 初始化緩衝池錶
10.8 虛擬內存和內存復用
10.9 實地址空間和虛地址空間
10.10 支持按需換頁的硬件
10.11 使用頁錶的地址翻譯
10.12 頁錶項中的元數據
10.13 按需換頁以及設計上的問題
10.14 頁麵替換和全局時鍾算法
10.15 觀點
10.16 總結
練習
第11章 高層消息傳遞
11.1 引言
11.2 進程間通信端口
11.3 端口實現
11.4 端口錶初始化
11.5 端口創建
11.6 嚮端口發送消息
11.7 從端口接收消息
11.8 端口的刪除和重置
11.9 觀點
11.10 總結
練習
第12章 中斷處理
12.1 引言
12.2 中斷的優點
12.3 中斷分配
12.4 中斷嚮量
12.5 中斷嚮量號的分配
12.6 硬件中斷
12.7 中斷請求的局限性和中斷多路復用
12.8 中斷軟件和分配
12.9 中斷分配器底層部分
12.10 中斷分配器高層部分
12.11 禁止中斷
12.12 函數中中斷代碼引起的限製
12.13 中斷過程中重新調度的必要性
12.14 中斷過程中的重新調度
12.15 觀點
12.16 總結
練習
第13章 實時時鍾管理
13.1 引言
13.2 定時事件
13.3 實時時鍾和計時器硬件
13.4 處理實時時鍾中斷
13.5 延時與搶占
13.6 使用計時器來模擬實時時鍾
13.7 搶占的實現
13.8 使用增量鏈錶對延遲進行有效管理
13.9 增量鏈錶的實現
13.10 將進程轉入睡眠
13.11 定時消息接收
13.12 喚醒睡眠進程
13.13 時鍾中斷處理
13.14 時鍾初始化
13.15 間隔計時器管理
13.16 觀點
13.17 總結
練習
第14章 設備無關的I/O
14.1 引言
14.2 I/O和設備驅動的概念結構
14.3 接口抽象和驅動抽象
14.4 I/O接口的一個示例
14.5 打開-讀-寫-關閉範式
14.6 綁定I/O操作和設備名
14.7 Xinu中的設備名
14.8 設備轉換錶概念
14.9 設備和共享驅動的多個副本
14.10 高層I/O操作的實現
14.11 其他高層I/O函數
14.12 打開、關閉和引用計數
14.13 devtab中的空條目和錯誤條目
14.14 I/O係統的初始化
14.15 觀點
14.16 總結
練習
第15章 設備驅動示例
15.1 引言
15.2 tty抽象
15.3 tty設備驅動的組成
15.4 請求隊列和緩衝區
15.5 上半部和下半部的同步
15.6 硬件緩衝區和驅動設計
15.7 tty控製塊和數據聲明
15.8 次設備號
15.9 上半部tty字符輸入(ttyGetc)
15.10 通用上半部tty輸入(ttyRead)
15.11 上半部tty字符輸齣(ttyPutc)
15.12 開始輸齣(ttyKickOut)
15.13 上半部tty多字符輸齣(ttyWrite)
15.14 下半部tty驅動函數(ttyInterrupt)
15.15 輸齣中斷處理(ttyInter_out)
15.16 tty輸入處理(tty Inter-in)
15.17 tty控製塊初始化(ttyInit)
15.18 設備驅動控製
15.19 觀點
15.20 總結
練習
第16章 DMA設備和驅動(以太網)
16.1 引言
16.2 直接內存訪問和緩衝區
16.3 多緩衝區和環
16.4 使用DMA的以太網驅動例子
16.5 設備的硬件定義和常量
16.6 環和內存緩衝區
16.7 以太網控製塊的定義
16.8 設備和驅動初始化
16.9 分配輸入緩衝區
16.10 從以太網設備中讀取數據包
16.11 嚮以太網設備中寫入數據包
16.12 以太網設備的中斷處理
16.13 以太網控製函數
16.14 觀點
16.15 總結
練習
第17章 最小互聯網協議棧
17.1 引言
17.2 所需的功能
17.3 同步對話、超時和進程
17.4 ARP函數
17.5 網絡數據包的定義
17.6 網絡輸入進程
17.7 UDP錶的定義
17.8 UDP函數
17.9 互聯網控製報文協議
17.10 動態主機配置協議
17.11 觀點
17.12 總結
練習
第18章 遠程磁盤驅動
18.1 引言
18.2 磁盤抽象
18.3 磁盤操作驅動支持
18.4 塊傳輸和高層I/O函數
18.5 遠程磁盤範式
18.6 磁盤操作的語義
18.7 驅動數據結構的定義
18.8 驅動初始化(rdsInit)
18.9 上半部打開函數(rdsOpen)
18.10 遠程通信函數(rdscomm)
18.11 上半部寫函數(rdsWrite)
18.12 上半部讀函數(rdsRead)
18.13 刷新掛起的請求
18.14 上半部控製函數(rdsControl)
18.15 分配磁盤緩衝區(rdsbufalloc)
18.16 上半部關閉函數(rdsClose)
18.17 下半部通信進程(rdsprocess)
18.18 觀點
18.19 總結
練習
第19章 文件係統
19.1 文件係統是什麼
19.2 文件操作的示例集閤
19.3 本地文件係統的設計
19.4 Xinu文件係統的數據結構
19.5 索引管理器的實現
19.6 清空索引塊(lfibclear)
19.7 獲取索引塊(lfibget)
19.8 存儲索引塊(lfibput)
19.9 從空閑鏈錶中分配索引塊(lfiballoc)
19.10 從空閑鏈錶中分配數據塊(lfdballoc)
19.11 使用設備無關的I/O函數的文件操作
19.12 文件係統的設備設置和函數名稱
19.13 本地文件係統打開函數(lfsOpen)
19.14 關閉文件僞設備(lflClose)
19.15 刷新磁盤中的數據(lfflush)
19.16 文件的批量傳輸函數(lflWrite,lflRead)
19.17 在文件中查找一個新位置(lflSeek)
19.18 從文件中提取一個字節(lflGetc)
19.19 改變文件中的一個字節(lflPutc)
19.20 載入索引塊和數據塊(lfsetup)
19.21 主文件係統設備的初始化(lfsInit)
19.22 僞設備的初始化(lflInit)
19.23 文件截斷(lftruncate)
19.24 初始文件係統的創建(lfscreate)
19.25 觀點
19.26 總結
練習
第20章 遠程文件機製
20.1 引言
20.2 遠程文件訪問
20.3 遠程文件語義
20.4 遠程文件設計和消息
20.5 遠程文件服務器通信
20.6 發送一個基本消息
20.7 網絡字節序
20.8 使用設備範式的遠程文件係統
20.9 打開遠程文件
20.10 檢查文件模式
20.11 關閉遠程文件
20.12 讀遠程文件
20.13 寫遠程文件
20.14 遠程文件的定位
20.15 遠程文件單字符I/O
20.16 遠程文件係統控製函數
20.17 初始化遠程文件數據結構
20.18 觀點
20.19 總結
練習
第21章 句法名字空間
21.1 引言
21.2 透明與名字空間的抽象
21.3 多種命名方案
21.4 命名係統設計的其他方案
21.5 基於句法的名字空間
21.6 模式和替換
21.7 前綴模式
21.8 名字空間的實現
21.9 名字空間的數據結構和常量
21.10 增加名字空間前綴錶的映射
21.11 使用前綴錶進行名字映射
21.12 打開命名文件
21.13 名字空間初始化
21.14 對前綴錶中的項進行排序
21.15 選擇一個邏輯名字空間
21.16 默認層次和空前綴
21.17 額外的對象操作函數
21.18 名字空間方法的優點和限製
21.19 廣義模式
21.20 觀點
21.21 總結
練習
第22章 係統初始化
22.1 引言
22.2 引導程序:從頭開始
22.3 操作係統初始化
22.4 在E2100L上啓動一個可選的映像
22.5 Xinu初始化
22.6 係統啓動
22.7 從程序轉化為進程
22.8 觀點
22.9 總結
練習
第23章 異常處理
23.1 引言
23.2 異常、陷阱和惡意中斷
23.3 panic的實現
23.4 觀點
23.5 總結
練習
第24章 係統配置
24.1 引言
24.2 多重配置的需求
24.3 Xinu係統配置
24.4 Xinu配置文件的內容
24.5 計算次設備號
24.6 配置Xinu係統的步驟
24.7 觀點
24.8 總結
練習
第25章 一個用戶接口例子:Xinu殼
25.1 引言
25.2 用戶接口
25.3 命令和設計原則
25.4 一個簡化殼的設計決策
25.5 殼的組織和操作
25.6 詞法符號的定義
25.7 命令行語法的定義
25.8 Xinu殼的實現
25.9 符號的存儲
25.10 詞法分析器代碼
25.11 命令解釋器的核心
25.12 命令名查詢和內部處理
25.13 傳給命令的參數
25.14 嚮外部命令傳遞參數
25.15 I/O重定嚮
25.16 示例命令函數(sleep)
25.17 觀點
25.18 總結
練習
附錄1 操作係統移植
附錄2 Xinu設計注解
索引
第1章 引言和概述 ·
·第1章 引言和概述
第1章
Operating System Design:The Xinu Approach,Linksys Version
引言和概述
第1章 引言和概述
我們的小小係統也有風光的時刻。
——Alfred,Lord Tennyson
1.1 操作係統
每一個智能設備和計算機係統中都隱藏著這麼一類軟件,它們控製著處理信息、管理資源以及與顯示屏、網絡、磁盤和打印機等設備通信的工作。總的來說,這些進行控製和協調工作的代碼通常叫做執行器、監視器、任務管理器,或者內核,而我們將使用一個更寬泛的術語操作係統。
計算機操作係統是人類創造的最復雜的物體之一:計算機操作係統允許多個計算進程和用戶同時共享一個CPU,保護數據免受未經授權的訪問,並保持獨立輸入/輸齣(I/O)設備的正確運行。操作係統提供的高級服務都是通過嚮復雜的硬件發送一係列詳細的命令實現的。有趣的是,操作係統並不是從外部控製電腦的獨立機製——它還包括一些軟件,這些軟件由執行應用程序的同一處理器執行。事實上,當處理器運行應用程序的時候,處理器是不能執行操作係統的,反之亦然。
保證操作係統總在應用程序運行結束後重新奪迴控製權的安排機製使得操作係統的設計變得非常復雜。操作係統最令人印象深刻的方麵來自於服務和硬件之間的不同:操作係統在低級的硬件上提供高級服務。隨著本書內容的推進,讀者就會理解係統軟件處理像串行接口這樣簡單的設備需要做的事情。而其中的哲學原理很簡單:操作係統應該提供讓編程更加容易的抽象,而不是反映底層硬1件設備的抽象。因此,我們得齣結論:
設計操作係統時,應該隱藏底層的硬件細節,並創建一個為應用程序提供高級服務的抽象機器。
操作係統的設計並不是人們所熟知的工藝。最初,由於計算機的缺乏和價格的昂貴,隻有少數程序員有從事操作係統相關工作的機會。而現在,由於先進的微電子技
計算機科學叢書:操作係統設計:Xinu方法 [Operating System Design] 下載 mobi epub pdf txt 電子書
書質量很不錯,都是正版的,價格也比較優惠。京東客服態度很好,比較有禮貌,疑問都能很好解決。送貨速度也很快,上午下單,下午就能送到。不是專業的,所以具體的內容不怎麼太懂,彆人看瞭都說是蠻不錯的書,挺有用的。
評分還沒開始看,爭取能讀懂
評分圖書磨損快遞人員服務態度相當不錯
評分一般
評分買錯瞭,算瞭。壓箱瞭
評分很不錯的一本書,源碼很好
評分非常好 值得看一看非常好 值得看一看非常好 值得看一看
評分不錯的,送貨速度也很快,支持京東~
評分keyi
計算機科學叢書:操作係統設計:Xinu方法 [Operating System Design] pdf epub mobi txt 電子書 下載