




已閱讀5頁,還剩885頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Linux基礎(chǔ)教程 1 操作系統(tǒng)基礎(chǔ) 清華大學(xué)計(jì)算機(jī)基礎(chǔ)教育課程系列教材湯荷美董淵李莉程志銳編著 總目錄 第1部分Linux操作系統(tǒng)第1章操作系統(tǒng)概述第2章處理機(jī)管理第3章存儲管理第4章調(diào)度第5章設(shè)備第6章文件系統(tǒng) 第2部分操作系統(tǒng)命令及shell編程第7章Linux基本命令第8章使用vi編輯文件第9章shell編程第3部分系統(tǒng)管理第10章Linux系統(tǒng)軟件的獲取和安裝第11章賬號管理第12章文件系統(tǒng)管理第13章TCP IP網(wǎng)絡(luò)管理第14章備份與恢復(fù)第15章XWindow及Genie應(yīng)用程序 第1部分Linux操作系統(tǒng)第1章操作系統(tǒng)概述 1 1操作系統(tǒng)簡介1 2操作系統(tǒng)接口1 3操作系統(tǒng)功能1 4操作系統(tǒng)結(jié)構(gòu)1 5Linux操作系統(tǒng)介紹1 6Linux的內(nèi)核特征1 7Linux的發(fā)展及展望1 8小結(jié)習(xí)題 操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的基本系統(tǒng)軟件 軟件系統(tǒng)中操作系統(tǒng)是所有軟件的核心 操作系統(tǒng)負(fù)責(zé)控制 管理計(jì)算機(jī)的所有軟件 硬件資源 是惟一直接和硬件系統(tǒng)打交道的軟件 是整個軟件系統(tǒng)的基礎(chǔ)部分 同時還為計(jì)算機(jī)用戶提供良好的界面 因此 操作系統(tǒng)直接面對所有硬件 軟件和用戶 它是協(xié)調(diào)計(jì)算機(jī)各組成部分之間 人機(jī)之間關(guān)系的重要軟件系統(tǒng) Linux是在日益普及的Internet上迅速形成和不斷完善的操作系統(tǒng) Linux操作系統(tǒng)高效 穩(wěn)定 適應(yīng)多種硬件平臺 而最具有魅力的是它遵循GPL GNUGeneralPublicLicense GNU通用公共許可證 見附錄 整個系統(tǒng)的源代碼可以自由獲取 并且在GPL許可的范圍內(nèi)自由修改 傳播 這就為學(xué)習(xí) 應(yīng)用 開發(fā)操作系統(tǒng)及其他軟件提供了良好的基礎(chǔ)和較高的起點(diǎn) 本章首先介紹操作系統(tǒng)的概念 功能及其結(jié)構(gòu) 接著介紹Linux系統(tǒng)的基本特征 發(fā)展現(xiàn)狀 并以此為基礎(chǔ) 討論現(xiàn)代操作系統(tǒng)的一般特點(diǎn)和發(fā)展趨勢 1 1操作系統(tǒng)簡介1 1 1操作系統(tǒng)概念一種非形式的定義如下 操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)中的一個系統(tǒng)軟件 它是這樣一些程序模塊的集合 它們管理和控制計(jì)算機(jī)系統(tǒng)中的硬件和軟件資源 合理地組織計(jì)算機(jī)工作流程 以便有效地利用這些資源為用戶提供一個功能強(qiáng)大 使用方便和可擴(kuò)展的工作環(huán)境 從而在計(jì)算機(jī)與用戶之間起到接口作用 普通用戶使用操作系統(tǒng) 是把操作系統(tǒng)當(dāng)作一個資源管理者 通過系統(tǒng)提供的系統(tǒng)命令和界面操作等工具 以某種易于理解的方式完成系統(tǒng)管理功能 有效地控制各種硬件資源 組織自己的數(shù)據(jù) 完成自己的工作并和其他人共享資源 對于程序員來講 操作系統(tǒng)提供了一個與計(jì)算機(jī)硬件等價(jià)的擴(kuò)展或虛擬的計(jì)算平臺 操作系統(tǒng)提供給程序員的工具除了系統(tǒng)命令 界面操作之外 還有系統(tǒng)調(diào)用 系統(tǒng)調(diào)用抽象了許多硬件細(xì)節(jié) 程序可以以某種統(tǒng)一的方式進(jìn)行數(shù)據(jù)處理 程序員可以避開許多具體的硬件細(xì)節(jié) 提高程序開發(fā)效率 改善程序移植特性 整個計(jì)算機(jī)系統(tǒng)可以認(rèn)為是按照一定規(guī)則分層構(gòu)建的 我們可以使用圖1 1來示意性地描述這種層次結(jié)構(gòu) 圖1 1計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)示意圖 1 1 2操作系統(tǒng)發(fā)展簡介操作系統(tǒng)是隨著計(jì)算機(jī)硬件的發(fā)展 圍繞著如何提高計(jì)算機(jī)系統(tǒng)資源的利用率和改善用戶界面的友好性而形成 發(fā)展和不斷成熟完善的 隨著計(jì)算機(jī)硬件的發(fā)展 計(jì)算機(jī)的計(jì)算速度越來越快 其高速的數(shù)據(jù)處理與低速的手工操作之間的矛盾日益突出 傳統(tǒng)的手工操作是系統(tǒng)的最大制約因素 昂貴的計(jì)算機(jī)硬件資源得不到有效的利用 一個重要的技術(shù)是批處理 專門的操作人員把用戶提交的任務(wù)按照一定的類別 順序組織起來 形成作業(yè)序列 這些作業(yè)成批地在專門的監(jiān)督程序控制之下自動執(zhí)行 這里的監(jiān)督程序就是操作系統(tǒng)的雛形 最初的批處理系統(tǒng)中 計(jì)算機(jī)內(nèi)存中仍然只有一個程序在運(yùn)行 總體系統(tǒng)的效率仍然沒有發(fā)揮出來 解決這個問題的措施稱為多道技術(shù) 多道程序設(shè)計(jì)技術(shù)使得在內(nèi)存中有多個程序 保證系統(tǒng)的處理器總是處于工作狀態(tài) 極大地提高了系統(tǒng)的利用率 多道技術(shù)開始使用在批處理系統(tǒng)中 稱為多道批處理系統(tǒng) 這樣的系統(tǒng)效率高 但是 在脫機(jī)批處理情況下 高效帶來的問題是用戶對自己作業(yè)的控制程度降低 針對這個問題的方案是分時技術(shù) 分時系統(tǒng)把處理機(jī)的運(yùn)行時間分成時間片 按照時間片輪流把處理機(jī)分配給每一個聯(lián)機(jī)用戶 由于每一個時間片很短 宏觀上來看 所有用戶同時操作計(jì)算機(jī) 各自獨(dú)立控制自己的作業(yè) 與分時系統(tǒng)相對應(yīng) 還有一種實(shí)時 realtime 操作系統(tǒng) 控制計(jì)算機(jī)對外來信息進(jìn)行快速處理 要求系統(tǒng)在允許的時間范圍之內(nèi)做出響應(yīng) 同時具有多道批處理 分時 實(shí)時處理功能 或者其中兩種以上功能的系統(tǒng) 稱為通用操作系統(tǒng) Linux操作系統(tǒng)就是具有內(nèi)嵌網(wǎng)絡(luò)功能的多用戶分時系統(tǒng) 它兼有多道批處理和分時處理功能 是一個典型的通用處理系統(tǒng) 一方面強(qiáng)調(diào)分布式計(jì)算和處理 另一方面強(qiáng)調(diào)物理上跨越不同的主機(jī)系統(tǒng) 邏輯上緊密耦合構(gòu)成統(tǒng)一完整的操作系統(tǒng)平臺 這樣的系統(tǒng)就是分布式操作系統(tǒng) distributedoperatingsystem 這是當(dāng)前操作系統(tǒng)發(fā)展的一個方向 當(dāng)前 計(jì)算機(jī)微型化和專業(yè)化趨勢已成事實(shí) 這兩種發(fā)展趨勢都產(chǎn)生了一個共同的需求 即嵌入式軟件 嵌入式軟件也需要操作系統(tǒng)平臺的支持 這樣的操作系統(tǒng)就是嵌入式操作系統(tǒng) 嵌入式軟件系統(tǒng)的規(guī)模小 相應(yīng)地 其操作系統(tǒng)的規(guī)模也小 嵌入式軟件的應(yīng)用平臺之一是各種電器 這樣的系統(tǒng)面向普通家庭和個人用戶 由于快速發(fā)展的網(wǎng)絡(luò)市場 使得家用電器的市場比傳統(tǒng)的計(jì)算機(jī)市場大很多 因此 嵌入式軟件可能成為21世紀(jì)信息產(chǎn)業(yè)的支柱之一 嵌入式操作系統(tǒng)也必將成為軟件廠商爭奪的焦點(diǎn) 成為操作系統(tǒng)發(fā)展的另一個熱門方向 1 2操作系統(tǒng)接口操作系統(tǒng)在整個軟件系統(tǒng)中處于中心地位 負(fù)責(zé)控制 管理計(jì)算機(jī)的所有軟件 硬件資源 它屏蔽了很多具體的硬件細(xì)節(jié) 對計(jì)算機(jī)用戶提供統(tǒng)一 良好的界面 或稱為接口 interface 本節(jié)介紹操作系統(tǒng)的接口界面 下一節(jié)主要介紹操作系統(tǒng)的管理功能 在計(jì)算機(jī)層次結(jié)構(gòu)中 操作系統(tǒng)通過接口向上層用戶提供各種服務(wù) 而上層用戶通過操作系統(tǒng)接口來訪問硬件 操作系統(tǒng)提供的接口可以根據(jù)服務(wù)對象的不同而劃分為兩類 一是程序級的接口 提供給程序員使用 即系統(tǒng)調(diào)用 二是作業(yè)級的接口 提供給用戶使用 即操作命令 1 2 1程序員級接口系統(tǒng)調(diào)用是一組由操作系統(tǒng)提供的廣義指令 應(yīng)用程序通過系統(tǒng)調(diào)用來操縱系統(tǒng)內(nèi)核中特定的函數(shù) 當(dāng)應(yīng)用程序需要進(jìn)行文件訪問 網(wǎng)絡(luò)傳輸?shù)炔僮鲿r 必須通過系統(tǒng)調(diào)用來完成 程序員在設(shè)計(jì)應(yīng)用程序時 涉及到系統(tǒng)資源 都必須使用系統(tǒng)調(diào)用來實(shí)現(xiàn) 可以說 系統(tǒng)調(diào)用是操作系統(tǒng)提供給程序員的惟一接口 系統(tǒng)調(diào)用可以根據(jù)功能劃分為不同的類型 熟悉系統(tǒng)調(diào)用是一個優(yōu)秀程序員必備的條件 1 2 2用戶級接口操作系統(tǒng)提供給用戶使用的接口是操作命令 用戶可以使用這些操作命令來組織和控制作業(yè)的執(zhí)行或者管理整個計(jì)算機(jī)系統(tǒng) 實(shí)際上 計(jì)算機(jī)的操作命令界面是在系統(tǒng)調(diào)用的基礎(chǔ)上開發(fā)而成的 操作系統(tǒng)發(fā)展的主要方向除了提高系統(tǒng)資源利用率之外 就是改善用戶界面友好性 圖形用戶界面是操縱命令界面發(fā)展的一個里程碑 圖形用戶界面 降低了計(jì)算機(jī)操作的門檻 千萬個家庭成為計(jì)算機(jī)普及的對象 現(xiàn)在流行的操作系統(tǒng)一般都同時提供圖形和文本用戶界面 Linux系統(tǒng)就是如此 文本界面是shell接口 圖形界面是XWindow系統(tǒng) 1 3操作系統(tǒng)功能多用戶分時系統(tǒng) 按照其功能劃分為處理機(jī)管理 存儲管理 設(shè)備管理 信息管理 文件系統(tǒng)管理 對于現(xiàn)代流行的操作系統(tǒng) 還具有完整的網(wǎng)絡(luò)管理功能 這些管理功能都是由操作系統(tǒng)內(nèi)核實(shí)現(xiàn)的 1 3 1處理機(jī)管理作業(yè) 進(jìn)程需要適當(dāng)?shù)姆峙?調(diào)度 以便協(xié)調(diào)相互關(guān)系 共享有限的處理機(jī)資源 這是處理機(jī)管理的主要內(nèi)容 處理機(jī)管理是操作系統(tǒng)管理功能的關(guān)鍵 操作系統(tǒng)功能的一個主要指標(biāo)即是提高處理機(jī)的使用率 讓處理機(jī)盡可能處于工作狀態(tài) 1 3 2存儲管理存儲管理的目標(biāo)是讓有限的物理內(nèi)存盡可能滿足應(yīng)用程序?qū)?nèi)存的需求 存儲管理的內(nèi)容包括內(nèi)存的擴(kuò)充 分配 保護(hù)等 操作系統(tǒng)多采用了稱為 虛擬內(nèi)存 的內(nèi)存管理方式 內(nèi)存一般采用部分分配的辦法 通常 內(nèi)存中總是同時存放了多個正在運(yùn)行的程序?qū)嶓w 即進(jìn)程 在運(yùn)行的過程中 他們之間可能會使用到相同內(nèi)存位置的內(nèi)容 這種技術(shù)稱為內(nèi)存共享 這樣 可以提高內(nèi)存的利用率 但是 必須要確保各進(jìn)程所占據(jù)的內(nèi)存的獨(dú)立和完整性 1 3 3設(shè)備管理除了CPU和內(nèi)存之外 計(jì)算機(jī)的其他部件都統(tǒng)稱為外部設(shè)備 這些設(shè)備在操作系統(tǒng)的控制下協(xié)調(diào)工作 共同完成信息的輸入 存儲和輸出任務(wù) 操作系統(tǒng)要對所有的設(shè)備進(jìn)行管理 一方面 讓每一個設(shè)備盡可能發(fā)揮自己的特長 實(shí)現(xiàn)與CPU和內(nèi)存的數(shù)據(jù)交換 提高外部設(shè)備的利用率 另一方面 隱蔽設(shè)備操作的具體細(xì)節(jié) 對用戶提供一個統(tǒng)一 友好的設(shè)備使用界面 和處理機(jī)及內(nèi)存相比 外部設(shè)備的速度要慢得多 而且性能差別大 類型品種多 因此 設(shè)備管理是一項(xiàng)復(fù)雜而又重要的工作 1 3 4文件系統(tǒng)操作系統(tǒng)在控制 管理硬件的同時 也必須管理好軟件資源 操作系統(tǒng)的文件系統(tǒng)就是針對計(jì)算機(jī)的軟件資源而進(jìn)行的 文件系統(tǒng)主要提供以下服務(wù) 文件存取 使每個用戶能夠?qū)ψ约旱奈募M(jìn)行快速的訪問 修改和存儲 文件共享 指提供某種手段 使存儲空間只保存一個副本 而所有授權(quán)用戶能夠共同訪問這些文件 文件保護(hù) 指提供保護(hù)系統(tǒng)資源防止非法使用的手段 1 3 5網(wǎng)絡(luò)管理計(jì)算機(jī)的發(fā)展已經(jīng)進(jìn)入了互聯(lián)網(wǎng)時代 現(xiàn)在流行的操作系統(tǒng)一般都具有內(nèi)嵌的網(wǎng)絡(luò)功能 能夠在內(nèi)核級別控制 管理網(wǎng)絡(luò) 操作系統(tǒng)一般都提供網(wǎng)絡(luò)通信和網(wǎng)絡(luò)服務(wù)等基本功能 內(nèi)核中網(wǎng)絡(luò)部分 主要實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備控制和網(wǎng)絡(luò)協(xié)議 因此 網(wǎng)絡(luò)管理也就集中在通信這部分 1 4操作系統(tǒng)結(jié)構(gòu)本節(jié)簡單介紹操作系統(tǒng)的邏輯結(jié)構(gòu) 然后介紹操作系統(tǒng)發(fā)展過程中使用過的幾種主要的體系結(jié)構(gòu) 1 4 1操作系統(tǒng)的邏輯結(jié)構(gòu)計(jì)算機(jī)系統(tǒng)可以理解為是分層構(gòu)造的 從邏輯關(guān)系來理解 操作系統(tǒng)本身也可以用層次結(jié)構(gòu)來描述 可以認(rèn)為至少有4層 從上到下依次為 面對用戶的外部接口 硬件無關(guān)的內(nèi)核部分 與硬件相關(guān)的內(nèi)核部分 面對硬件的外部接口 可以簡單地用圖1 2來描述 這種層次結(jié)構(gòu)可以看作是操作系統(tǒng)縱向的結(jié)構(gòu) 圖1 2操作系統(tǒng)邏輯層次示意圖操作系統(tǒng)也可根據(jù)不同的管理功能劃分為功能模塊 一種簡單的理解是 操作系統(tǒng)本身劃分為功能模塊 而每個模塊分層構(gòu)造 形成一個縱橫交錯的結(jié)構(gòu) 1 4 2操作系統(tǒng)的體系結(jié)構(gòu)軟件的體系結(jié)構(gòu)描述系統(tǒng)各部分軟件以及它們相互之間的關(guān)系 是軟件內(nèi)部結(jié)構(gòu)配置的一種抽象描述 軟件體系結(jié)構(gòu)定義各部分軟件系統(tǒng)的應(yīng)用界面規(guī)范及相互操作和數(shù)據(jù)通信的協(xié)議和限制 體系結(jié)構(gòu)相對穩(wěn)定 滿足應(yīng)用需求 同時具有適當(dāng)?shù)目蛇m應(yīng)性和可擴(kuò)充性 1 模塊結(jié)構(gòu)模塊結(jié)構(gòu)是將操作系統(tǒng)內(nèi)核按照功能劃分為一個個單獨(dú)的模塊 模塊之間相對獨(dú)立 只能通過預(yù)先規(guī)定好的接口方式來調(diào)用 它們共享數(shù)據(jù) 模塊是系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的基本單位 每一個模塊實(shí)現(xiàn)一個完整單獨(dú)的功能 所有模塊之間相互調(diào)用 共同構(gòu)成一個完整的系統(tǒng)內(nèi)核 模塊結(jié)構(gòu)最大的優(yōu)點(diǎn)是效率高 模塊式結(jié)構(gòu)中 操作系統(tǒng)的邏輯層次關(guān)系具體由調(diào)用層次關(guān)系來體現(xiàn) 這種結(jié)構(gòu)的主要問題一是全局函數(shù)使用多 造成訪問控制困難 二是結(jié)構(gòu)不夠清晰 系統(tǒng)的可理解性 可維護(hù)性和可移植性都比較差 2 層次結(jié)構(gòu)層次結(jié)構(gòu)的方法把操作系統(tǒng)內(nèi)核按照一定的規(guī)則劃分為一系列相互依賴的層次 每個層次也可以分解為一系列更小的模塊 模塊負(fù)責(zé)完成一部分特定的功能 只能與相鄰的層次發(fā)生直接的聯(lián)系 所有這些層次的組合 就實(shí)現(xiàn)了整個系統(tǒng) 實(shí)際上 層次結(jié)構(gòu)可以理解為一種特殊的模塊式結(jié)構(gòu) 層次結(jié)構(gòu)可以大大方便系統(tǒng)的移植和擴(kuò)充 把系統(tǒng)內(nèi)核劃分為嚴(yán)格的層次結(jié)構(gòu) 為了滿足有序的層次調(diào)用關(guān)系 必然要犧牲部分靈活性和系統(tǒng)效率 3 對象結(jié)構(gòu)對象也可以理解為一種特殊的模塊 它是由一組數(shù)據(jù)集以及定義在其上的操作集封裝而成 對象結(jié)構(gòu)方法中 操作系統(tǒng)內(nèi)核按照內(nèi)核對象實(shí)體組織 每個內(nèi)核對象實(shí)體都有自己的數(shù)據(jù)和操作 對象之間通過消息傳遞來協(xié)調(diào)工作 對象模塊具有很強(qiáng)的獨(dú)立性 因此也具有很好的復(fù)用性能 對象模塊可以方便有效地控制內(nèi)部數(shù)據(jù)的訪問屬性 充分地隱藏信息 達(dá)到資源保護(hù)的目的 采用對象結(jié)構(gòu) 系統(tǒng)的開發(fā)難度降低 具有良好的擴(kuò)展性和移植性 同時有較好的安全功能 對象結(jié)構(gòu)操作系統(tǒng)內(nèi)核的一個嚴(yán)重問題是效率低 Linux內(nèi)核基本屬于模塊結(jié)構(gòu) 而MS DOS系統(tǒng)內(nèi)核采用的是層次結(jié)構(gòu) WindowsNT 2000及Solaris則是典型的對象結(jié)構(gòu) 操作系統(tǒng)內(nèi)核按照其運(yùn)行的情況可以分為 宏內(nèi)核與微內(nèi)核 前者也稱為單內(nèi)核 Linux系統(tǒng)屬于單內(nèi)核類型 對象結(jié)構(gòu)的系統(tǒng)內(nèi)核通常是微內(nèi)核 例如 WindowsNT 2000系統(tǒng)就是微內(nèi)核 1 5Linux操作系統(tǒng)介紹Linux系統(tǒng)有兩種不同的含義 從技術(shù)角度 Linux指的是由LinusTorvalds維護(hù)的開放源代碼UNIX類操作系統(tǒng)的內(nèi)核 然而 目前大多數(shù)人用它來表示以Linux內(nèi)核為基礎(chǔ)的整個操作系統(tǒng) 從這種意義講 Linux指的是開放源代碼的 包含內(nèi)核 系統(tǒng)工具 完整的開發(fā)環(huán)境和應(yīng)用的UNIX類操作系統(tǒng) 1 5 1Linux 自由操作系統(tǒng)Linux是一個UNIX操作系統(tǒng)的克隆 可以免費(fèi)使用 遵循GPL聲明 可以自由修改和傳播 Linux包含了人們希望操作系統(tǒng)擁有的所有功能特性 這些功能包括真正的多任務(wù) 虛擬內(nèi)存 世界上最快的TCP IP驅(qū)動程序 共享庫和多用戶支持 Linux現(xiàn)在是個人計(jì)算機(jī)和工作站上的UNIX類操作系統(tǒng) 它不僅繼承了UNIX的特征 而且在許多方面超過了UNIX 作為UNIX類操作系統(tǒng) 它具有下列基本特征 是真正的多用戶 多任務(wù)操作系統(tǒng) 是符合POSIX標(biāo)準(zhǔn)的系統(tǒng) 提供具有內(nèi)置安全措施的分層的文件系統(tǒng) 提供shell命令解釋程序和編程語言 提供強(qiáng)大的管理功能 包括遠(yuǎn)程管理功能 具有內(nèi)核的編程接口 具有圖形用戶接口 具有大量有用的實(shí)用程序和通信 聯(lián)網(wǎng)工具 具有面向屏幕的編緝軟件 大量的高級程序設(shè)計(jì)語言已移植到Linux系統(tǒng)上 因而它是理想的應(yīng)用軟件開發(fā)平臺 而且 在Linux系統(tǒng)下開發(fā)的應(yīng)用程序具有很好的可移植性 同時 Linux還有許多獨(dú)到之處 1 它的源代碼幾乎全部都是開放的 2 它可以運(yùn)行在許多硬件平臺上 3 它不僅可以運(yùn)行許多自由發(fā)布的應(yīng)用軟件 還可以運(yùn)行許多商品化的應(yīng)用軟件 4 強(qiáng)大的網(wǎng)絡(luò)功能 Linux系統(tǒng)的另一特征是它能充分發(fā)揮硬件的功能 因而它比其他操作系統(tǒng)的運(yùn)行效率更高 因此 Linux將有廣泛的應(yīng)用前景 1 5 2UNIX GNU與LinuxLinux是一種類UNIX系統(tǒng) 二者有相當(dāng)?shù)臏Y源 同時 Linux遵循GNU的GPL許可證 是自由軟件家族中的一員 因此 要了解Linux 就必須先了解他們?nèi)咧g的關(guān)系 1 Linux與UNIX系統(tǒng)Linux的源頭要追溯到最早的UNIX UNIX系統(tǒng)正式發(fā)表于1974年 到1975年的第6版中 引入了多道技術(shù) 1980年 Bell實(shí)驗(yàn)室公布了VAX11 780系統(tǒng)平臺的32位操作系統(tǒng)UNIX32V 一個可以運(yùn)行UNIX程序的系統(tǒng)就是UNIX 經(jīng)過多年發(fā)展 UNIX從實(shí)驗(yàn)室走出來并成為了操作系統(tǒng)的主流 直到今天 UNIX系統(tǒng)以其穩(wěn)定 高效的性能在服務(wù)器高端市場中依然占有絕對優(yōu)勢 很多公司也開發(fā)了用于PC的UNIX UNIX是一個簡單卻非常優(yōu)秀的操作系統(tǒng)模型 Linux系統(tǒng)最初以UNIX為原型 以實(shí)現(xiàn)POSIX標(biāo)準(zhǔn)作為其目標(biāo) 到2000年為止 Linux核心從0 01版發(fā)展為2 4版 Linux具有穩(wěn)定高效的處理性能 擁有穩(wěn)定龐大的用戶群體 得到眾多廠商有力的支持 成為操作系統(tǒng)發(fā)展的熱點(diǎn) Linux在低端服務(wù)器市場上已經(jīng)對WindowsNT 2000造成了極大的壓力 2 自由軟件運(yùn)動與LinuxLinux只是自由軟件家族中的一員 是其中最具影響的成員之一 在計(jì)算機(jī)工業(yè)發(fā)展的初期 軟件只是硬件的附屬品 但是 公司很快認(rèn)識到軟件的價(jià)值 對軟件實(shí)施了版權(quán)控制 并限制源代碼的發(fā)布 RichardStallman在其他人的協(xié)作下創(chuàng)作了通用公共許可證 GeneralPublicLicense GPL GPL保證任何人有共享和修改自由軟件的自由 任何人有權(quán)取得 修改和重新發(fā)布自由軟件的源代碼 并且規(guī)定在不增加附加費(fèi)用的條件下得到源代碼 3 Linux的歷史Linux可以說完全是一個互聯(lián)網(wǎng)時代的產(chǎn)物 它是在互聯(lián)網(wǎng)上產(chǎn)生 發(fā)展和不斷壯大起來的 Linus在自己的PC上 利用Tanenbaum教授自行設(shè)計(jì)的微型UNIX操作系統(tǒng)MINIX為開發(fā)平臺 開發(fā)了屬于他自己的第一個程序 Linus說剛開始的時候他根本沒有想到要編寫一個操作系統(tǒng)內(nèi)核 于是我又不得不寫一個磁盤驅(qū)動程序 然后是一個文件系統(tǒng) 而一旦當(dāng)你有了任務(wù)切換器 文件系統(tǒng)和設(shè)備驅(qū)動程序之后 你當(dāng)然就擁有了一個UNIX 或者至少是它的一個內(nèi)核 Linux就以這樣一種極其古怪但也極其自然的方式問世了 Linus并沒有在MINIX新聞組中公布它 他只是在赫爾辛基技術(shù)大學(xué)的一臺FTP服務(wù)器上發(fā)了一則消息 說用戶可以下載Linux的公開版本 到1992年1月止 全世界大約只有100個左右的人在使用Linux 1993年 Linus的第一個 產(chǎn)品 版Linux1 0問世的時候 是按完全自由發(fā)行版權(quán)進(jìn)行發(fā)行的 Linux與GPL的結(jié)合 使許多軟件開發(fā)人員相信這是一個有前途的項(xiàng)目 開始參與內(nèi)核的開發(fā)工作 并將GNU項(xiàng)目的C庫 gcc Emacs bash等很快移植到Linux內(nèi)核上來 商業(yè)軟件公司的加盟也使大多數(shù)Linux的普通用戶吃了定心丸 Linux從一開始就主要是在一些軟件行業(yè)中的高手之間流行的 并且很快就在全球范圍內(nèi)集結(jié)了一大批職業(yè)的和業(yè)余的技術(shù)專家 形成了一個數(shù)量龐大而且非常熱心的支持者群體 他們能夠通過網(wǎng)絡(luò)很快地響應(yīng)使用者所遇到的任何問題 1997年 Linux支持者群體在眾多的軟件公司中一舉勝出 榮獲了美國 InfoWorld 雜志的最佳技術(shù)支持獎 而這一獎項(xiàng)原本只是為商業(yè)公司而設(shè)立的 Linux核心的版本發(fā)展情況見表1 1 該表摘自參考文獻(xiàn) 2 表中最后一項(xiàng) 程序行數(shù) LinesofCode LOC 包含了Linux可應(yīng)用于如x86 PPC SPARC等所有平臺的程序代碼 表1 1Linux核心發(fā)展情況 截止1998年 當(dāng)Linux走向成熟時 一些人開始建立軟件包來簡化新用戶安裝和使用Linux的方法 這些軟件包稱為Linux發(fā)布或Linux發(fā)行版本 在早期眾多的Linux發(fā)行版本中 最有影響的要數(shù)Slackware發(fā)布 Linux文檔項(xiàng)目 LDP 是圍繞Slackware發(fā)布寫成的 目前 RedHat發(fā)行版本的安裝更容易 應(yīng)用軟件更多 已成為最流行的Linux發(fā)行版本 2000年秋天已經(jīng)發(fā)行了7 0版本 而Caldera則致力于Linux的商業(yè)應(yīng)用 它的發(fā)展速度也很快 中文化的Linux發(fā)行版本也有很多 國內(nèi)自主建立的如BluePointLinux FlagLinux XtermLinux以及美國的XLinux TurboLinux等 每種發(fā)行版本都有各自的優(yōu)點(diǎn)和弱點(diǎn) 但它們都提供相對完整的應(yīng)用軟件及幫助文檔 都使用相同的內(nèi)核和開發(fā)工具 大家都使用同一個名稱 Linux系統(tǒng) 1 6Linux的內(nèi)核特征Linux操作系統(tǒng)的核心穩(wěn)定而高效 以獨(dú)占的方式執(zhí)行最底層任務(wù) 保證其他程序的正常運(yùn)行 它是整個系統(tǒng)的核心 具有獨(dú)特的性質(zhì) 本節(jié)試圖從操作系統(tǒng)接口 功能及內(nèi)核結(jié)構(gòu)等幾個方面來展示Linux核心的特征 1 6 1接口特色按照POSIX標(biāo)準(zhǔn) 一個可以運(yùn)行UNIX程序的系統(tǒng)就是UNIX Linux系統(tǒng)提供和一般UNIX系統(tǒng)相同的標(biāo)準(zhǔn)界面 包括程序級的和用戶級的 因此也是一個UNIX系統(tǒng) 一般 大家稱之為類UNIX系統(tǒng) 以區(qū)別于其他傳統(tǒng)意義上的UNIX系統(tǒng) 在程序級 Linux系統(tǒng)提供標(biāo)準(zhǔn)的UNIX函數(shù)庫 一個在Linux下開發(fā)的應(yīng)用程序 可以幾乎不經(jīng)過任何改動就可以在其他UNIX系統(tǒng)下編譯執(zhí)行 完成同樣的功能 Linux系統(tǒng)對用戶同時提供圖形和文本用戶界面 文本界面是shell接口 圖形界面是XWindow系統(tǒng) UNIX下的基本命令 在Linux下功能和使用方式都完全相同 而最早在UNIX平臺開發(fā)的圖形用戶界面XWindow系統(tǒng) 在Linux系統(tǒng)下運(yùn)行良好并可以展示與其他版本UNIX系統(tǒng)下相同甚至更好的效果 更為可喜的是 在XWindow系統(tǒng)基礎(chǔ)上 自由軟件開發(fā)者們?yōu)長inux開發(fā)了不少種類的桌面系統(tǒng) 在這樣的環(huán)境下 用戶幾乎可以不再需要傳統(tǒng)的文本用戶界面 所有的操作都可以通過鼠標(biāo)點(diǎn)擊來完成 這樣的系統(tǒng)有方便快捷的KDE KDesktopEnvironment 基于CORBA組件技術(shù) 具有圖形功能的GNOME GNU sNetworkObjectModelEnvironment 等等 它們都遵循GPL 都處在高速發(fā)展階段 相信他們的功能會更加完善 桌面系統(tǒng)的發(fā)展 基于桌面系統(tǒng)的辦公 家用軟件的發(fā)展 將會使Linux操作系統(tǒng)的用戶界面更加友好 Linux系統(tǒng)針對辦公用戶及普通家庭的普及工作也將具有更明顯的競爭力和更美好的前景 1 6 2功能特色Linux核心最早運(yùn)行在Intel80386系列PC機(jī)上 現(xiàn)在 它也可以運(yùn)行在Apple系列 DECAlpha系列 MIPS和Motorola68000系列的計(jì)算機(jī)上 同時 一些改進(jìn)的嵌入式Linux核心還可以運(yùn)行于手機(jī) 家電等設(shè)備上 從Linux2 0開始 它不僅支持單處理器的機(jī)器 還能支持對稱多處理器 SMP 的機(jī)器 實(shí)現(xiàn)真正的多任務(wù)工作 Linux系統(tǒng)可以支持多種硬件設(shè)備 Linux系統(tǒng)下的驅(qū)動程序開發(fā)和Windows系統(tǒng)相比要簡單得多 最初的硬件設(shè)備驅(qū)動程序 都是由自由軟件開發(fā)者們提供的 隨著Linux系統(tǒng)的普及 越來越多的硬件 廠商也開始提供設(shè)備驅(qū)動 這對于廣大使用者無疑是又一個好消息 Linux采用多級分頁的存儲管理模式 具體的技術(shù)特征將在后面介紹 Linux自身使用的專用的文件系統(tǒng)為Ext2 可以提供方便有效的文件共享及保護(hù)機(jī)制 同時 它可以通過虛擬文件系統(tǒng)的技術(shù) 支持包括微軟系列操作系統(tǒng)所使用的Fat16 Fat32和NTFS等文件系統(tǒng)在內(nèi)的幾十種現(xiàn)有的文件系統(tǒng) Linux系統(tǒng)具有內(nèi)置的TCP IP協(xié)議棧 可以提供各種高效的網(wǎng)絡(luò)功能 包括基本的進(jìn)程間通訊 網(wǎng)絡(luò)文件服務(wù)等 1 6 3結(jié)構(gòu)特征Linux內(nèi)核基本采用模塊結(jié)構(gòu) 單內(nèi)核模式 這使得系統(tǒng)具有很高的運(yùn)行效率 但系統(tǒng)的可擴(kuò)展性及可移植性受到一定的影響 為了解決這個問題 Linux使用了附加模塊技術(shù) 利用模塊技術(shù) 可以方便地在內(nèi)核中添加新的組件或卸載不再需要的內(nèi)核組件 而且這種裝載和卸載可以動態(tài)進(jìn)行 內(nèi)核模塊的引入也帶來了對系統(tǒng)性能 內(nèi)存利用和系統(tǒng)穩(wěn)定性的一些影響 可動態(tài)裝卸的模塊需要系統(tǒng)增加額外的資源來記錄 管理 而裝入的內(nèi)核模塊和其他內(nèi)核部分一樣 具有相同的訪問權(quán)限 差的內(nèi)核模塊會導(dǎo)致系統(tǒng)不穩(wěn)定甚至崩潰 一些惡意的內(nèi)核模塊可能對系統(tǒng)安全造成極大的威脅 總的來講 Linux內(nèi)核基本采用模塊式結(jié)構(gòu)構(gòu)造 同時加入動態(tài)的模塊技術(shù) 在追求系統(tǒng)整體效率的同時 實(shí)現(xiàn)了內(nèi)核的動態(tài)可伸縮性 這樣的結(jié)構(gòu) 給系統(tǒng)移植帶來一定的負(fù)面影響 但是 在廣大自由軟件愛好者們不懈的努力下 Linux系統(tǒng)仍然不斷地推出支持新硬件平臺的版本 Linux可以運(yùn)行的硬件平臺超過任何一種商業(yè)系統(tǒng) 具有較好的平臺適應(yīng)性 1 7Linux的發(fā)展及展望1 7 1開發(fā)模式自由軟件的開發(fā)模式不同于以往任何一種軟件開發(fā)模式 軟件工程的發(fā)展 實(shí)現(xiàn)了軟件的工程化生產(chǎn) 在經(jīng)過詳細(xì)的需求分析之后 進(jìn)入設(shè)計(jì)階段 然后是實(shí)現(xiàn) 測試等等 整個過程有嚴(yán)格的工作流程 時間限制和質(zhì)量控制 程序員在整個生產(chǎn)過程中的作用 相當(dāng)于傳統(tǒng)工廠里流水線上的工人 只是按照 圖紙 完成某個零部件加工而已 這樣的開發(fā)模式強(qiáng)調(diào)的是統(tǒng)一規(guī)劃 集中管理 一大批分布于世界各地的軟件愛好者 以互聯(lián)網(wǎng)為紐帶 通過BBS 新聞組及電子郵件等現(xiàn)代通訊方式 同時參與一個軟件開發(fā)項(xiàng)目 一個初步工作的軟件雛形首先發(fā)布出來 然后大家同時開始工作 分別結(jié)合自己的實(shí)際經(jīng)驗(yàn)和需要 尋找軟件中的漏洞 提出改進(jìn)意見 發(fā)布在互聯(lián)網(wǎng)上 很快 另外的人也發(fā)現(xiàn)了漏洞 接著 有人又提出了改進(jìn)方案 給出了補(bǔ)丁 經(jīng)過這些人分頭修整 這個軟件好像滾雪球一樣 以很快的速度不斷完善 在這樣的開發(fā)模式中 程序員是獨(dú)立的實(shí)體 他們大多是用業(yè)余時間來為自由軟件服務(wù)的 沒有工作任務(wù)的壓力 他們創(chuàng)作性工作帶來的成就感是他們最大的動力 這樣的開發(fā)模式稱為 巴扎 Bazaar 模式 自由軟件的出現(xiàn) 改變了傳統(tǒng)的以公司為主體的封閉的軟件開發(fā)模式 采用了開放和協(xié)作的開發(fā)模式 無償提供源代碼 容許任何人取得 修改和重新發(fā)布自由軟件的源代碼 這種開發(fā)模式激發(fā)了世界各地的軟件開發(fā)人員的積極性和創(chuàng)造熱情 大量軟件開發(fā)人員投入到了自由軟件的開發(fā)中 軟件開發(fā)人員的集體智慧得到充分發(fā)揮 大大減少了不必要的重復(fù)勞動 并使自由軟件的漏洞能得到及時發(fā)現(xiàn)和克服 任何一家公司都不可能投入如此強(qiáng)大的人力去開發(fā)和檢驗(yàn)商品化軟件 這種開發(fā)模式使自由軟件具有強(qiáng)大的生命力 1 7 2內(nèi)核版本為了確??此茻o序的市集開發(fā)過程能夠有序地進(jìn)行 自由軟件一般都必須采取強(qiáng)有力的版本控制措施 Linux內(nèi)核采用的是雙樹系統(tǒng) 一棵樹是穩(wěn)定樹 主要用于發(fā)行 另一棵樹是非穩(wěn)定樹或者開發(fā)樹 用于產(chǎn)品開發(fā) 改進(jìn) 一些新特性 實(shí)驗(yàn)性改進(jìn)等首先在開發(fā)樹中進(jìn)行 如果在開發(fā)樹中所做的改進(jìn)也可以應(yīng)用于穩(wěn)定樹 那么在開發(fā)樹中經(jīng)過測試以后 就在穩(wěn)定樹中進(jìn)行相同的改進(jìn) 按照Linus的觀點(diǎn) 一旦開發(fā)樹經(jīng)過了足夠的發(fā)展 開發(fā)樹就會成為新的穩(wěn)定樹 如此周而復(fù)始地進(jìn)行下去 源代碼版本序號的形式為x y z 對于穩(wěn)定樹來說 y是偶數(shù) 對于開發(fā)樹來說 y是比相應(yīng)穩(wěn)定樹大一的奇數(shù) 截止到2000年10月 最新的穩(wěn)定內(nèi)核版本號是2 4 test9 這種開發(fā)會比常規(guī)慣例要快 因?yàn)槊恳话姹舅母淖儽纫郧案倭?內(nèi)核開發(fā)人員只需花很短的時間就能夠完成一個實(shí)驗(yàn)開發(fā)周期 當(dāng)今 Linus率領(lǐng)分布在世界各地的Linux內(nèi)核開發(fā)隊(duì)伍正在完善他們的作品 Linux內(nèi)核2 x版本充分顯示了Linux開發(fā)隊(duì)伍的非凡的創(chuàng)造力和市集開發(fā)模式的價(jià)值 Linux核心開發(fā)者的名單記錄在文件 usr src linux CREDITS中 事實(shí)上 UNIX開始發(fā)展時 也采用了類似的開發(fā)模式 這種開發(fā)模式使得UNIX的安全漏洞比其他操作系統(tǒng)解決得更徹底 從充分發(fā)揮開發(fā)人員的集體智慧這一點(diǎn)看 采用這種開發(fā)模式無疑是一大進(jìn)步 1 7 3國內(nèi)應(yīng)用狀況隨著Linux核心的不斷成熟 各種性能穩(wěn)定 安裝方便 支持多語種的發(fā)行版本被廣泛地使用 Linux得到廣大硬件 整機(jī)廠商和應(yīng)用程序廠商的大力支持 這一切 都使得Linux這個年輕的系統(tǒng)充滿了希望 由于多種原因 Linux在國內(nèi)的推廣比國外晚了幾年 近年來有更多的軟件愛好者開始了Linux的學(xué)習(xí) 應(yīng)用和研究開發(fā) 同時 許多大學(xué)還把它作為操作系統(tǒng)課程實(shí)驗(yàn)的內(nèi)容 這些都為Linux在中國的推廣使用奠定了基礎(chǔ) Linux的使用開始于國內(nèi)的高校和科研單位 最初大家在各地的電子公告牌上研論問題 隨著討論的深入 他們開始成立各種民間組織 建立自己的主服務(wù)器 愛好者們在這些地方 下載軟件 自由地討論Linux方面的問題 尋找志同道合者切磋 方便而高效地交流信息 這為Linux的進(jìn)一步推廣和本地化創(chuàng)造了良好的環(huán)境 目前國內(nèi)較有影響的推廣項(xiàng)目是1997年6月17日在國家經(jīng)濟(jì)信息中心網(wǎng)上建立的自由軟件協(xié)會站點(diǎn) 圖1 3 其網(wǎng)址是 總的來講 國內(nèi)Linux發(fā)展還處于一個比較低的層次 初級入門用戶很多 實(shí)際應(yīng)用用戶少 而從事自由軟件開發(fā)的人就更少了 1 7 4發(fā)展方向Linux內(nèi)核本身的發(fā)展方向主要是硬件支持 嵌入系統(tǒng)和分布式系統(tǒng)這三個方面 提供更多高性能的硬件驅(qū)動程序 讓更新 更好的硬件迅速在Linux系統(tǒng)下工作 是Linux普及和廣泛應(yīng)用的基礎(chǔ) 隨著以計(jì)算技術(shù) 通信技術(shù)為主體的信息技術(shù)的快速發(fā)展和Internet的廣泛應(yīng)用 嵌入式軟件成為軟件業(yè)的新熱點(diǎn) 面對如此巨大的電子產(chǎn)品市場和潛在用戶群 嵌入式軟件的應(yīng)用前景十分廣闊 而Linux系統(tǒng)本身的開放特性以及穩(wěn)定的性能 都比較適合作為開發(fā)嵌入系統(tǒng)的原型 國內(nèi)外都有這樣的研究項(xiàng)目 也有相當(dāng)成功的事例 分布系統(tǒng)是當(dāng)前操作系統(tǒng)發(fā)展的另一個重要領(lǐng)域 以Linux內(nèi)核為基礎(chǔ) 按照自由軟件開發(fā)模式 發(fā)展高性能的自由分布操作系統(tǒng) 是操作系統(tǒng)發(fā)展的必然趨勢 此外 Linux上的桌面系統(tǒng) 應(yīng)用軟件 尤其是軟件開發(fā)工具也是Linux發(fā)展的重要方面 桌面系統(tǒng)直接關(guān)系到Linux界面的友好性 易用性 應(yīng)用軟件關(guān)系到系統(tǒng)的可用性 而在自由軟件開發(fā)模式當(dāng)中引入軟件工程新技術(shù)和成功經(jīng)驗(yàn) 有助于快速開發(fā)Linux平臺上的應(yīng)用軟件 1 8小結(jié)本章首先介紹了操作系統(tǒng)的一般概念及發(fā)展歷史 接著介紹了操作系統(tǒng)的外部接口 管理功能及其內(nèi)部結(jié)構(gòu) 特別強(qiáng)調(diào)了計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)的概念 以此為基礎(chǔ) 詳細(xì)剖析了Linux系統(tǒng)的接口 功能和結(jié)構(gòu) 包括Linux的發(fā)展及其開發(fā)模式 操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的基本系統(tǒng)軟件 在整個計(jì)算機(jī)系統(tǒng)中處于核心地位 它是這樣一些程序模塊的集合 它們管理和控制計(jì)算機(jī)系統(tǒng)中的硬件和軟件資源 合理地組織計(jì)算機(jī)工作流程 以便有效地利用這些資源為用戶提供一個功能強(qiáng)大 使用方便和可擴(kuò)展的工作環(huán)境 從而在計(jì)算機(jī)與用戶之間起到接口作用 Linux是在日益普及的Internet上迅速形成和不斷完善的操作系統(tǒng) Linux操作系統(tǒng)高效 穩(wěn)定 適應(yīng)多種硬件平臺 支持多種文件系統(tǒng) 它遵循GPL協(xié)議 整個系統(tǒng)的源代碼可以自由獲取 并且在GPL許可的范圍內(nèi)自由修改 傳播 這就為學(xué)習(xí) 應(yīng)用 開發(fā)操作系統(tǒng)及其他軟件提供了良好的基礎(chǔ)和較高的起點(diǎn) 學(xué)習(xí)操作系統(tǒng)一般概念和原理 對于理解 使用和管理Linux系統(tǒng) 開發(fā)應(yīng)用軟件以及系統(tǒng)軟件 都具有相當(dāng)重要的意義 習(xí)題1 1操作系統(tǒng)的基本功能有哪些 1 2從技術(shù)的角度講 Linux是一個什么樣的操作系統(tǒng) 你認(rèn)為它有哪些不足 如何改進(jìn) 1 3閱讀通用許可證協(xié)議和參考文獻(xiàn) 1 2 深入了解自由軟件的 巴扎 開發(fā)模式 你愿意讓大家共享你的軟件嗎 為什么 你認(rèn)為 巴扎 模式有哪些優(yōu)點(diǎn) 哪些缺點(diǎn) 缺點(diǎn)如何改進(jìn) 1 4訪問Linux核心代碼站點(diǎn) 了解Linux核心發(fā)展的最新進(jìn)展及新增功能 1 5訪問Internet 了解一個國內(nèi)的自由軟件項(xiàng)目 向大家介紹這個項(xiàng)目的管理及進(jìn)展情況 給出你對該項(xiàng)目的評價(jià)及改進(jìn)意見 第2章處理機(jī)管理 2 1作業(yè)2 2進(jìn)程2 3線程2 4小結(jié)習(xí)題 提高處理機(jī) CPU 的使用率 使它盡可能處于工作狀態(tài) 是操作系統(tǒng)管理功能的主要目標(biāo)之一 在Linux系統(tǒng)中 提高處理機(jī)使用率的技術(shù)措施主要是多道和分時 處理機(jī)在進(jìn)程之間切換 按照一定的規(guī)則輪流執(zhí)行每個進(jìn)程 對于單個處理機(jī)的系統(tǒng) 這些進(jìn)程宏觀上看似并行執(zhí)行 而微觀上來看仍然是串行執(zhí)行的 這種執(zhí)行方式被稱為并發(fā)執(zhí)行 操作系統(tǒng)通過并發(fā)控制機(jī)制 對處理機(jī)進(jìn)行分配 調(diào)度 在保證每個進(jìn)程都得到公平合理執(zhí)行的同時 使系統(tǒng)中的各種資源得到充分的使用 本章主要圍繞處理機(jī)管理展開 著重介紹進(jìn)程的概念 同時也包括相關(guān)的兩個基本概念 作業(yè)和線程 2 1作業(yè)作業(yè)是用戶向計(jì)算機(jī)系統(tǒng)提交一項(xiàng)工作的基本單位 是用戶在一次事務(wù)處理或計(jì)算過程中要求計(jì)算機(jī)所做工作的總和 作業(yè)和程序是兩個相互聯(lián)系而又不同的概念 如果一次業(yè)務(wù)處理可以由某一個程序完成 就是說這個業(yè)務(wù)處理只要提交這一個程序就夠了 這種情況下 這個程序就是一個作業(yè) 通常 完成一次業(yè)務(wù)需要由多個程序協(xié)同完成 這時 多個程序 這些程序需要的數(shù)據(jù)以及必要的作業(yè)說明一起構(gòu)成一個作業(yè) 系統(tǒng)通過作業(yè)說明書或者作業(yè)控制語句 JCL 控制程序和相應(yīng)的數(shù)據(jù)執(zhí)行 完成整個業(yè)務(wù)處理 按照對作業(yè)的處理方式 可以分為聯(lián)機(jī) 批處理等作業(yè) Linux系統(tǒng)中的shell提供了操作系統(tǒng)和用戶之間的聯(lián)機(jī)命令接口 Linux的shell同時提供了程序級接口 用戶通過提交一個命令或一個命令序列以批處理方式執(zhí)行特定的操作 詳見本書第2部分 在Linux分時批處理系統(tǒng)中 也可以根據(jù)對作業(yè)執(zhí)行時的響應(yīng)特征分為前臺作業(yè)和后臺作業(yè) 在多用戶系統(tǒng)中 多個用戶 不同類型的作業(yè)可能同時請求執(zhí)行 控制和管理這些作業(yè) 協(xié)調(diào)它們之間的關(guān)系 就是作業(yè)調(diào)度 作業(yè)調(diào)度是處理機(jī)調(diào)度的一部分 2 2進(jìn)程計(jì)算機(jī)內(nèi)存中同時存放多個相互獨(dú)立的已經(jīng)開始運(yùn)行的程序?qū)嶓w 大家按照某種規(guī)則輪流使用處理器 這是現(xiàn)代多道操作系統(tǒng)實(shí)現(xiàn)資源共享 提高系統(tǒng)資源利用率的主要方式 描述這些程序?qū)嶓w的概念就是進(jìn)程 在多道情況下 每個進(jìn)程獨(dú)立地?fù)碛懈鞣N必要的資源 占有處理機(jī) 獨(dú)立地運(yùn)行 在多道系統(tǒng)中 同時存在多個進(jìn)程 所以當(dāng)某個進(jìn)程進(jìn)入等待狀態(tài)時 操作系統(tǒng)將把處理機(jī)控制權(quán)拿過來并交給其他可以運(yùn)行的進(jìn)程 進(jìn)程之間存在著相互制約 相互依賴的約束關(guān)系 一種最糟糕的情況是所有進(jìn)程都擁有部分資源 同時在等待其他進(jìn)程擁有的資源 這樣 大家都無法運(yùn)行 進(jìn)入一種永久等待的狀態(tài) 這種情況稱為死鎖 死鎖是對系統(tǒng)資源極大的浪費(fèi) 必須設(shè)法避免 本節(jié)著重討論現(xiàn)代多道操作系統(tǒng)中的核心概念 進(jìn)程 這是理解操作系統(tǒng)工作原理的基礎(chǔ)和關(guān)鍵 首先介紹單個進(jìn)程的狀態(tài) 狀態(tài)轉(zhuǎn)換的條件和控制原語 進(jìn)程在系統(tǒng)中的靜態(tài)描述等 接著介紹多個進(jìn)程之間的約束關(guān)系 由此引出進(jìn)程間通信的概念 通信是協(xié)調(diào) 解決進(jìn)程間約束關(guān)系的惟一手段 這種約束關(guān)系處理不當(dāng)造成的最嚴(yán)重的后果就是死鎖 2 2 1進(jìn)程的概念進(jìn)程 process 的概念最早出現(xiàn)在60年代中期 用于多道系統(tǒng) 在Linux系統(tǒng)中 進(jìn)程也稱為任務(wù) task 簡單地講 進(jìn)程就是正在運(yùn)行的程序 更為嚴(yán)謹(jǐn)?shù)谋磉_(dá)是 進(jìn)程是一個具有一定獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動 進(jìn)程的概念對于理解操作系統(tǒng)有決定性的意義 而真正理解進(jìn)程 必須了解它的基本性質(zhì) 進(jìn)程是操作系統(tǒng)分配資源和進(jìn)行調(diào)度的獨(dú)立單位 具有獨(dú)立性 同時 具有動態(tài)性 多道系統(tǒng)中同時存在多個進(jìn)程 這些進(jìn)程擁有各自的資源 各自獨(dú)立地執(zhí)行 對于單處理機(jī)系統(tǒng) 進(jìn)程宏觀上同時運(yùn)行而微觀上是依次執(zhí)行 這種情況稱為并發(fā)執(zhí)行 1 進(jìn)程和程序進(jìn)程和程序是一對相互聯(lián)系的概念 程序是指令的有序集合 是一個靜態(tài)的概念 描述完成某個功能的一個具體操作過程 而進(jìn)程是程序針對某一組數(shù)據(jù)的一次執(zhí)行過程 更強(qiáng)調(diào)動態(tài)特征 一個完整的進(jìn)程 包括程序 執(zhí)行程序所需要的數(shù)據(jù) 同時還必須包括記錄進(jìn)程狀態(tài)的數(shù)據(jù)資料 在多道分時操作系統(tǒng)中 按照時間片輪流在各個進(jìn)程間切換 對于單處理器系統(tǒng) 每一個時刻只能有一個進(jìn)程在執(zhí)行 當(dāng)分配給該進(jìn)程的時間片用完之后 不管該進(jìn)程運(yùn)行到什么程度 都必須立即停止 然后讓出處理器資源 下一個進(jìn)程進(jìn)入執(zhí)行狀態(tài) 讓出處理器的進(jìn)程必須記錄好正在運(yùn)行的狀態(tài) 包括寄存器 堆棧等各種信息 這些信息保證當(dāng)處理器下次切換到這個進(jìn)程的時候 進(jìn)程能夠正確地從上次執(zhí)行到的位置繼續(xù)往下執(zhí)行 一個程序在處理相同或不同的操作數(shù)據(jù)時可以同時對應(yīng)于多個進(jìn)程 一個進(jìn)程也可以包含多個程序 某個程序在運(yùn)行過程中 可能同時會調(diào)用到多個其他程序 這些具有調(diào)用關(guān)系的多個程序共同構(gòu)成一次完整的運(yùn)行活動 即一個完整的進(jìn)程 舉一個直觀的例子 我們在Linux系統(tǒng)下使用編輯器vi進(jìn)行編輯 同時打開多個窗口 編輯多個不同名稱的文件 vi編輯器是一個可執(zhí)行程序 不同的文件就是不同的操作數(shù)據(jù) 而對應(yīng)于這些文件同時打開的每一個編輯窗口就對應(yīng)著一個進(jìn)程 每一個進(jìn)程都處于不同的狀態(tài) 如果說程序是提供計(jì)算機(jī)操作的一組工作流程的話 進(jìn)程就是具體的工作過程 按照同樣的工作流程 針對不同的原料 可以同時開始多個工作過程 得到多種不同的成品 這種工作流程和工作過程的關(guān)系就可以類比為程序和進(jìn)程的關(guān)系 2 進(jìn)程和作業(yè)作業(yè)是用戶向計(jì)算機(jī)系統(tǒng)提交一項(xiàng)工作的基本單位 是用戶在一次事務(wù)處理或計(jì)算過程中要求計(jì)算機(jī)所做工作的總和 進(jìn)程是一個具有一定獨(dú)立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動 是操作系統(tǒng)分配資源和進(jìn)行調(diào)度的基本單位 作業(yè)是描述用戶向系統(tǒng)提交工作任務(wù)的實(shí)體單位 而進(jìn)程是系統(tǒng)完成工作任務(wù)時程序執(zhí)行的實(shí)體單位 從這個角度講 他們處于不同的層次 作業(yè)描述用戶和操作系統(tǒng)之間的任務(wù)委托關(guān)系 而進(jìn)程描述操作系統(tǒng)內(nèi)部任務(wù)的具體執(zhí)行過程 一個用戶的任務(wù) 即作業(yè) 由用戶提交給系統(tǒng) 必須以進(jìn)程的形式具體完成 對于批處理系統(tǒng) 通常 作業(yè)放在外存中專門的作業(yè)隊(duì)列中等待進(jìn)入內(nèi)存執(zhí)行 要經(jīng)過一次宏觀調(diào)度 由外存進(jìn)入內(nèi)存 以進(jìn)程的形式運(yùn)行 而對于UNIX Linux這樣的分時系統(tǒng) 沒有宏觀調(diào)度 作業(yè)不經(jīng)過調(diào)度 直接進(jìn)入內(nèi)存 以進(jìn)程的形式開始運(yùn)行 任何一個進(jìn)程 都存在于內(nèi)存中 并且是已經(jīng)開始運(yùn)行的動態(tài)實(shí)體 2 2 2進(jìn)程描述我們知道 進(jìn)程是一個動態(tài)的概念 描述程序的一次運(yùn)行活動 它存在于系統(tǒng)的內(nèi)存中 是操作系統(tǒng)可感知 可控制的動態(tài)實(shí)體 是系統(tǒng)分配各種資源 進(jìn)行調(diào)度的基本單位 1 進(jìn)程控制塊現(xiàn)在我們來討論進(jìn)程在內(nèi)存中的靜態(tài)存在方式 在多道系統(tǒng)中 處理機(jī)在多個進(jìn)程之間來回切換 每個進(jìn)程都會在暫停 運(yùn)行這兩種狀態(tài)之間來回轉(zhuǎn)換 當(dāng)一個進(jìn)程在處理機(jī)切換過來重新進(jìn)入運(yùn)行狀態(tài)時 它必須嚴(yán)格精確地接著上次運(yùn)行的位置繼續(xù)進(jìn)行 進(jìn)程的靜態(tài)描述可以保持切換現(xiàn)場 確保準(zhǔn)確銜接 保證進(jìn)程調(diào)度的實(shí)現(xiàn) 順利完成程序所規(guī)定任務(wù) 進(jìn)程切換現(xiàn)場稱為進(jìn)程上下文 context 包含了一個進(jìn)程所具有的全部信息 一般包括 進(jìn)程控制塊 ProcessControlBlock PCB 有關(guān)程序段和相應(yīng)的數(shù)據(jù)集 具體組成見圖2 1 程序段是某個進(jìn)程執(zhí)行的相關(guān)指令集合 和靜態(tài)的程序段有明確的對應(yīng)關(guān)系 相應(yīng)數(shù)據(jù)集是這個程序段正在操作的那部分?jǐn)?shù)據(jù) PCB是記錄進(jìn)程各種狀態(tài)的數(shù)據(jù)體 PCB是操作系統(tǒng)管理感知 控制進(jìn)程的數(shù)據(jù)實(shí)體 通過它 就可以找到進(jìn)程的程序段和數(shù)據(jù)集 系統(tǒng)正是通過PCB來控制進(jìn)程的 一般來講 PCB記錄著進(jìn)程的所有資料 是全部或部分常駐內(nèi)存的 PCB記錄著程序段和數(shù)據(jù)集的地址指針 通過這些指針 就可以得到具體的指令和數(shù)據(jù) PCB記錄了進(jìn)程的全部控制信息 一般較龐大而復(fù)雜 它可以按照功能大概分成四個組成部分 進(jìn)程描述信息 進(jìn)程控制信息 進(jìn)程相關(guān)的資源信息和CPU現(xiàn)場保護(hù)結(jié)構(gòu) 如圖2 1 圖2 1進(jìn)程描述數(shù)據(jù)關(guān)系示意圖 進(jìn)程上下文 2 Linux的PCBLinux系統(tǒng)的進(jìn)程控制塊PCB用一個稱為task struct的結(jié)構(gòu)體來描述 1 進(jìn)程描述信息通過進(jìn)程描述信息 Linux系統(tǒng)可以惟一地確定某一個進(jìn)程的基本情況 可以了解該進(jìn)程所屬的用戶及用戶組等信息 同時還能確定這個進(jìn)程與所有其他進(jìn)程之間的關(guān)系 這些描述信息包括 進(jìn)程號 用戶和組標(biāo)識以及描述進(jìn)程家族關(guān)系的連接信息 進(jìn)程號 pid processidentifier Linux系統(tǒng)為每一個進(jìn)程分配一個標(biāo)識號 通過這個標(biāo)識號識別 控制 調(diào)度這個進(jìn)程 別的進(jìn)程也通過這個標(biāo)識號來識別這個進(jìn)程并與之通信 用戶也可以使用操作命令或系統(tǒng)調(diào)用通過標(biāo)識號來控制該進(jìn)程 用戶和組標(biāo)識 userandgroupidentifier Linux系統(tǒng)中有四類不同的用戶和組標(biāo)識 主要用來控制進(jìn)程對系統(tǒng)文件的訪問權(quán)限 實(shí)現(xiàn)系統(tǒng)資源的安全訪問 Linux使用組將文件和目錄的訪問特權(quán)授予一組用戶 一個進(jìn)程可以同時屬于多個組 這些組都被放在進(jìn)程的task struct中的group數(shù)組中 連接信息 Links Linux系統(tǒng)中的進(jìn)程之間形成樹狀的家族關(guān)系 連接信息記錄某個進(jìn)程的父進(jìn)程 兄弟進(jìn)程 具有相同父進(jìn)程的進(jìn)程 以及子進(jìn)程的信息 描述一個進(jìn)程在整個家族系統(tǒng)中的具體位置 2 進(jìn)程控制信息進(jìn)程控制信息記錄了進(jìn)程的當(dāng)前狀態(tài) 調(diào)度信息 記時和時間信息以及進(jìn)程間通信信息 是系統(tǒng)確定進(jìn)程的狀態(tài) 了解進(jìn)程之間的關(guān)系 進(jìn)行進(jìn)程調(diào)度的主要依據(jù) 進(jìn)程當(dāng)前狀態(tài)進(jìn)程的生命周期中 總是不停地在各種狀態(tài)之間轉(zhuǎn)換 有關(guān)進(jìn)程的狀態(tài)及轉(zhuǎn)換規(guī)則 在下一小節(jié)討論 調(diào)度信息系統(tǒng)的調(diào)度程序利用這部分信息決定哪一個進(jìn)程應(yīng)該運(yùn)行 包括優(yōu)先級 實(shí)時優(yōu)先級 計(jì)數(shù)器和調(diào)度策略 記時信息包括時間和定時器 給出進(jìn)程占有和利用CPU的情況 是調(diào)度的依據(jù) 也是進(jìn)行統(tǒng)計(jì) 分析以及記費(fèi)的依據(jù) 通信信息多個進(jìn)程之間通信的各種信息也記錄在PCB中 Linux支持典型的UNIX進(jìn)程間通信機(jī)制 信號 管道 也支持System 通信機(jī)制 共享內(nèi)存 信號量和消息隊(duì)列 3 進(jìn)程資源信息Linux的PCB中包含大量的系統(tǒng)資源信息 這些信息記錄了與該進(jìn)程有關(guān)的存儲器的各種地址和資料 文件系統(tǒng)以及打開文件的信息等等 通過這些資料 進(jìn)程就可以得到運(yùn)行需要的相關(guān)程序段以及必要的數(shù)據(jù) 4 CPU現(xiàn)場信息進(jìn)程的靜態(tài)描述必須保證一個進(jìn)程在獲得處理機(jī)并重新進(jìn)入運(yùn)行狀態(tài)時 能夠精確地接著上次運(yùn)行的位置繼續(xù)進(jìn)行 相關(guān)程序段和數(shù)據(jù)集以及處理機(jī)現(xiàn)場 或處理機(jī)狀態(tài) 都必須保存 處理機(jī) CPU 現(xiàn)場信息一般包括處理機(jī)的內(nèi)部寄存器和堆棧等基本數(shù)據(jù) task struct是Linux系統(tǒng)的進(jìn)程控制塊 PCB 通過對PCB的操作 系統(tǒng)為進(jìn)程分配資源并進(jìn)行調(diào)度 最終完成進(jìn)程的創(chuàng)建和撤銷 系統(tǒng)利用PCB中的描述信息來標(biāo)識一個進(jìn)程 根據(jù)PCB中的調(diào)度信息決定該進(jìn)程是否應(yīng)該運(yùn)行 如果這個進(jìn)程要進(jìn)入運(yùn)行 首先根據(jù)其中的CPU現(xiàn)場信息來恢復(fù)運(yùn)行現(xiàn)場 然后根據(jù)資源信息獲取對應(yīng)的程序段和數(shù)據(jù)集 接著上次的位置開始執(zhí)行 同時通過PCB中的通信信息和其他進(jìn)程協(xié)同工作 2 2 3進(jìn)程狀態(tài)及轉(zhuǎn)換系統(tǒng)通過PCB對進(jìn)程進(jìn)行控制 進(jìn)程不斷地在不同的狀態(tài)之間轉(zhuǎn)換 1 進(jìn)程的基本狀態(tài)在分時系統(tǒng)中 一個進(jìn)程擁有了所需要的全部資源 就可以開始執(zhí)行 當(dāng)分配的時間片結(jié)束 讓出CPU資源 這種只要能夠占有CPU就能進(jìn)入執(zhí)行的狀態(tài)稱為就緒狀態(tài) 有時 多個進(jìn)程之間互相制約 某個進(jìn)程必須等到某個事件發(fā)生 才能夠競爭CPU資源 這是等待狀態(tài) 當(dāng)?shù)却氖录l(fā)生之后 這個進(jìn)程被喚醒 由等待狀態(tài)進(jìn)入就緒狀態(tài) 直到獲得CPU才開始執(zhí)行 等待狀態(tài) 就緒狀態(tài)和執(zhí)行狀態(tài)是一個進(jìn)程所具有的最基本的三種狀態(tài) 見圖2 2 圖2 2進(jìn)程基本狀態(tài)及轉(zhuǎn)換示意圖 2 Linux系統(tǒng)進(jìn)程狀態(tài)Linux系統(tǒng)的2 2 16版本進(jìn)程共有六種狀態(tài) 包括運(yùn)行狀態(tài) 可中斷等待狀態(tài) 不可中斷等待狀態(tài) 僵死狀態(tài) 暫停狀態(tài)和交換狀態(tài) 而在2 4 0版本中取消了交換狀態(tài) 加入獨(dú)占狀態(tài) 表2 1Linux系統(tǒng) 2 2 X 2 4 X版本 進(jìn)程狀態(tài)表 1 運(yùn)行狀態(tài) running Linux系統(tǒng)中的運(yùn)行狀態(tài)實(shí)際包含了上述基本狀態(tài)中的執(zhí)行和就緒兩種狀態(tài) 進(jìn)程到底是正在運(yùn)行還是處于就緒狀態(tài)準(zhǔn)備運(yùn)行 要靠當(dāng)前是否占有CPU資源來區(qū)分 2 等待狀態(tài)Linux系統(tǒng)把基本的等待狀態(tài)進(jìn)一步細(xì)化為可中斷的等待態(tài)和不可中斷的等待態(tài)兩種 處于這種狀態(tài)的進(jìn)程都在等待某個事件或某個資源 可中斷等待狀態(tài)的進(jìn)程可以被信號喚醒而進(jìn)入就緒狀態(tài)等待調(diào)度 而不可中斷等待狀態(tài)的進(jìn)程是因?yàn)橛布Y源無法滿足 不能被信號喚醒 必須等到所等待的資源得到之后由特定的方式喚醒 3 僵死狀態(tài) zombie 由于某些原因進(jìn)程被終止 這個進(jìn)程所擁有的內(nèi)存 文件等資源全部釋放之后 還保存著PCB信息 這種占有PCB但已經(jīng)無法運(yùn)行的進(jìn)程就處于僵死狀態(tài) 4 暫停狀態(tài)處于暫停狀態(tài)的進(jìn)程 一般都是由運(yùn)行狀態(tài)轉(zhuǎn)換而來 等待某種特殊處理 比如處于調(diào)試跟蹤的程序 每執(zhí)行到一個斷點(diǎn) 就轉(zhuǎn)入暫停狀態(tài) 等待新的輸入信號 5 交換狀態(tài)處于交換狀態(tài)的進(jìn)程正在執(zhí)行內(nèi)存 外存的交換工作 這個狀態(tài)在2 2 X版本的內(nèi)核中基本已經(jīng)不使用 在2 4 X版本中沒有這種狀態(tài) 6 獨(dú)占狀態(tài)它應(yīng)該是等待狀態(tài)的一種 處于獨(dú)占狀態(tài)的進(jìn)程位于等待隊(duì)列中 當(dāng)?shù)却氖录l(fā)生時 只有處于這種狀態(tài)的進(jìn)程被喚醒 其他處于可中斷和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《機(jī)械設(shè)計(jì)基礎(chǔ)》課件-第8章 鏈傳動
- 預(yù)防夏季疾病班會課件
- 陶瓷地磚銷售培訓(xùn)
- 培訓(xùn)小組匯報(bào)展示
- 音樂課件背景圖片
- 電網(wǎng)側(cè)獨(dú)立儲能示范項(xiàng)目風(fēng)險(xiǎn)管理方案(參考范文)
- 汽車配套產(chǎn)業(yè)基地項(xiàng)目資金申請報(bào)告
- 物流業(yè)貨物運(yùn)輸安全預(yù)案
- 2025年動物炭黑、動物膠及其衍生物合作協(xié)議書
- 2025年射頻同軸電纜組件項(xiàng)目合作計(jì)劃書
- 改進(jìn)維持性血液透析患者貧血狀況PDCA
- 公司崗位職級管理制度
- D500-D505 2016年合訂本防雷與接地圖集
- 漏肩風(fēng)(肩周炎)中醫(yī)臨床路徑及入院標(biāo)準(zhǔn)2020版
- 光面爆破知識講座課件
- 高鐵站裝飾裝修方案
- DB4401-T 112.1-2021 城市道路占道施工交通組織和安全措施設(shè)置+第1部分:交通安全設(shè)施設(shè)置-(高清現(xiàn)行)
- 質(zhì)量整改通知單(樣板)
- 杭州市高級中學(xué)2022年高一新生素質(zhì)測試(分班考)模擬試卷
- 《碳纖維片材加固混凝土結(jié)構(gòu)技術(shù)規(guī)程》(2022年版)
- 短視頻:策劃+拍攝+制作+運(yùn)營課件(完整版)
評論
0/150
提交評論