圖書信息1
出版信息
書名:作業系統實驗教程
出版社:電子工業出版社
ISBN:978-7-121-10564-7
出版日期:2010年4月
定價:29.00元
開本:16開
頁碼:292頁
內容簡介
本實驗教材除了具有傳統的作業系統實驗基本特色外,還具有通信工程、信息安全和電子工程等非計算機專業特色,並且實驗覆蓋面很廣、實驗內容特別豐富。
本書共分3部分:第1部分是實驗相關原理;第2部分是實驗指導書,共設計了涵蓋作業系統絕大部分原理和套用的28個實驗,可作為學生的上機實驗或課程設計;第3部分是部分實驗參考解答,給出了第2部分中的16個實驗參考答案,其餘的實驗是希望學生全部獨立完成,這些實驗也可作為教師布置上機的實驗題目。
本書可作為高等院校計算機科學與套用專業,以及通信與信息工程、電子工程、信息安全、自動控制和信息管理類等非計算機專業的實驗教材和實驗教學參考書,對於計算機軟體開發人員也是一本很好的參考書。
宣傳語:立足實用·操作性強·覆蓋面廣
前言
作業系統不僅是理論性很強的課程,而且也是技術性和實踐性很強的課程。過去在作業系統教學中,教師上課時在課堂上只是放空炮似地講一些空洞的原理,學生感到學習內容很空洞,這形成了枯燥無味的“空對空”式的脫離實踐的教學模式。學生在畢業設計時以及到了工作崗位上後,很多命令、工具不會用,系統程式設計能力很差,常常面對系統開發課題束手無策,很難較快地進入角色和完成研究開發任務。這種輕視實踐和技術的思想都將導致學生在今後的工作中付出沉重的代價。
本教材的目的是通過作業系統實驗或課程設計,加深學生對作業系統原理、系統與技術的理解和掌握,提高編制大型的系統和應用程式的能力,避免出現高分低能情況。
本實驗教材在國內同類實驗教材中,除了具有傳統的作業系統實驗基本特色外,還具有通信工程、信息安全和電子工程等非計算機專業特色,並且實驗覆蓋面很廣、實驗內容特別豐富、實用性也很強。
一般作業系統的實驗教材較少涉及通信系統部分,而在另一門計算機通信課程中,一般也不結合有關作業系統核心的通信接口進行教學或實驗,這使得學生即使學了這兩門課程也不會編制與通信有關的系統程式。本實驗教材在理論學習後接著安排有關的實驗,要求學生編制進程控制、進程間數據通信,進程通信機制的實現,以及進行包括TCP和UDP的遠程進程通信、遠程過程調用實驗,在此基礎上完成遠程計算機之間的檔案傳送FTP等功能。
信息安全是實踐性很強的課程,同通信與信息工程相似,對掌握作業系統的開發與套用技術要求很高,為此,本教材設計了Linux核心模組和系統調用擴展等實驗。本實驗教材與當前信息安全需求相結合,設計了作業系統安全和安全訪問控制實驗,促進學生進行安全性增強方面的探索。
鑒於電子科學和自動控制專業與嵌入式系統聯繫越來越密切,本實驗教材能使學生進一步掌握嵌入式作業系統的安裝與引導技術。
本課程的實驗設計安排分成難度級別不同的實驗,供水平和要求不同的學生選擇。本書可作為高等院校計算機科學與套用專業,以及通信與信息工程、信息安全、電子工程、自動控制和信息管理類等非計算機專業的實驗教材及實驗教學參考書,對於計算機軟體開發人員也是一本很好的參考書。
全書共分3部分,第1部分是實驗相關原理,講述了與書中實驗密切相關的作業系統,這一部分大多是從本書最後給出的參考文獻[1](《作業系統教程(第3版)》,陸松年主編,電子工業出版社出版)摘錄整理而來的,這是考慮到使用本書的學生已經或正在學習作業系統,但不是使用參考文獻[1]的教材,所以把與實驗密切相關的內容整理在這裡,其餘部分可以使用其他通用的作業系統教材。當然,單單閱讀這部分是遠遠不夠的,學生還要掌握作業系統的基本原理才行。個別實驗的原理部分可以直接閱讀參考文獻[1]的其他部分,並可以幫助進行實驗設計與編程。
第2部分是實驗指導書,共設計了涵蓋作業系統絕大部分原理和套用的28個實驗(包括分實驗)。一些實驗一般學生在做了適當準備後可以在2~4個學時之內完成,但有些實驗比較大,設計、編程和調試都比較複雜,可以作為學生的課程設計,所需學時數約為18~54學時。
第3部分是部分實驗參考解答,給出了第2部分中的16個實驗參考解答,這些參考解答全部經過了測試。本書其餘的實驗是希望學生全部獨立完成,這些實驗也可作為教師布置上機的實驗題目。
為了使學生通過實驗後,進一步理解與實驗相關的原理和理論,我們在每個實驗的最後部分給出了若干個思考題,學生在實驗前先嘗試獨立完成這些思考題,必要時可以參考部分實驗參考解答中的思考題答案。
在本書的編寫過程中,得到了學校和院、系領導的大力支持。由於作者水平有限,實驗內容尚需要不斷更新,書中難免存在一些錯誤,懇切希望各位專家、學者和讀者批評指教,作者將不勝感謝。
作 者
2010年3月
於上海交通大學
電子信息與電氣工程學院 信息安全工程學院
目錄
第1部分 實驗相關原理
第1章 存儲管理 2
1.1 可變分區存儲管理 2
1.1.1 空閒存儲區表 2
1.1.2 首次適應法 3
1.1.3 循環首次適應法 5
1.1.4最佳適應算法5
1.1.5 最差適應法 6
1.2 分頁存儲管理 6
1.2.1 分頁存儲管理的基本思想 6
1.2.2 地址變換 6
1.2.3 空閒記憶體頁的管理 7
1.2.4 請求分頁式基本原理 7
1.2.5 頁面淘汰 8
第2章 進程管理 10
2.1 進程概述 10
2.1.1 進程的概念 10
2.1.2 進程的組成 10
2.1.3 進程的狀態及其變化 11
2.2 進程控制塊 12
2.3 調度 12
2.3.1進程切換調度策略 12
2.3.2 進程調度算法 12
2.4 UNIX系統的進程調度 14
2.4.1 進程的切換調度算法 14
2.4.2 切換調度程式 14
2.5 進程的控制 14
2.5.1 進程的阻塞 14
2.5.2 UNIX系統中的進程睡眠和喚醒 15
2.5.3 進程的終止和等待終止 15
2.6 進程的創建和映像改換 16
2.6.1 進程的創建 16
2.6.2 進程映像的改換 16
2.7 執行緒 18
2.7.1 進程和執行緒 18
2.7.2 多執行緒 18
2.7.3 執行緒的狀態 19
2.7.4 執行緒套用示例 19
第3章 進程通信 21
3.1 進程間互斥控制方法 21
3.1.1 鎖的表示和操作 21
3.1.2 鎖的安全控制 21
3.2 信號量和semWait、semSignal操作 23
3.3 信號量的套用 24
3.3.1 利用信號量實現互斥 24
3.3.2 兩個進程間的同步 24
3.3.3 生產者和消費者問題 25
3.4 進程間的數據通信 26
3.4.1 訊息通信 26
3.4.2 共享存儲區 27
3.4.3 Solaris門 27
3.5 軟中斷和信號機構 28
3.5.1 信號的產生與類型 28
3.5.2 信號的處理方式及設定 29
3.5.3 信號的傳送 30
3.6 死鎖 30
3.6.1 產生死鎖的原因 31
3.6.2 產生死鎖的條件 31
3.6.3 死鎖的預防 31
3.6.4 死鎖的避免 32
3.6.5 死鎖的檢測 33
第4章 檔案系統 35
4.1 檔案目錄 35
4.1.1 目錄的內容 35
4.1.2 目錄的結構 35
4.2 檔案存儲資源分配 35
4.3 檔案的系統調用 36
4.3.1 檔案的創建、打開、關閉和取消 36
4.3.2 檔案的讀/寫 37
4.4 檔案的標準子例程37
4.4.1 標準I/O的概念 37
4.4.2 流檔案的打開和關閉 38
4.4.3 流檔案的讀/寫 39
4.5 UNIX檔案系統的內部結構 40
4.5.1 索引節點 40
4.5.2 檔案索引結構 40
4.5.3 目錄結構 42
4.5.4 打開檔案結構 43
4.6 管道檔案和管道通信45
4.6.1 管道檔案 45
4.6.2 管道的讀/寫和關閉 45
4.6.3 有名管道 46
第5章 UNIX系統和網路程式設計 48
5.1 高級進程間通信 48
5.1.1 訊息通信 48
5.1.2 共享記憶體 49
5.1.3 信號燈 50
5.2 遠程進程間通信Socket 51
5.2.1 Socket通信概述 51
5.2.2 Socket系統調用 52
5.3 UDP套接字編程 54
5.3.1 UDP套接字的基本概念 54
5.3.2 UDP套接字基本函式 54
5.4 Solaris門通信 55
5.5 RPC(遠程過程調用) 57
5.5.1 RPC概述 57
5.5.2 RPC服務地址的獲取 57
5.5.3rpcgen編程指南 58
5.5.4 客戶端身份驗證 59
第6章 Linux的動態核心模組機制 60
6.1 作業系統的體系結構 60
6.1.1 單體式結構 60
6.1.2 微核心結構 60
6.2 Linux的動態核心模組機制概述 61
6.3 Linux核心模組的動態載入/卸載 62
6.3.1 核心模組的動態載入 62
6.3.2 核心模組的動態卸載 62
6.4 Linux動態模組的開發與實現 63
6.4.1 Linux模組的基本組成 63
6.4.2 Linux核心模組的符號引用 63
6.4.3 Linux核心模組的編譯和運行模式 63
6.4.4 Linux核心模組的調試和信息輸出 64
第2部分 實驗指導書
作業系統實驗指導66
(一)實驗的目的和要求 66
(二)實驗步驟 66
(三)實驗報告要求 68
實驗1 Linux虛擬存儲器的實現 69
實驗2 可變分區存儲管理 72
實驗3 請求分頁系統頁面淘汰算法 75
實驗4 進程調度算法 77
(一)多級反饋佇列調度算法77
(二)進程調度算法的實現 79
實驗5 進程和進程控制 82
(一)進程控制和信號機制 82
(二)生產者和消費者問題 83
實驗6 進程的數據通信 86
(一)訊息通信 86
(二)共享記憶體和信號量 87
實驗7 並發執行緒和執行緒通信 89
實驗8 Linux訊息佇列的實現 90
實驗9 死鎖實驗 93
(一)死鎖的避免 93
(二)死鎖的檢測 94
實驗10 檔案系統的用戶界面 96
(一)檔案複製 96
(二)管道檔案通信 97
實驗11 檔案系統設計 99
實驗12 有名管道機制的實現 102
實驗13 Linux的核心模組擴展 105
實驗14 Linux的系統調用擴展 108
實驗15 Solaris門函式進程通信 114
實驗16 遠程進程通信 118
(一)TCP通信實驗 118
(二)UDP通信實驗 120
實驗17 遠程過程調用 122
實驗18Shell程式設計 124
實驗19 嵌入式Linux系統的安裝與引導 126
實驗20 作業系統安全 128
(一)作業系統登錄的可信路徑 128
(二)基於硬體標識的程式許可權控制 129
實驗21 Linux的安全訪問控制 131
第3部分 部分實驗參考解答
實驗1 Linux虛擬存儲器實現參考解答 134
實驗3 請求分頁系統頁面淘汰算法
實驗3 參考解答 139
實驗4 進程調度算法參考解答 146
(一)多級反饋佇列調度算法 146
(二)FCFS進程調度算法的實現 159
實驗5 進程和進程控制參考解答 180
(二)生產者和消費者問題 180
實驗8 Linux訊息佇列的實現參考解答 188
實驗9 死鎖實驗參考解答 208
(一)死鎖的避免 208
(二)死鎖的檢測 215
實驗11 檔案系統設計參考解答 222
實驗13 Linux的核心模組擴展參考解答 242
實驗14 Linux的系統調用擴展參考解答 248
實驗19 嵌入式Linux系統的安裝與引導參考解答 267
實驗20 作業系統安全參考解答 270
(一)作業系統登錄的可信路徑 270
(二)基於硬體標識的程式許可權
(二)控制 272
實驗21 Linux的安全訪問控制參考解答 275
參考文獻 279
圖書信息2
出版信息
書名:作業系統實驗教程
編著:張坤 姜立秋 趙慧然
出版發行:清華大學出版社
開本:185×260
ISBN:978-7-302-17734-0
定價:26.00元
內容提要
本書是“作業系統”課程的輔助教材,通過其中的實驗可加深對本課程概念的理解。全書共分為10章,從設計一個簡單的作業系統引導程式開始,指導學生初步理解作業系統的設計原理和過程,使學生能夠掌握簡單的Shell編程,掌握進程、執行緒、進程管理、進程調度和進程通信等基本概念和技術,掌握記憶體管理基本概念和技術,掌握檔案操作和磁碟調度的基本原理。
本書的實驗以Linux作業系統為主。因為Linux是開放源碼的,因此,在本書附錄中給出了Linux0.11的部分源碼分析,可以讓讀者得以一窺作業系統的內部實現機制。
書中的實驗題目具有獨立性,並且對每個實驗中用到的知識,在前面都給予描述和指導,這樣有利於讀者通過自學掌握實驗教程中的技術和方法。
本書可作為高等院校計算機及相關專業“作業系統”課程實驗的輔助教材,也可作為讀者學習作業系統技術的實驗指導教程。
編輯推薦
站在工程、開發和研究三個角度,進行實踐性教學環節的設計。
從社會對計算機專業人才的能力需求的角度,系統地規劃計算機實驗和實踐的方式和內容。
開發實訓驗證型、開發研究型等不同層次的教學內容,以滿足從大專、本科以及某些研究生層次的教學需求。
以系統性、開放性、經典性和適用性等全新的面貌呈現在中國的計算機教學領域。
精心挖掘和遴選作者,把他們多年積累的教學經驗編寫成教材。
每本書都經過編委會委員的精心篩選和嚴格評審,嚴把質量關。
目錄
第1章 引導作業系統的過程
1.1 實驗目的
1.2 預備知識
1.3 實驗內容
1.3.1 簡單彙編程式設計
1.3.2 查看啟動記錄
1.3.3 修改啟動記錄
1.3.4 用NASMW編譯一個自己的啟動程式(.BIN檔案)
第2章 Linux基本環境
2.1 實驗目的
2.2 預備知識
2.2.1 Linux的安裝
2.2.2 Linux 命令行(Shell環境)
2.2.3 檔案系統命令
2.2.4 用戶及系統管理常用命令
2.2.5 網路操作常用命令
2.2.6 Linux下軟體安裝
2.2.7 使用編輯器vi 編輯檔案
2.2.8 GCC編譯器
2.2.9 Gdb調試器
2.2.10 編寫包含多檔案的Makefile
2.3 實驗內容
2.3.1 Linux基本操作練習
2.3.2 Makefile的套用
第3章 Shell編程
3.1 實驗目的
3.2 預備知識
3.2.1 Shell概述
3.2.2 Shell的特點和命令行書寫規則
3.2.3 常用Shell類型
3.3 實驗內容
3.3.1 簡單Shell 程式設計
3.3.2 Shell腳本的建立和執行
3.3.3 Shell變數
3.3.4 Shell中的特殊字元
3.3.5 表達式的比較
3.3.6 控制結構
3.3.7 綜合套用
第4章 進程管理
4.1 實驗目的
4.2 預備知識
4.2.1 進程相關基本概念
4.2.2 Linux下系統調用
4.2.3 Windows下的系統調用
4.2.4 進程調度算法
4.3 實驗內容
4.3.1 進程的創建
4.3.2 進程的控制
4.3.3 檔案的加鎖、解鎖
4.3.4 Windows下的進程管理
4.3.5 進程調度模擬算法
第5章 進程間通信
5.1 實驗目的
5.2 預備知識
5.2.1 管道
5.2.2 訊息
5.2.3 共享記憶體
5.2.4 信號機制
5.3 實驗內容
5.3.1 進程的管道通信
5.3.2 訊息的創建、傳送和接收
5.3.3 共享存儲區的創建、附接和段接
5.3.4 訊息佇列和共享存儲區性能比較
5.3.5 信號機制舉例
第6章 進程(或執行緒)同步與多執行緒編程
6.1 實驗目的
6.2 預備知識
6.2.1 進程(或執行緒)同步概述
6.2.2 執行緒概述
6.3 實驗內容
6.3.1 生產者?消費者問題
6.3.2 進程、執行緒綜合套用
第7章死鎖避免——銀行家算法
7.1 實驗目的
7.2 預備知識
7.2.1 死鎖的概念
7.2.2死鎖預防
7.2.3 死鎖避免
7.3 實驗內容
7.3.1 實現銀行家算法所用的數據結構
7.3.2 銀行家算法
7.3.3 源程式清單
7.3.4 設計輸入數據、驗證銀行家算法
第8章 存儲管理
8.1 實驗目的
8.2 預備知識
8.3 實驗內容
8.3.1 可變分區主存分配和回收
8.3.2 請求頁式存儲管理
第9章 檔案操作
9.1 實驗目的
9.2 預備知識
9.3 實驗內容
第10章 磁碟調度
10.1 實驗目的
10.2 預備知識
10.3 實驗內容
附錄A 80386基礎
附錄B 作業系統練習題與參考答案
附錄C 綜合測試題及其參考答案
附錄D 作業系統自測題
附錄E Linux0.11系統引導程式
附錄F Linux0.11進程調度
附錄G Linux0.11中信號的處理
附錄H Linux0.11的記憶體管理
參考文獻