程式設計師的 作業系統(OS)/軟體 相關知識
程式設計師的 作業系統(OS)/軟體 相關知識
GITHUB: https://github.com/jash-git/Jash-good-idea-20211031-001/tree/main/%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E5%B8%AB%E7%9A%84%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1%E7%9B%B8%E9%97%9C%E7%9F%A5%E8%AD%98
目錄:
認識作業系統; 1
作業系統; 8
電腦硬體簡介; 9
CPU; 10
多執行緒和多核晶片; 11
記憶體; 13
寄存器; 14
快取記憶體; 14
主存; 15
磁片; 15
I/O 設備; 17
匯流排; 20
電腦啟動過程; 22
作業系統博物館; 22
大型機作業系統; 23
伺服器作業系統; 23
多處理器作業系統; 23
個人電腦系統; 23
掌上電腦作業系統; 23
嵌入式作業系統; 23
感測器節點作業系統; 23
即時操作系統; 24
智慧卡作業系統; 24
作業系統概念; 24
進程; 24
位址空間; 26
文件; 26
保護; 28
shell; 28
系統調用; 29
用於進程管理的系統調用; 32
用於檔管理的系統調用; 35
用於目錄管理的系統調用; 36
其他系統調用; 37
Win 32 API; 37
作業系統結構; 40
單體系統; 40
分層系統; 41
微內核; 41
客戶–伺服器模式; 42
進程和執行緒; 43
進程; 44
進程模型; 46
進程的創建; 47
系統初始化; 47
系統調用創建; 48
用戶請求創建; 48
批次處理創建; 48
進程的終止; 49
正常退出; 50
錯誤退出; 50
嚴重錯誤; 50
被其他進程殺死; 50
進程的層次結構; 50
UNIX 進程體系; 50
Windows 進程體系; 51
進程狀態; 51
進程的實現; 53
執行緒; 55
執行緒的使用; 55
多執行緒解決方案; 55
單執行緒解決方案; 56
狀態機解決方案; 56
經典的執行緒模型; 57
執行緒系統調用; 59
POSIX 執行緒; 60
執行緒實現; 61
在用戶空間中實現執行緒; 62
在用戶空間實現執行緒的優勢; 62
在用戶空間實現執行緒的劣勢; 63
在內核中實現執行緒; 63
混合實現; 64
進程間通信; 65
競態條件; 66
臨界區; 67
忙等互斥; 68
遮罩中斷; 68
鎖變數; 68
嚴格輪詢法; 69
Peterson 解法; 70
TSL 指令; 72
睡眠與喚醒; 73
生產者–消費者問題; 73
信號量; 75
用信號量解決生產者 – 消費者問題; 76
互斥量; 78
Futexes; 80
Pthreads 中的互斥量; 81
管程; 83
消息傳遞; 88
消息傳遞系統的設計要點; 88
用消息傳遞解決生產者–消費者問題; 89
屏障; 90
避免鎖:讀–複製–更新; 91
調度; 92
調度介紹; 92
進程行為; 92
何時調度; 93
調度演算法的分類; 95
調度演算法的目標; 95
批次處理中的調度; 97
先來先服務; 97
最短作業優先; 98
最短剩餘時間優先; 99
互動式系統中的調度; 99
輪詢調度; 99
優先順序調度; 100
多級佇列; 101
最短進程優先; 102
保證調度; 103
彩票調度; 103
公平分享調度; 103
即時系統中的調度; 104
調度策略和機制; 105
執行緒調度; 105
記憶體; 107
無記憶體抽象; 108
運行多個程式; 110
一種記憶體抽象:位址空間; 111
位址空間的概念; 112
基址寄存器和變址寄存器; 112
交換技術; 113
交換過程; 114
空閒記憶體管理; 118
使用點陣圖的存儲管理; 118
使用鏈表進行管理; 119
虛擬記憶體; 121
分頁; 122
存在映射的頁如何映射; 124
未映射的頁如何映射; 124
頁表; 125
分頁表項目的結構; 126
加速分頁過程; 127
轉換檢測緩衝區; 128
軟體 TLB 管理; 131
針對大記憶體的頁表; 133
多級頁表; 133
倒排頁表; 135
頁面置換演算法; 135
最優頁面置換演算法; 136
最近未使用頁面置換演算法; 136
先進先出頁面置換演算法; 137
第二次機會頁面置換演算法; 138
時鐘頁面置換演算法; 139
最近最少使用頁面置換演算法; 140
用軟體類比 LRU; 140
工作集頁面置換演算法; 142
工作集時鐘頁面置換演算法; 144
頁面置換演算法小結; 146
檔案系統; 147
文件; 149
檔命名; 149
檔結構; 151
檔案類型; 152
檔訪問; 155
檔案屬性; 156
檔操作; 158
目錄; 158
一級目錄系統; 158
層次目錄系統; 159
路徑名; 160
目錄操作; 162
檔案系統的實現; 162
檔案系統佈局; 162
啟動區; 163
超級塊; 164
空閒空間塊; 164
碎片; 165
inode; 166
檔的實現; 167
連續分配; 167
鏈表分配; 169
使用記憶體表進行鏈表分配; 170
inode ; 171
目錄的實現; 172
共用檔; 176
日誌結構檔案系統; 180
日誌檔案系統; 182
虛擬檔案系統; 183
檔案系統的管理和優化; 184
磁碟空間管理; 185
塊大小; 185
記錄空閒塊; 185
磁片配額; 189
檔案系統備份; 190
物理轉儲和邏輯轉儲; 192
檔案系統的一致性; 193
檔案系統性能; 196
快取記憶體; 196
塊提前讀; 197
減少磁片臂運動; 197
磁片磁碟重組; 198
I/O; 198
I/O 設備; 199
塊設備; 199
塊設備的缺點; 199
字元設備; 199
設備控制器; 200
記憶體映射 I/O; 202
記憶體映射 I/O 的優點和缺點; 205
直接記憶體存取; 208
DMA 工作原理; 208
重溫中斷; 209
精確中斷和不精確中斷; 211
IO 軟體原理; 212
I/O 軟體目標; 212
設備獨立性; 212
錯誤處理; 213
同步和非同步傳輸; 213
緩衝; 214
共用和獨佔; 214
使用程式控制 I/O; 214
使用中斷驅動 I/O; 215
使用 DMA 的 I/O; 216
I/O 層次結構; 216
中斷處理常式; 217
設備驅動程式; 218
與設備無關的 I/O 軟體; 221
緩衝; 222
錯誤處理; 226
設備驅動程式統一介面; 226
分配和釋放; 226
設備無關的塊; 227
使用者空間的 I/O 軟體; 227
盤; 227
盤硬體; 227
磁片; 227
RAID;
228
磁片格式化; 228
磁片臂調度演算法; 230
錯誤處理; 233
穩定記憶體; 235
時鐘; 239
時鐘硬體; 239
時鐘軟體; 239
軟計時器; 240
鎖死; 240
前言; 240
資源; 241
可搶佔資源和不可搶佔資源; 241
資源獲取; 241
鎖死; 244
資源鎖死的條件; 244
鎖死模型; 244
鴕鳥演算法; 248
鎖死檢測和恢復; 249
每種類型一個資源的鎖死檢測方式;
249
每種類型多個資源的鎖死檢測方式;
249
從鎖死中恢復; 250
通過搶佔進行恢復; 250
通過回滾進行恢復; 250
殺死進程恢復; 251
鎖死避免; 251
單個資源的銀行家演算法; 251
破壞鎖死; 253
破壞互斥條件; 253
破壞保持等待的條件; 253
破壞不可搶佔條件; 253
破壞迴圈等待條件; 253
其他問題; 254
兩階段加鎖; 254
通信鎖死; 255
活鎖; 256
饑餓; 256
總結; 256
作業系統面試題; 257
解釋一下什麼是作業系統; 257
解釋一下作業系統的主要目的是什麼;
258
作業系統的種類有哪些; 258
作業系統結構; 258
單體系統; 258
分層系統; 259
微內核; 259
客戶–伺服器模式; 260
什麼是按需分頁; 260
多處理系統的優勢; 260
什麼是內核; 261
什麼是即時系統; 261
什麼是虛擬記憶體; 261
什麼是進程和進程表; 262
什麼是執行緒,執行緒和進程的區別;
262
使用多執行緒的好處是什麼; 263
什麼是 RR 調度演算法; 263
導致系統出現鎖死的情況; 263
RAID 的不同級別; 263
什麼是 DMA ; 264
多執行緒程式設計的好處是什麼; 264
什麼是設備驅動程式; 264
進程間的通信方式; 265
通信概念; 265
解決方案; 265
進程間狀態模型; 266
調度演算法都有哪些; 268
批次處理中的調度; 268
先來先服務; 268
最短作業優先; 269
最短剩餘時間優先; 269
互動式系統中的調度; 269
輪詢調度; 269
優先順序調度; 270
最短進程優先; 270
彩票調度; 271
公平分享調度; 271
頁面置換演算法都有哪些; 271
影響調度程式的指標是什麼; 272
什麼是僵屍進程; 273
關於作業系統,你必須知道的名詞; 273
勘誤; 303
完整圖文: