操作系統是計算機系統的核心和靈魂,是其他軟件運行的支撐環境,其性能的優劣直接影響整個計算機系統的性能。本書采用理論與實踐相結合的方式,系統地介紹了現代操作系統的經典理論和最新應用技術,選擇具有代表性的主流操作系統Linux和Windows作為案例貫穿全書。 全書共分8章,基本覆蓋了操作系統系統的基本概念、設計原理和實現技術,盡可能系統全面地介紹了現代操作系統的基本原理和實現技術。其中,第1章介紹了操作系統的概念、發展歷史、操作系統結構和設計的相關問題;第2章討論了操作系統的工作環境和用戶界面;第3章和第4章詳細闡述了處理器管理、進程同步、通信機制及死鎖;第5章~第7章分別介紹了操作系統的存儲管理、文件管理和設備管理功能;第8章分析了操作系統的安全和保護問題。
選擇具有代表性的主流操作系統Linux和Windows作為案例貫穿全書,系統地介紹了現代操作系統的經典理論和最新應用技術。
曾憲權,許昌學院副教授,計算機系主任,學科帶頭人,主要研究Linux操作系統及其原理,發表過多篇論文,其中核心期刊論文5篇,出版過多部教材。
第1章 操作系統概論11.1 概述11.1.1 操作系統的地位11.1.2 操作系統的目標31.1.3 操作系統的作用31.1.4 操作系統的特征41.1.5 操作系統的功能61.2 操作系統的形成和發展81.2.1 人工操作階段81.2.2 管理程序階段91.2.3 多道批處理101.2.4 分時系統與實時系統的出現121.2.5 操作系統的進一步發展14案例研究:Linux和Windows操作系統161.3 操作系統結構181.3.1 操作系統的設計181.3.2 操作系統結構的類型19案例研究:Windows Vista和Linux系統結構231.4 總結與提高25習題125第2章 操作系統用戶工作環境的界面262.1 操作系統用戶工作環境262.1.1 操作系統的工作模式272.1.2 系統的生成282.1.3 系統的啟動28案例研究:Linux系統啟動過程291.2 操作系統用戶界面312.2.1 操作系統提供的服務312.2.2 命令接口32案例研究:Linux系統的Shell程序332.2.3 圖形用戶接口34案例研究:Windows Explore VS. Linux Shell342.2.4 程序接口35案例研究:Linux操作系統的系統調用號和系統調用表392.3 總結與提高40習題241實驗1 向Linux內核增加系統調用41第3章 處理器管理453.1 進程的概述453.1.1 程序的執行方式453.1.2 進程的概念463.1.3 進程的狀態483.1.4 進程描述50實例分析:Linux系統的進程523.2 進程的控制553.2.1 進程控制機構553.2.2 進程操作56實例研究:在Linux和Windows系統中創建進程573.3 線程603.3.1 線程的概念603.3.2 線程的實現623.3.3 多線程模型643.3.4 線程池65實例研究:Windows Server 2003和Linux線程663.4 處理器調度693.4.1 處理器調度的層次693.4.2 進程調度703.4.3 選擇調度算法的準則713.5 調度算法723.5.1 先來先服務調度算法723.5.2 最短作業優先調度算法733.5.3 優先級調度算法733.5.4 輪轉法調度743.5.5 多級隊列調度753.5.6 多級反饋隊列調度763.5.7 高響應比優先調度773.6 多處理器調度和實時調度773.6.1 多處理器調度773.6.2 實時調度78實例研究:Windows Server 2003 和Linux進程調度783.7 總結與提高82習題383實驗2 Shell編程84實驗3 Windows多線程控制臺程序87第4章 進程同步與死鎖914.1 進程同步和互斥914.1.1 進程的同步924.1.2 進程的互斥924.1.3 信號量機制944.2 經典同步問題1004.2.1 生產者-消費者問題1004.2.2 讀者-寫者問題1024.2.3 哲學家進餐問題1034.2.4 理發師問題1044.3 管程1054.3.1 管程的基本概念1054.3.2 條件變量1064.3.3 利用管程解決生產者-消費者問題1074.4 操作系統同步實例分析1084.4.1 Windows Server 2003中的進程同步1094.4.2 Linux中的進程同步1104.5 進程通信1114.5.1 進程通信的方式1114.5.2 消息傳遞系統1124.5.3 消息緩沖隊列通信機制1154.5.4 客戶機/服務器系統通信116實例研究:Windows和Linux系統進程通信機制1184.6 死鎖1274.6.1 死鎖的概念1274.6.2 死鎖產生的原因和必要條件1284.6.3 死鎖的描述1294.6.4 處理死鎖的方法1314.7 死鎖的預防和避免1314.7.1 死鎖的預防1314.7.2 死鎖的避免1334.8 死鎖的檢測和解除1374.8.1 死鎖的檢測1374.8.2 死鎖的解除1404.9 總結與提高141習題4142實驗4 有限緩沖區問題144第5章 存儲管理1495.1 存儲管理的功能1495.1.1 用戶程序的處理過程1505.1.2 存儲管理的功能1515.2 連續內存分配技術1555.2.1 分區管理基本原理1555.2.2 分區的分配與回收1575.2.3 碎片問題1595.3 內存不足時的管理1605.3.1 覆蓋1605.3.2 交換161實例分析:UNIX和Windows 2000中的交換技術1625.4 基本分頁存儲管理技術1625.4.1 分頁存儲管理的基本原理1635.4.2 地址映射1645.4.3 頁表的結構1665.4.4 頁面的共享1675.5 分段存儲管理技術1685.5.1 分段存儲管理的基本原理1685.5.2 地址轉換1695.5.3 段的共享和保護1695.5.4 段頁式存儲管理171段頁式技術實例:Intel Pentium處理器1735.6 虛擬存儲器1745.6.1 虛擬內存1755.6.2 虛擬內存的特征1765.7 請求分頁存儲管理技術1765.7.1 請求分頁存儲管理基本原理1765.7.2 頁面置換算法1785.7.3 頁面分配和置換1845.7.4 工作集模型1865.8 存儲管理實例1875.8.1 Windows Server 2003內存管理1875.8.2 Linux操作系統的存儲管理1915.9 總結與提高198習題5198第6章 文件管理2016.1 文件的概念2016.1.1 文件及其分類2016.1.2 文件屬性2036.1.3 文件組織2036.1.4 文件訪問方法2056.2 目錄結構2066.2.1 文件控制塊和文件目錄2066.2.2 單級目錄2086.2.3 二級目錄2086.2.4 樹形目錄209實例研究:DOS和UNIX的目錄結構2116.2.5 目錄的實現2126.3 文件和目錄操作2136.3.1 文件操作213實例研究:Linux和Windows 系統的文件操作2146.3.2 目錄操作2186.4 文件系統實現2186.4.1 文件系統結構2196.4.2 文件系統的實現2206.4.3 文件存儲空間的分配2216.4.4 空閑空間的管理2266.5 文件共享和保護2286.5.1 文件的共享229實例研究:Linux中的文件共享2306.5.2 文件的保護2316.5.3 文件系統的可靠性2326.6 Windows和Linux的文件系統2336.6.1 Windows Server 2003文件管理2336.6.2 Linux文件管理2396.7 總結與提高244習題6245實驗5 簡單文件系統的實現246第7章 設備管理2507.1 設備管理的概念2507.1.1 設備的分類2507.1.2 設備管理的功能和任務2517.1.3 I/O系統結構2527.1.4 設備控制器2527.2 I/O控制方式2547.2.1 輪詢方式2547.2.2 中斷方式2557.2.3 DMA方式2567.2.4 通道控制方式2587.3 中斷技術2607.3.1 中斷的基本概念2607.3.2 中斷的分類與優先級2617.3.3 軟中斷2617.3.4 中斷處理過程2627.4 緩沖技術2637.4.1 緩沖的引入2637.4.2 緩沖的種類2637.4.3 緩沖池的管理2647.5 設備分配2667.5.1 設備分配的數據結構2667.5.2 設備分配的原則和策略2677.5.3 設備分配技術2697.5.4 SPOOLing系統2697.6 I/O軟件原理2707.6.1 I/O軟件的設計目標和原則2717.6.2 I/O中斷處理程序2717.6.3 設備驅動程序2717.6.4 與硬件無關的I/O軟件2737.6.5 用戶空間的I/O軟件2747.7 磁盤調度和管理2757.7.1 磁盤的結構2757.7.2 磁盤調度2767.7.3 磁盤管理2807.8 Windows I/O系統和Linux 的設備管理2817.8.1 Windows Server 2003的I/O系統2817.8.2 Linux的設備管理2857.9 總結與提高287習題7288實驗6 軟盤驅動程序2