操作系統概念與Linux實踐教程(雙語)
內容描述
本書按照操作系統的功能分為10章,系統地講述操作系統的基本原理。第1章為導論,介紹操作系統的概念、操作系統的形成與發展及操作系統的功能和操作系統提供服務的方式等;第2~6章介紹操作系統的進程管理(處理器管理),包括進程、線程、進程調度、進程同步和死鎖;第7章為內存管理;第8章為外存管理;第9章為文件管理;第10章為I/O系統。為了滿足雙語教學的需要,本書在每章的最後增加了精選的操作系統技術英文資料,供有能力的讀者進行擴展閱讀。本書配有PPT、源代碼等教學資源,讀者可登錄華信教育資源網(www.hxedu.com.cn)免費下載。本書每章都配有教學視頻,讀者可以掃描書中二維碼觀看。此外,全書提供8個基於Linux系統的實驗,幫助讀者加深對操作系統原理的理解,部分實驗也提供演示視頻。本書適合作為本科院校、高職高專院校電腦操作系統和Linux相關課程的教材及參考書,也可供相關技術人員參考。
目錄大綱
第1章 導論 1
1.1 操作系統的概念 1
1.2 操作系統的形成與發展 3
1.2.1 手工操作階段 3
1.2.2 單道批處理系統 3
1.2.3 多道批處理系統 4
1.2.4 分時操作系統 5
1.2.5 微機操作系統 5
1.2.6 分佈式操作系統 7
1.2.7 嵌入式操作系統 7
1.3 操作系統的功能 7
1.3.1 接管計算機 7
1.3.2 進程管理 10
1.3.3 存儲管理 11
1.3.4 文件管理 12
1.3.5 設備管理 13
1.4 操作系統的特點 13
1.4.1 並發性 13
1.4.2 共享性 14
1.4.3 虛擬性 15
1.4.4 異步性 15
1.5 操作系統提供服務的方式 15
1.5.1 接口 15
1.5.2 操作接口 16
1.5.3 程序接口 18
1.6 GNU/Linux歷史 19
1.7 Reading Materials 20
1.7.1 Overview 20
1.7.2 Concurrency and Parallelism 22
1.7.3 Graphic User Interface 23
1.8 實驗1 Linux安裝及開發環境
搭建 25
第2章 進程 26
2.1 程序和進程 26
2.2 進程的狀態及轉換 27
2.3 進程的切換 28
2.3.1 概述 28
2.3.2 中斷機制 29
2.3.3 模式切換 30
2.3.4 進程控制塊 30
2.3.5 進程切換 31
2.4 Reading Materials 32
2.4.1 Overview 32
2.4.2 Inter Process Communication 33
2.4.3 Process Control Block 34
2.5 實驗2 進程的創建 36
第3章 線程 39
3.1 動機和特點 39
3.2 線程定義 40
3.3 線程模型 41
3.4 線程庫 42
3.5 Reading Materials 43
3.5.1 Overview 43
3.5.2 POSIX Thread (Pthread)
Libraries 44
3.6 實驗3 Pthread多線程 45
第4章 進程調度 47
4.1 概述 47
4.2 調度標準 49
4.3 調度算法 50
4.3.1 先來先服務調度 50
4.3.2 最短作業優先調度 51
4.3.3 輪轉調度 52
4.3.4 優先級調度 54
4.4 Reading Materials 54
4.4.1 Overview 54
4.4.2 CFS: Completely Fair Process
Scheduling in Linux 56
4.5 實驗4 Linux調度策略 59
第5章 進程同步 60
5.1 背景 60
5.2 進程的交互 61
5.3 競爭關係 62
5.3.1 競爭 62
5.3.2 臨界區 62
5.3.3 軟件解決方案 63
5.3.4 硬件解決方案 64
5.3.5 忙式等待 65
5.4 協作關係 65
5.4.1 信號量 65
5.4.2 二值信號量 66
5.4.3 計數信號量 66
5.4.4 信號量的實現 67
5.4.5 死鎖與飢餓 68
5.5 經典同步問題 68
5.5.1 最簡單的同步問題 68
5.5.2 生產者-消費者問題 69
5.5.3 蘋果桔子問題 70
5.5.4 哲學家進餐問題 71
5.6 Reading Materials 72
5.6.1 Overview 72
5.6.2 Mutual Exclusion 72
5.6.3 Critical Section 73
5.6.4 Mutex VS Semaphore 73
5.7 實驗5 並發線程互斥同步 74
第6章 死鎖 80
6.1 定義 80
6.2 死鎖特徵 80
6.3 資源分配圖 81
6.4 死鎖的防止 82
6.5 死鎖的避免 83
6.5.1 安全狀態 83
6.5.2 銀行家算法 84
6.6 死鎖的檢測和恢復 86
6.6.1 死鎖的檢測 86
6.6.2 死鎖的恢復 86
6.7 Reading Materials 87
6.7.1 Overview 87
6.7.2 Dijkstra Biography 88
第7章 內存管理 90
7.1 概述 90
7.1.1 基本概念 90
7.1.2 基本硬件 91
7.1.3 邏輯地址和物理地址 92
7.1.4 地址轉換 92
7.2 連續內存分配 95
7.2.1 固定分區分配 95
7.2.2 可變分區分配 96
7.2.3 碎片 97
7.3 分段 98
7.3.1 基本方法 98
7.3.2 實現原理 99
7.4 分頁 101
7.4.1 基本方法 101
7.4.2 地址轉換 101
7.4.3 快表 103
7.4.4 多級頁表 105
7.5 虛擬內存 106
7.5.1 緩存與局部性原理 106
7.5.2 虛擬內存 107
7.5.3 請求調頁 108
7.5.4 頁面置換算法 110
7.5.5 系統抖動 112
7.6 Reading Materials 113
7.6.1 Overview 113
7.6.2 Virtual Memory 116
7.6.3 Segmented Virtual Memory 116
7.7 實驗6 進程內存空間 117
第8章 外存管理 124
8.1 磁盤結構 124
8.1.1 硬件結構 124
8.1.2 格式化 125
8.2 磁盤調度 125
8.2.1 磁盤性能指標 125
8.2.2 FCFS調度 126
8.2.3 SSTF調度 126
8.2.4 SCAN調度 127
8.2.5 C-SCAN調度 128
8.2.6 LOOK調度 128
8.2.7 調度算法選擇 129
8.3 RAID結構 130
8.3.1 概述 130
8.3.2 RAID級別 130
8.4 Reading Materials 133
第9章 文件管理 135
9.1 概述 135
9.2 文件 135
9.2.1 文件類型 136
9.2.2 文件屬性 136
9.3 存取方法 137
9.3.1 順序存取 137
9.3.2 直接存取 137
9.4 目錄 137
9.4.1 基本概念 137
9.4.2 文件控制塊 138
9.4.3 單級目錄 139
9.4.4 兩級目錄 139
9.4.5 樹形目錄 140
9.4.6 UFS的目錄實現 141
9.5 分配方法 141
9.5.1 連續分配 142
9.5.2 鏈接分配 142
9.5.3 索引分配 143
9.6 空閒空間管理 145
9.6.1 位圖法 145
9.6.2 空閒鍊錶法 145
9.7 Reading Materials 146
9.7.1 Overview 146
9.7.2 Inode 148
9.7.3 Ext4 149
9.8 實驗7 Linux文件系統 152
9.8.1 實驗說明 152
9.8.2 磁盤高級格式化 152
9.8.3 Linux文件系統操作 160
第10章 I/O系統 163
10.1 概述 163
10.2 I/O硬件 163
10.2.1 硬件原理 163
10.2.2 輪詢 164
10.2.3 中斷 165
10.2.4 DMA 166
10.3 內核I/O結構 167
10.4 內核I/O子系統 168
10.4.1 I/O調度 168
10.4.2 緩衝區 168
10.4.3 緩存 169
10.4.4 假脫機 169
10.5 Reading Materials 170
10.5.1 Overview 170
10.5.2 I/O Channel 171
10.5.3 The Buffer Cache 172
10.6 實驗8 Linux驅動實驗 174
參考文獻 175
作者介紹
楊一濤,男,南京森林警察學院信息技術學院信息安全技術教研室主任,教授,江蘇省區塊鏈專委會委員。
主要承擔《操作系統原理 》、《?嵌入式系統 》、《公安信息技術基礎》、《人工智能概論》、《應用密碼學》等課程的教學。