版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作系統(tǒng)實(shí)用教程第1章操作系統(tǒng)概述操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第1頁。第1章操作系統(tǒng)概述
1.1操作系統(tǒng)的定義
1.2操作系統(tǒng)的功能1.3操作系統(tǒng)的分類和發(fā)展1.4操作系統(tǒng)的實(shí)現(xiàn)操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第2頁。1.1操作系統(tǒng)的定義
1.1.1計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)圖1-1計(jì)算機(jī)系統(tǒng)的層次視圖操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第3頁。1.1操作系統(tǒng)的定義
近年來,大型軟件都是采用層次式結(jié)構(gòu)進(jìn)行構(gòu)建的,也就是將一個(gè)軟件分成若干個(gè)層次。在此,同樣可以用一個(gè)層次式的0S模型來描述操作系統(tǒng),該模型分為三個(gè)層次(如圖1-2所示),包括:用戶接口;對(duì)對(duì)象操縱和管理的軟件集合;操作系統(tǒng)對(duì)象。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第4頁。1.1操作系統(tǒng)的定義
用戶接口(命令接口、程序接口、圖形用戶接口)對(duì)對(duì)象操縱和管理的軟件集合(處理機(jī)管理軟件、存儲(chǔ)器管理軟件、設(shè)備管理軟件、文件管理軟件)操作系統(tǒng)對(duì)象(處理機(jī)、存儲(chǔ)器、設(shè)備、文件和作業(yè))圖1-20S層次模型操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第5頁。1.1操作系統(tǒng)的定義1.1.2操作系統(tǒng)的定義狹義操作系統(tǒng)包含程序:核心態(tài)運(yùn)行程序,用戶態(tài)運(yùn)行的命令解釋器和系統(tǒng)調(diào)用庫。廣義操作系統(tǒng)包含程序:除上述外,許多提供系統(tǒng)常用功能的實(shí)用程序,庫程序。因此,操作系統(tǒng)可以被定義為集如下三方面為一體的程序集合:(1)控制和管理計(jì)算機(jī)系統(tǒng)的硬件和軟件資源;(2)合理的組織計(jì)算機(jī)的工作流程;(3)方便用戶使用。管理目標(biāo):使硬件、軟件資源的利用率最高;服務(wù)宗旨:給用戶盡可能多的服務(wù)和最大的方便;服務(wù)項(xiàng)目:程序界面—由系統(tǒng)調(diào)用命令組成,給用戶編程提供方便;聯(lián)機(jī)用戶界面—由鍵盤命令、屏幕命令組成;脫機(jī)用戶界面—作業(yè)控制命令。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第6頁。1.1操作系統(tǒng)的定義1.1.3操作系統(tǒng)的發(fā)展1.人工操作階段2.早期的批處理3.多道程序系統(tǒng)4.分時(shí)操作系統(tǒng)5.實(shí)時(shí)操作系統(tǒng)6.通用操作系統(tǒng)操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第7頁。1.2操作系統(tǒng)的功能1.2.1操作系統(tǒng)在計(jì)算機(jī)系統(tǒng)中的地位及運(yùn)行環(huán)境1.操作系統(tǒng)在計(jì)算機(jī)系統(tǒng)中的地位(1)計(jì)算機(jī)系統(tǒng)管理中心(相當(dāng)于社會(huì)中的政府地位);(2)最復(fù)雜最精確的人工開發(fā)的管理系統(tǒng);(3)在計(jì)算機(jī)系統(tǒng)中不可缺少,如果缺少操作系統(tǒng),用戶不可能上機(jī)使用計(jì)算機(jī)資源。2.操作系統(tǒng)運(yùn)行環(huán)境操作系統(tǒng)是一個(gè)眾多程序模塊的集合。根據(jù)運(yùn)行環(huán)境,這些模塊大致分為3類:第1類是在系統(tǒng)初啟時(shí)便與用戶程序一起主動(dòng)參與并發(fā)運(yùn)行的,如作業(yè)管理程序、輸入輸出程序等。它們由時(shí)鐘中斷、外設(shè)中斷所驅(qū)動(dòng)。第2類是直接面對(duì)用戶態(tài)(亦稱常態(tài)、或目態(tài))程序的,這是一些“被動(dòng)”地為用戶服務(wù)的程序。這類程序的每一個(gè)模塊都與一條系統(tǒng)調(diào)用指令對(duì)應(yīng),僅當(dāng)用戶執(zhí)行系統(tǒng)調(diào)用指令時(shí),對(duì)應(yīng)的程序模塊才被調(diào)用、被執(zhí)行。系統(tǒng)調(diào)用指令的執(zhí)行是經(jīng)過陷入中斷機(jī)構(gòu)處理的。因此從這個(gè)意義上說,第2類程序也是由中斷驅(qū)動(dòng)的。第3類是那些既不主動(dòng)運(yùn)行也不直接面對(duì)用戶程序的、隱藏在操作系統(tǒng)內(nèi)部的、由前2類程序調(diào)用的模塊。既然前2類程序是由中斷驅(qū)動(dòng)的,那么第3類程序也是由中斷驅(qū)動(dòng)的。應(yīng)當(dāng)注意,操作系統(tǒng)本身的代碼運(yùn)行在核心態(tài)(亦稱管態(tài)、特態(tài))。從用戶態(tài)進(jìn)入核心態(tài)的惟一途徑是中斷。
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第8頁。1.2操作系統(tǒng)的功能1.2.2操作系統(tǒng)的特征操作系統(tǒng)具有五大特征,其中前兩項(xiàng)是操作系統(tǒng)的基本特征,不具備這兩項(xiàng)的管理程序不能被稱為操作系統(tǒng)。
1.并發(fā)性2.共享性
3.虛擬性4.異步性5.可重構(gòu)性操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第9頁。1.2操作系統(tǒng)的功能1.2.3操作系統(tǒng)的功能
從資源管理的角度看,操作系統(tǒng)主要功能分四大模塊,包括處理機(jī)管理,存儲(chǔ)器管理,設(shè)備管理,文件、作業(yè)管理、通信事務(wù)管理。此外,為了方便用戶使用操作系統(tǒng),還給用戶提供了一個(gè)友好的用戶接口。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第10頁。1.2操作系統(tǒng)的功能1.2.4操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)模式
1.模塊化結(jié)構(gòu)2.層次化結(jié)構(gòu)3.微內(nèi)核OS結(jié)構(gòu)4.客戶/服務(wù)器模式5.對(duì)象模式6.對(duì)稱多處理模式操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第11頁。1.2操作系統(tǒng)的功能1.2.5操作系統(tǒng)的設(shè)計(jì)規(guī)范1.系統(tǒng)效率系統(tǒng)效率是操作系統(tǒng)的一個(gè)重要性能指標(biāo)。它包括資源利用率(高)、吞吐量(大)、周轉(zhuǎn)時(shí)間(短)及響應(yīng)時(shí)間(少)等。2.系統(tǒng)可靠性系統(tǒng)可靠性是指系統(tǒng)發(fā)現(xiàn)、診斷和恢復(fù)硬件與軟件故障的能力。可以通過以下三個(gè)指標(biāo)說明。可靠性R(Reliability):通常用系統(tǒng)的平均無故障時(shí)間MTBF(MeanTimeFailures)來度量。指系統(tǒng)能正常工作的平均時(shí)間值。R越大,系統(tǒng)可靠性越高??删S護(hù)性S(Serviceability):通常用平均故障修復(fù)時(shí)間MTRF(MeanTimeRepairFault)來度量。指從故障發(fā)生到故障修復(fù)所需要的平均時(shí)間。S越小,系統(tǒng)可修復(fù)能力越強(qiáng),可維護(hù)性越高。可用性A(Availability):指系統(tǒng)運(yùn)行的整個(gè)時(shí)間內(nèi),能正常工作的概率。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第12頁。1.2操作系統(tǒng)的功能3.可移植性可移植性是指把一個(gè)操作系統(tǒng)從一種硬件環(huán)境移植到另一種硬件環(huán)境時(shí),系統(tǒng)仍能正常工作的能力。操作系統(tǒng)發(fā)生移植時(shí),代碼修改的量越小,系統(tǒng)效率越高。4.可伸縮性可伸縮性是指操作系統(tǒng)對(duì)添加軟、硬件資源的適應(yīng)能力,尤其是指可添加到硬件中的CPU資源的能力。亦即操作系統(tǒng)可運(yùn)行在不同種類的計(jì)算機(jī)上,例如從原來的單處理機(jī)擴(kuò)充到多處理機(jī)的系統(tǒng)上,操作系統(tǒng)仍能正常運(yùn)行。5.兼容性它主要指軟件的兼容性,是操作系統(tǒng)能夠執(zhí)行為其他版本操作系統(tǒng)或?yàn)閷偻幌盗械脑缙诎姹静僮飨到y(tǒng)所編寫的軟件的能力。6.安全性安全性是指操作系統(tǒng)應(yīng)具有一定的安全保護(hù)措施,包括保護(hù)和保密。諸如密碼設(shè)置、賬號(hào)檢查、系統(tǒng)接入檢測(cè)、各用戶資源分配和資源保護(hù)、用戶的資源不受他人侵犯等。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第13頁。1.3操作系統(tǒng)的分類和發(fā)展
1.3.1操作系統(tǒng)的分類1.批處理操作系統(tǒng)
批處理操作系統(tǒng)是一種早期的大型機(jī)用操作系統(tǒng)。批處理出現(xiàn)的目的在于提高系統(tǒng)資源的利用率和系統(tǒng)的吞吐量,現(xiàn)代操作系統(tǒng)大都具有批處理功能。(1)單道批量處理系統(tǒng)單道批處理系統(tǒng)是操作系統(tǒng)的雛形。優(yōu)點(diǎn)是:①自動(dòng)性。順利情況下,磁帶上的作業(yè)可一個(gè)接一個(gè)地運(yùn)行,無需人工干預(yù)。②順序性。按進(jìn)入磁帶的順序進(jìn)入主存。③單道性。主存中只有一個(gè)作業(yè)在運(yùn)行。缺點(diǎn)是:一次只能運(yùn)行一個(gè)作業(yè),這對(duì)于昂貴的計(jì)算機(jī)系統(tǒng)來說,資源的利用率就顯得有點(diǎn)低了。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第14頁。1.3操作系統(tǒng)的分類和發(fā)展(2)多道批處理系統(tǒng)多道批處理系統(tǒng),就是在外存中存在有大量作業(yè),并將這些作業(yè)按一定要求排成隊(duì)列,從這些隊(duì)列中,選出幾個(gè)作業(yè)進(jìn)入內(nèi)存多道運(yùn)行。當(dāng)有作業(yè)運(yùn)行完成退出系統(tǒng)時(shí),就自動(dòng)從作業(yè)隊(duì)列中選取若干作業(yè)進(jìn)入內(nèi)存,從而使作業(yè)批量運(yùn)行,而無需人工干預(yù)。在OS中引入多道程序設(shè)計(jì)技術(shù)可帶來以下好處:①提高CPU的利用率。②可提高內(nèi)存和I/O設(shè)備利用率。③增加系統(tǒng)吞吐量。多道批處理系統(tǒng)的特征:多道性、無序性、調(diào)度性。
多道批處理系統(tǒng)的優(yōu)缺點(diǎn):資源利用率高、系統(tǒng)吞吐量大、平均周轉(zhuǎn)時(shí)間長(zhǎng)、無交互能力。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第15頁。1.3操作系統(tǒng)的分類和發(fā)展2.分時(shí)操作系統(tǒng)
分時(shí)系統(tǒng)實(shí)現(xiàn)中的關(guān)鍵問題是及時(shí)接收、及時(shí)處理。一般采用時(shí)間片輪轉(zhuǎn)的方式,使一臺(tái)計(jì)算機(jī)為多個(gè)終端用戶服務(wù),能保證足夠快的響應(yīng)時(shí)間,并提供交互會(huì)話能力。因此它具有下述特點(diǎn):(1)交互性。(2)及時(shí)性。(3)多用戶同時(shí)性。(4)獨(dú)立性。分時(shí)系統(tǒng)技術(shù)為現(xiàn)代操作系統(tǒng)的設(shè)計(jì)奠定了基礎(chǔ),也為網(wǎng)絡(luò)時(shí)代的到來開辟了新路。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第16頁。1.3操作系統(tǒng)的分類和發(fā)展3.實(shí)時(shí)操作系統(tǒng)
實(shí)時(shí)系統(tǒng)是另外一類聯(lián)機(jī)的操作系統(tǒng)。它主要隨著計(jì)算機(jī)應(yīng)用于實(shí)時(shí)控制和實(shí)時(shí)信息處理領(lǐng)域中而發(fā)展起來的。所謂“實(shí)時(shí)”就是表示要“及時(shí)”,實(shí)時(shí)系統(tǒng)就是指系統(tǒng)能及時(shí)(或即時(shí))響應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行。
實(shí)時(shí)系統(tǒng)的主要特點(diǎn)是提供即時(shí)響應(yīng)和高可靠性,往往具有一定的專用性。實(shí)時(shí)系統(tǒng)在一般領(lǐng)域具有五個(gè)獨(dú)特的要求:決定性、響應(yīng)性、用戶控制、可靠性和弱失效操作。實(shí)時(shí)系統(tǒng)的特征為多路性、獨(dú)立性、及時(shí)性、交互性、高可靠性。實(shí)時(shí)系統(tǒng)與批處理系統(tǒng)、分時(shí)系統(tǒng)相比,資源的利用率可能較低。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第17頁。1.3操作系統(tǒng)的分類和發(fā)展實(shí)時(shí)系統(tǒng)與分時(shí)系統(tǒng)是有區(qū)別的,主要是:(1)分時(shí)系統(tǒng)提供一種隨時(shí)可供多個(gè)用戶使用的、通用性很強(qiáng)的計(jì)算機(jī)系統(tǒng)工程,用戶與系統(tǒng)之間具有較強(qiáng)的交互作用或會(huì)話能力;而實(shí)時(shí)系統(tǒng)的交互作用能力相對(duì)來說較差。一般地,實(shí)時(shí)系統(tǒng)是具有特殊用途的專用系統(tǒng),僅允許終端操作員訪問數(shù)量有限的專用程序,即命令較簡(jiǎn)單,操作員不能書寫程序或修改一組已存在的程序。(2)分時(shí)系統(tǒng)對(duì)響應(yīng)時(shí)間的要求是以人們能接受的等待時(shí)間為依據(jù)的,其數(shù)量級(jí)通常規(guī)定為秒;而實(shí)時(shí)系統(tǒng)對(duì)響應(yīng)時(shí)間一般有嚴(yán)格要求,它是以控制過程或信息處理過程所能接受的延遲來確定的,數(shù)量級(jí)可達(dá)毫秒,甚至微秒級(jí)。(3)雖然分時(shí)系統(tǒng)也要求系統(tǒng)可靠,但實(shí)時(shí)系統(tǒng)對(duì)可靠性的要求更高。因?yàn)閷?shí)時(shí)系統(tǒng)控制、管理的目標(biāo)往往是重要的經(jīng)濟(jì)、軍事、商業(yè)目標(biāo),而且需要現(xiàn)場(chǎng)立即進(jìn)行處理,任何差錯(cuò)都可能帶來巨大的經(jīng)濟(jì)損失,甚至引發(fā)災(zāi)難性的后果。因此,在實(shí)時(shí)系統(tǒng)中必須采取相應(yīng)的硬件和軟件措施來提高系統(tǒng)的可靠性,如硬件往往采取雙機(jī)工作方式,軟件加入多種安全保護(hù)措施等。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第18頁。1.3操作系統(tǒng)的分類和發(fā)展4.通用操作系統(tǒng)批處理系統(tǒng)、分時(shí)系統(tǒng)和實(shí)時(shí)系統(tǒng)是操作系統(tǒng)的三種基本類型,在此基礎(chǔ)上又發(fā)展了具有多種類型操作特征的操作系統(tǒng),稱為通用操作系統(tǒng)。它可以同時(shí)兼有批處理、分時(shí)、實(shí)時(shí)處理和多重處理的功能,或其中兩種以上的功能。5.個(gè)人計(jì)算機(jī)上的操作系統(tǒng)個(gè)人計(jì)算機(jī)上的操作系統(tǒng)是一聯(lián)機(jī)的交互式的單用戶操作系統(tǒng),它提供的聯(lián)機(jī)交互功能與通用分時(shí)系統(tǒng)所提供的十分相似。6.網(wǎng)絡(luò)操作系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)是通過通信設(shè)施將物理上分散的具有自治功能的多計(jì)算機(jī)系統(tǒng)互連起來,實(shí)現(xiàn)具有網(wǎng)絡(luò)通信、資源管理、網(wǎng)絡(luò)服務(wù)、網(wǎng)絡(luò)管理和相互操作能力功能的系統(tǒng)。計(jì)算機(jī)網(wǎng)絡(luò)按拓?fù)浣Y(jié)構(gòu)可以分為星形網(wǎng)絡(luò)、樹形網(wǎng)絡(luò)、總線型網(wǎng)絡(luò)、環(huán)形網(wǎng)絡(luò)以及網(wǎng)狀型網(wǎng)絡(luò)。計(jì)算機(jī)網(wǎng)絡(luò)按照地域范圍又可分為廣域網(wǎng)和局域網(wǎng)。配置在網(wǎng)絡(luò)上的操作系統(tǒng)就是網(wǎng)絡(luò)操作系統(tǒng)。網(wǎng)絡(luò)操作系統(tǒng)的研制開發(fā)是在原來各自計(jì)算機(jī)操作系統(tǒng)的基礎(chǔ)上進(jìn)行的。按照網(wǎng)絡(luò)體系結(jié)構(gòu)的各個(gè)協(xié)議標(biāo)準(zhǔn)進(jìn)行開發(fā),包括網(wǎng)絡(luò)管理、通信、資源共享、系統(tǒng)安全和多種網(wǎng)絡(luò)應(yīng)用服務(wù)等。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第19頁。1.3操作系統(tǒng)的分類和發(fā)展7.分布式操作系統(tǒng)
所謂分布式處理系統(tǒng),是指由多個(gè)分散的處理單元,經(jīng)互連網(wǎng)絡(luò)的連接而形成的系統(tǒng)。其中,每個(gè)處理單元既具有高度的自治性,又相互協(xié)同,能在系統(tǒng)范圍內(nèi)實(shí)現(xiàn)資源管理、動(dòng)態(tài)地分配任務(wù),并能并行地運(yùn)行分布式程序。分布式系統(tǒng)中的各項(xiàng)系統(tǒng)工作對(duì)用戶來說完全透明。分布式操作系統(tǒng)具有網(wǎng)絡(luò)操作系統(tǒng)的功能,是網(wǎng)絡(luò)操作系統(tǒng)的更高級(jí)形式,比網(wǎng)絡(luò)操作系統(tǒng)更有特色、更有優(yōu)點(diǎn)。其優(yōu)點(diǎn)在于它的分布式,這種分布式可以以較低成本獲得較高的運(yùn)算性能。而分布式的可靠性又是其他系統(tǒng)所望塵莫及的,在一個(gè)CPU出現(xiàn)故障時(shí),整個(gè)系統(tǒng)仍能正常工作,并不影響整個(gè)任務(wù)的運(yùn)行,只是速度略慢一些。這種高可靠性環(huán)境,特別適用于高新技術(shù)領(lǐng)域。現(xiàn)代操作系統(tǒng)將分布式系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)統(tǒng)稱為分布式操作系統(tǒng)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第20頁。1.3操作系統(tǒng)的分類和發(fā)展1.3.2操作系統(tǒng)的發(fā)展進(jìn)入20世紀(jì)80年代,大規(guī)模集成電路工藝技術(shù)的飛躍發(fā)展,微處理機(jī)的出現(xiàn)和發(fā)展,掀起了計(jì)算機(jī)大發(fā)展、大普及的浪潮。一方面迎來了個(gè)人操作系統(tǒng)的時(shí)代,另一方面又向計(jì)算機(jī)網(wǎng)絡(luò)、分布式處理、巨型計(jì)算機(jī)和智能化方向發(fā)展,操作系統(tǒng)有了進(jìn)一步發(fā)展。1.大型機(jī)操作系統(tǒng)2.服務(wù)器操作系統(tǒng)
3.多處理機(jī)操作系統(tǒng)4.個(gè)人計(jì)算機(jī)操作系統(tǒng)
5.實(shí)時(shí)操作系統(tǒng)6.嵌入式操作系統(tǒng)7.智能卡操作系統(tǒng)操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第21頁。1.3操作系統(tǒng)的分類和發(fā)展1.3.3操作系統(tǒng)的實(shí)例
隨著大規(guī)模和超大規(guī)模集成電路技術(shù)的發(fā)展,面向個(gè)人使用的微型計(jì)算機(jī)得到了極大的發(fā)展和普及,微機(jī)操作系統(tǒng)也得以發(fā)展。早期微機(jī)操作系統(tǒng)基本上是單用戶系統(tǒng)。所有資源采用獨(dú)占方式。微機(jī)操作系統(tǒng)通常提供較強(qiáng)的文件管理功能,通過命令解釋器支持用戶以交互方式使用計(jì)算機(jī),微機(jī)操作系統(tǒng)隨著微機(jī)復(fù)雜系統(tǒng)向多用戶多任務(wù)系統(tǒng)及多媒體方向發(fā)展,為計(jì)算機(jī)走向千家萬戶,遍及各行各業(yè)、深入各個(gè)領(lǐng)域打下了堅(jiān)實(shí)的基礎(chǔ)。
較典型的微機(jī)操作系統(tǒng)MS-DOS、Windows、UNIX、Linux的運(yùn)行環(huán)境可以通過實(shí)際的操作進(jìn)行了解和掌握。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第22頁。1.4操作系統(tǒng)的實(shí)現(xiàn)
1.4.1操作系統(tǒng)開發(fā)與升級(jí)1.交叉開發(fā)(1)建立交叉開發(fā)環(huán)境,主要包括五方面:①目標(biāo)機(jī):操作系統(tǒng)將運(yùn)行的機(jī)器;②工作機(jī):開發(fā)操作系統(tǒng)的機(jī)器;③交叉編譯:在工作機(jī)上將源代碼編譯成目標(biāo)機(jī)可運(yùn)行代碼;④模擬調(diào)試工具:在工作機(jī)上模擬執(zhí)行目標(biāo)機(jī)代碼;⑤內(nèi)核生成環(huán)境:工作機(jī)上編譯鏈接工具。(2)在交叉環(huán)境開發(fā)后到目標(biāo)機(jī)運(yùn)行。2.增量開發(fā)在已有操作系統(tǒng)上作內(nèi)核,驅(qū)動(dòng)程序更新和升級(jí)。增量開發(fā)體現(xiàn)在“更新”上,主要包括四方面:①編譯系統(tǒng)更新和升級(jí);②內(nèi)核調(diào)試器更新和升級(jí);③內(nèi)核生成環(huán)境更新和升級(jí);④打包工具(生成driver,boot盤,系統(tǒng)安裝盤)更新和升級(jí)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第23頁。1.4操作系統(tǒng)的實(shí)現(xiàn)1.4.2操作系統(tǒng)的安裝1.4.3系統(tǒng)啟動(dòng)與關(guān)機(jī)操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第24頁。范立南劉颯編著北京大學(xué)出版社操作系統(tǒng)實(shí)用教程第2章linux操作系統(tǒng)簡(jiǎn)介操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第25頁。第2章linux操作系統(tǒng)簡(jiǎn)介2.1Linux操作系統(tǒng)的概述2.2Linux操作系統(tǒng)的使用操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第26頁。2.1Linux操作系統(tǒng)的概述2.1.1Linux操作系統(tǒng)的歷史
Linux可以看做是Unix系統(tǒng)的一種。它具有最新Unix的全部功能包括真正的多任務(wù)、虛擬存儲(chǔ)、共享庫函數(shù)、即時(shí)負(fù)載、優(yōu)越的存儲(chǔ)管理和TCP/IP、UUCP網(wǎng)絡(luò)工具。
Linux系統(tǒng)及其發(fā)展均符合POSIX標(biāo)準(zhǔn)。其內(nèi)核支持Ethernet、PPP、SLIP、NFS、AX.25、IPX/SPX(Novell)、NCP(Novell)等網(wǎng)絡(luò)類型。系統(tǒng)應(yīng)用包括telnet、ftp、mail、gopher、talk、term、news等全套Unix工具包。此外還具有x圖形庫,以及xterm、fvwm、xxgdb、mosaic、xv、xman等全部X-Window應(yīng)用程序。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第27頁。2.1Linux操作系統(tǒng)的概述目前比較流行的幾個(gè)Linux版本有:SlackwareLinux:這是最早出現(xiàn)的Linux發(fā)行版本。它比較適合有經(jīng)驗(yàn)的Linux老手,對(duì)于那些想學(xué)習(xí)系統(tǒng)是怎么工作的并想安裝和編譯他們自己的軟件的人來說這是最好的。不過,現(xiàn)在使用這一版本的人越來越少了。不建議大家使用。RedHatLinux:這是最風(fēng)行的一種發(fā)行版本。其因?yàn)椴捎靡粋€(gè)頭帶紅帽子的人作為吉祥物而得名的。它一度成為L(zhǎng)inux的代名詞。它支持的硬件平臺(tái)多,具有優(yōu)秀的安裝界面、獨(dú)特的RPM升級(jí)方式、豐富的軟件包、并且安全性能好、系統(tǒng)管理界面便捷。DebianLinux:這是由自由軟件基金會(huì)發(fā)行的,是完全由網(wǎng)絡(luò)上的Linux愛好者負(fù)責(zé)維護(hù)的發(fā)行版本。軟件極豐富,升級(jí)容易,軟件間聯(lián)系強(qiáng),安全性較佳。不過該發(fā)行版本更新太頻繁,不易把握。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第28頁。2.1Linux操作系統(tǒng)的概述2.1.2Linux操作系統(tǒng)的特點(diǎn)
1.自由開放的源代碼2.真正的多用戶多任務(wù)系統(tǒng)3.良好的用戶界面4.強(qiáng)大的網(wǎng)絡(luò)功能5.可靠的系統(tǒng)安全6.良好的可移植性7.完整的開發(fā)平臺(tái)8.與UNIX兼容操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第29頁。2.1Linux操作系統(tǒng)的概述2.1.3Linux操作系統(tǒng)的設(shè)計(jì)原理
Linux的基本思想有兩點(diǎn):第一,一切都是文件;第二,每個(gè)軟件都有確定的用途,同時(shí)它們都盡可能被編寫得更好。其中第一條詳細(xì)的講就是系統(tǒng)中的所有都?xì)w結(jié)為一個(gè)文件,包括命令、硬件和軟件設(shè)備、操作系統(tǒng)、進(jìn)程等等對(duì)于操作系統(tǒng)內(nèi)核而言,都被視為擁有各自特性或類型的文件。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第30頁。2.1Linux操作系統(tǒng)的概述2.1.4Linux操作系統(tǒng)的內(nèi)核模塊Linux內(nèi)核能夠根據(jù)需要裝載或卸載任意內(nèi)核代碼段。這些可裝載的內(nèi)核模塊運(yùn)行于特權(quán)內(nèi)核模式,所以這些內(nèi)核模塊能夠完全訪問其所運(yùn)行的計(jì)算機(jī)的硬件。Linux環(huán)境下模塊支持體現(xiàn)在以下三個(gè)方面:①模塊管理(modulemanagement)允許該模塊被導(dǎo)入內(nèi)存并能與內(nèi)核的其他模塊進(jìn)行通信。②驅(qū)動(dòng)程序注冊(cè)(driverregistration)允許該模塊告訴其他模塊一個(gè)新的驅(qū)動(dòng)程序已經(jīng)可以使用。③沖突—解決機(jī)制(conflict-resolutionmechanism)允許不同的設(shè)備驅(qū)動(dòng)器保留硬件資源,并且保護(hù)那些被其他驅(qū)動(dòng)器突發(fā)使用的資源。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第31頁。2.2Linux操作系統(tǒng)的使用
2.2.1Linux系統(tǒng)引導(dǎo)系統(tǒng)的引導(dǎo)過程是指計(jì)算機(jī)啟動(dòng)時(shí),由系統(tǒng)BIOS以及操作系統(tǒng)引導(dǎo)程序?qū)⒉僮飨到y(tǒng)內(nèi)核可執(zhí)行代碼逐級(jí)裝入內(nèi)存并開始執(zhí)行,直到系統(tǒng)控制臺(tái)顯示“l(fā)ogin:”登錄提示符為止的系統(tǒng)引導(dǎo)階段。在這個(gè)執(zhí)行過程中需要進(jìn)行許多初始化操作以便為用戶提供各種服務(wù),如編輯文件、打印以及網(wǎng)名服務(wù)等。1.Linux引導(dǎo)程序的基本概念在RedHatLinux裝載系統(tǒng)前,它必須由一個(gè)引導(dǎo)裝載程序(BootLoader,啟動(dòng)管理程序)中的特定指令告訴它去引導(dǎo)系統(tǒng)。這個(gè)程序一般位于系統(tǒng)的主硬盤驅(qū)動(dòng)器或其他知道如何引導(dǎo)Linux內(nèi)核的媒介驅(qū)動(dòng)器上。Linux默認(rèn)選擇GRUB(GRandUnifiedBootloader)作為引導(dǎo)裝載程序。GRUB是一個(gè)多重啟動(dòng)管理器,它可以在多個(gè)操作系統(tǒng)共存時(shí)選擇引導(dǎo)哪個(gè)系統(tǒng)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第32頁。2.2Linux操作系統(tǒng)的使用2.引導(dǎo)程序菜單界面3.設(shè)置引導(dǎo)程序的密碼
本節(jié)主要講述如何使用以下兩種方法設(shè)置GRUB開啟系統(tǒng)的密碼:一是直接在GRUB配置文件中加密,但此時(shí)設(shè)置的密碼能在GRUB配置文件/etc/grub.conf中直接看到,因而安全性不夠;另一種方法就是通過md5進(jìn)行加密和校驗(yàn),這種辦法值得推薦,在安全方面能夠得到保證。(1)直接在GRUB配置文件中設(shè)置密碼(2)用md5加密校驗(yàn)GRUB密碼操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第33頁。2.2Linux操作系統(tǒng)的使用4.系統(tǒng)引導(dǎo)的過程下面以RedHat9.0和i386平臺(tái)為例,
當(dāng)用戶打開PC的電源,BIOS開機(jī)自檢,按BIOS中設(shè)置的啟動(dòng)設(shè)備(通常是硬盤)啟動(dòng),接著啟動(dòng)設(shè)備上安裝的引導(dǎo)程序lilo或grub開始引導(dǎo)Linux,Linux首先進(jìn)行內(nèi)核的引導(dǎo),接下來執(zhí)行init程序,init程序調(diào)用了rc.sysinit和rc等程序,rc.sysinit和rc當(dāng)完成系統(tǒng)初始化和運(yùn)行服務(wù)的任務(wù)后,返回init;init啟動(dòng)了mingetty后,打開了終端供用戶登錄系統(tǒng),用戶登錄成功后進(jìn)入了Shell,這樣就完成了從開機(jī)到登錄的整個(gè)啟動(dòng)過程。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第34頁。2.2Linux操作系統(tǒng)的使用2.2.2文件存取權(quán)限和所有權(quán)限每一個(gè)目錄和文件都有一個(gè)所有者、一個(gè)分組和一系列存取權(quán)限。存取權(quán)限本身又分為對(duì)應(yīng)的所有者、分組和全體用戶的幾個(gè)組成部分。文件的存取權(quán)限是使用長(zhǎng)格式化文件列表命令(ls-l)列文件清單時(shí)出現(xiàn)在最左邊的第一數(shù)據(jù)段。這個(gè)數(shù)據(jù)段又可以被分解為10個(gè)標(biāo)志位。1.類型標(biāo)志位存取權(quán)限數(shù)據(jù)段的第一位,或者第一個(gè)字母表示的是這個(gè)項(xiàng)目的類型,許多不同的項(xiàng)目會(huì)用到這個(gè)標(biāo)志位:-—表示該項(xiàng)目是一個(gè)普通文件;d—表示該項(xiàng)目是一個(gè)目錄;l—表示該項(xiàng)目是一個(gè)符號(hào)鏈接;s—表示該項(xiàng)目是一個(gè)可執(zhí)行文件,不論誰都可以像它的所有者那樣調(diào)用它運(yùn)行;c—表示該項(xiàng)目是一個(gè)字符設(shè)備驅(qū)動(dòng)程序;b—表示該項(xiàng)目是一個(gè)塊設(shè)備驅(qū)動(dòng)程序。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第35頁。2.2Linux操作系統(tǒng)的使用2.存取權(quán)限三位組存取權(quán)限的其余部分每三位一組,分為三組。類型位后面的第1個(gè)三位組定義了其所有者的存取權(quán)限。第2個(gè)三位組定義了其所在分組的存取權(quán)限;第3個(gè)三位組則說明了系統(tǒng)上任何人的存取權(quán)限。從上面的介紹可以看出,認(rèn)真設(shè)置這些標(biāo)志位是非常重要的。3.解讀三位組解讀各個(gè)三位組的方法是完全一樣的。每一個(gè)三位組是由3個(gè)不同的數(shù)據(jù)位組成的:①讀標(biāo)志位(r)②寫標(biāo)志位(w)③執(zhí)行標(biāo)志位(x)這些標(biāo)志位永遠(yuǎn)都按照同一個(gè)順序顯示為rwx的形式。區(qū)別某個(gè)標(biāo)志位是處于允許(on)還是禁止(off)的狀態(tài)就要看該標(biāo)志位是顯示為一個(gè)字母還是一個(gè)連字符(-)。舉例來說,在rw-存取權(quán)限數(shù)據(jù)段表示讀標(biāo)志位在允許狀態(tài)、寫標(biāo)志位在允許狀態(tài),但是執(zhí)行標(biāo)志位就是禁止?fàn)顟B(tài)。所以這個(gè)三位組就表示具有讀和寫的權(quán)限,但是沒有可執(zhí)行權(quán)限。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第36頁。2.2Linux操作系統(tǒng)的使用2.2.3常用命令
查詢命令說明的man命令、列出文件列表的ls命令、切換目錄的cd命令、建立目錄的mkdir命令、刪除目錄的rmdir命令、拷貝文件的cp命令、刪除文件或目錄的rm命令…操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第37頁。2.2Linux操作系統(tǒng)的使用2.2.4vi的用法
任何計(jì)算機(jī)用戶最常做的事之一就是創(chuàng)建和編輯文件,包括文檔、報(bào)告和文字等。在Linux/Unix操作系統(tǒng)中vi是一個(gè)有效的、相對(duì)簡(jiǎn)單的全屏幕編輯。使用vi,只要知道少量基本命令,然后,就能逐步擴(kuò)大應(yīng)用能力,去使用大量更復(fù)雜的命令。2.2.5實(shí)例——Linux運(yùn)行一個(gè)用戶程序操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第38頁。范立南劉颯編著北京大學(xué)出版社操作系統(tǒng)實(shí)用教程第3章進(jìn)程管理操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第39頁。第3章進(jìn)程管理
3.1并發(fā)控制3.2進(jìn)程的定義和特征3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.4線程模型3.5Linux的進(jìn)程管理操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第40頁。3.1并發(fā)控制3.1.1多道程序設(shè)計(jì)1.程序的順序執(zhí)行(1)順序性處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行。程序中一條指令的執(zhí)行結(jié)束是下一條指令開始執(zhí)行的充分必要條件。(2)封閉性程序是在封閉的環(huán)境下執(zhí)行的。即程序運(yùn)行時(shí)獨(dú)占全機(jī)資源,資源的狀態(tài)(除初始狀態(tài)外)只有本程序才能改變它,其執(zhí)行結(jié)果不受外界因素的影響。(3)可再現(xiàn)性只要程序執(zhí)行時(shí)的環(huán)境和初始條件相同的情況下,程序執(zhí)行的最終結(jié)果與執(zhí)行過程中向前推進(jìn)的速度無關(guān)。多次重復(fù)執(zhí)行該程序都將獲得相同的結(jié)果。
程序順序執(zhí)行的以上三個(gè)特點(diǎn),為程序員在單道環(huán)境下檢測(cè)和校正程序的錯(cuò)誤帶來了極大的方便。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第41頁。3.1并發(fā)控制I1C1P1I2C2P2圖3-1程序的順序執(zhí)行2.前趨圖前趨圖(PrecedenceGraph)是一個(gè)有向無循環(huán)圖,通常被記為DAG(DirectedAcyclicGraph)。它用于描述進(jìn)程之間執(zhí)行的前后關(guān)系,圖中的每一個(gè)結(jié)點(diǎn)可用于表示一個(gè)程序段或進(jìn)程,乃至是一條語句;圖中的每一條有向邊表示相鄰結(jié)點(diǎn)之間的前趨關(guān)系(PrecedenceRelation),也稱偏序(PartialOrder)關(guān)系,記為Si→Sj,即Sj僅在Si執(zhí)行完成后才能開始執(zhí)行,稱Sj是Si直接后繼,而稱Si是Sj的直接前趨。此外,圖中的每個(gè)結(jié)點(diǎn)還具有一個(gè)重量(Weight),用來表示該結(jié)點(diǎn)所含有的程序量或結(jié)點(diǎn)執(zhí)行所需的時(shí)間。示例程序順序執(zhí)行過程的圖3-1就是一個(gè)簡(jiǎn)單的前趨圖。注意,前趨圖中必須不存在循環(huán)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第42頁。3.1并發(fā)控制圖3-2示出了輸入、計(jì)算和打印這三個(gè)程序?qū)σ慌鳂I(yè)進(jìn)行處理的情況。圖3-2并發(fā)執(zhí)行時(shí)的前趨圖操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第43頁。3.1并發(fā)控制3.1.2程序的并發(fā)執(zhí)行對(duì)于具有下述四條語句的程序段:Sl:a:=x+2S2:b:=y+4S3:C:=a+bS4:d:=c+b可畫出圖3-3所示的前趨關(guān)系可以看出:
S3必須在a和b被賦值后方能執(zhí)行;S4必須在S3之后執(zhí)行;但S1和S2則可以并發(fā)執(zhí)行,因?yàn)樗鼈儽舜嘶ゲ灰蕾嚒?/p>
圖3-3四條語句的前趨關(guān)系操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第44頁。3.1并發(fā)控制根據(jù)前趨圖可以較為直觀的描述多道環(huán)境中的各個(gè)程序的相互次序,了解到哪些程序是可以并發(fā)執(zhí)行的。但是,由于多道環(huán)境下的并發(fā)程序共享了計(jì)算機(jī)系統(tǒng)內(nèi)的各種軟、硬件資源,所以使得并發(fā)程序的執(zhí)行產(chǎn)生了與程序的順序執(zhí)行不同的新特性。程序并發(fā)執(zhí)行的特點(diǎn)如下:1.失去程序的封閉性和可再現(xiàn)性2.并發(fā)程序之間具有相互制約關(guān)系3.程序與程序的執(zhí)行不再意一一對(duì)應(yīng)4.獨(dú)立性
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第45頁。3.2進(jìn)程的定義和特征3.2.1進(jìn)程的定義進(jìn)程是可并發(fā)執(zhí)行的程序在一個(gè)數(shù)據(jù)集合上的運(yùn)行過程,它是系統(tǒng)資源分配與調(diào)度的一個(gè)獨(dú)立單位。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第46頁。3.2進(jìn)程的定義和特征3.2.2進(jìn)程的特征進(jìn)程具有以下五大特征。1.動(dòng)態(tài)性2.并發(fā)性3.獨(dú)立性4.異步性5.結(jié)構(gòu)性操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第47頁。3.2進(jìn)程的定義和特征3.2.3進(jìn)程與程序的區(qū)別和聯(lián)系
進(jìn)程和程序是兩個(gè)既有聯(lián)系又有區(qū)別的概念。進(jìn)程與程序的區(qū)別和聯(lián)系可以簡(jiǎn)述如下:(1)進(jìn)程是程序的執(zhí)行過程,是一個(gè)動(dòng)態(tài)的概念;而程序是完成某特定功能的指令的有序集合,是一個(gè)靜態(tài)的概念。(2)進(jìn)程具有并發(fā)性、獨(dú)立性和異步性,而程序不具備這些特征。(3)進(jìn)程是具有結(jié)構(gòu)的。為了描述進(jìn)程的運(yùn)行變化過程,操作系統(tǒng)為每個(gè)進(jìn)程提供了一個(gè)特定數(shù)據(jù)結(jié)構(gòu)的表格:PCB表。進(jìn)程包括程序、數(shù)據(jù)和記錄進(jìn)程狀態(tài)信息的進(jìn)程控制塊PCB組成。(4)進(jìn)程和程序并非是一一對(duì)應(yīng)的。即一個(gè)程序可以對(duì)應(yīng)多個(gè)進(jìn)程,一個(gè)進(jìn)程也可以包含多個(gè)程序。多個(gè)進(jìn)程可以對(duì)應(yīng)同一個(gè)程序,但它們又是彼此分離的多個(gè)執(zhí)行序列。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第48頁。3.2進(jìn)程的定義和特征3.2.4進(jìn)程與作業(yè)的區(qū)別一個(gè)進(jìn)程是一個(gè)程序?qū)δ硞€(gè)數(shù)據(jù)集的執(zhí)行過程,是分配資源的基本單位。作業(yè)是用戶需要計(jì)算機(jī)完成某項(xiàng)任務(wù),而要求計(jì)算機(jī)所做工作的集合。一個(gè)作業(yè)的完成要經(jīng)過作業(yè)提交、作業(yè)收容(后備)、作業(yè)執(zhí)行和作業(yè)完成4個(gè)階段。而進(jìn)程是已提交完畢的程序所執(zhí)行過程的描述,是資源分配的基本單位。其主要區(qū)別如下:(1)作業(yè)是用戶向計(jì)算機(jī)提交任務(wù)的任務(wù)實(shí)體。在用戶向計(jì)算機(jī)提交作業(yè)之后,系統(tǒng)將它放入外存中的作業(yè)等待隊(duì)列中等待執(zhí)行。而進(jìn)程則是完成用戶任務(wù)的執(zhí)行實(shí)體,是向系統(tǒng)申請(qǐng)分配資源的基本單位。任一進(jìn)程,只要它被創(chuàng)建,總有相應(yīng)的部分存在于內(nèi)存中。(2)一個(gè)作業(yè)可由多個(gè)進(jìn)程組成。且必須至少由一個(gè)進(jìn)程組成,但反過來不成立。(3)作業(yè)的概念主要用在批處理系統(tǒng)中。分時(shí)系統(tǒng)中沒有作業(yè)的概念。進(jìn)程的概念幾乎用在所有的多道程序系統(tǒng)中。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第49頁。3.2進(jìn)程的定義和特征3.2.5操作系統(tǒng)與進(jìn)程的控制執(zhí)行1.內(nèi)核和微核
操作系統(tǒng)的內(nèi)核(kernel)是基于硬件的第1層軟件,它包含管理并發(fā)活動(dòng)的基本程序,而這些基本程序本身最好不是并發(fā)執(zhí)行的。目前商用操作系統(tǒng)內(nèi)核包括進(jìn)程控制、進(jìn)程調(diào)度、進(jìn)程間通信、進(jìn)程同步、中斷處理、設(shè)備驅(qū)動(dòng)模塊、時(shí)鐘管理等。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第50頁。3.2進(jìn)程的定義和特征對(duì)傳統(tǒng)的內(nèi)核模塊進(jìn)行分析后發(fā)現(xiàn)能剝離與硬件無關(guān)的代碼,使操作系統(tǒng)最基本的功能放在一個(gè)小核心中,其他功能盡量放到核外,通過調(diào)用小核心來實(shí)現(xiàn),這就是當(dāng)今流行的微核技術(shù)。這樣的小核心稱為微核(microkernel)或微內(nèi)核,它僅提供四類小型服務(wù):①進(jìn)程間通信(IPC,InterProcessCommunication);②底層輸入輸出;③有限調(diào)度和有限進(jìn)程控制;④最低級(jí)的存儲(chǔ)管理。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第51頁。3.2進(jìn)程的定義和特征微核的代碼量大體控制在10KB~100KB之間。微核是對(duì)傳統(tǒng)內(nèi)核涵義的回歸與進(jìn)一步提煉,它有四種優(yōu)點(diǎn):(1)簡(jiǎn)化了代碼的維護(hù)工作(2)系統(tǒng)崩潰的風(fēng)險(xiǎn)很?。?)方便于移植(4)靈活性操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第52頁。3.2進(jìn)程的定義和特征2.進(jìn)程控制原語內(nèi)核或微核提供核外調(diào)用的過程或函數(shù)稱為原語(primitive)。原語是一段用機(jī)器指令編寫的完成特定功能的程序,在執(zhí)行過程中不允許中斷,所以原語是常駐內(nèi)存的。原語和系統(tǒng)調(diào)用(systemcall)在調(diào)用的語法形式上相同,但系統(tǒng)調(diào)用在執(zhí)行期間允許中斷而原語不行。系統(tǒng)調(diào)用的實(shí)現(xiàn)過程可能使用了原語,但原語的實(shí)現(xiàn)絕不會(huì)使用系統(tǒng)調(diào)用。在進(jìn)程管理的過程中使用了各種功能的原語:·建立一個(gè)進(jìn)程的原語·撤消一個(gè)進(jìn)程的原語·掛起一個(gè)進(jìn)程的原語·解除掛起進(jìn)程的原語·改變優(yōu)先數(shù)的原語·阻塞一個(gè)進(jìn)程的原語·喚醒一個(gè)進(jìn)程的原語·調(diào)度進(jìn)程運(yùn)行的原語操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第53頁。3.2進(jìn)程的定義和特征3.操作系統(tǒng)得到控制與進(jìn)程間的開關(guān)4.操作系統(tǒng)的執(zhí)行方式(1)非進(jìn)程的內(nèi)核方式(2)在用戶進(jìn)程內(nèi)部執(zhí)行(3)操作系統(tǒng)進(jìn)程方式操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第54頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.3.1進(jìn)程控制塊PCB1.進(jìn)程控制塊的定義進(jìn)程控制塊PCB是系統(tǒng)為了描述和控制進(jìn)程的運(yùn)行而為進(jìn)程定義的一種數(shù)據(jù)結(jié)構(gòu)。它包含了有關(guān)進(jìn)程的描述信息、控制信息和資源信息,是進(jìn)程動(dòng)態(tài)特征的集中反映。一個(gè)進(jìn)程的進(jìn)程控制塊結(jié)構(gòu)是全部或部分常駐內(nèi)存的。為了便于管理,系統(tǒng)將所有的進(jìn)程控制塊形成一個(gè)結(jié)構(gòu)數(shù)組(稱為PCB表),放在操作系統(tǒng)常駐區(qū)內(nèi)。2.進(jìn)程控制塊的作用(1)PCB使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序,成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其他進(jìn)程并發(fā)執(zhí)行的進(jìn)程。這也是進(jìn)程的并發(fā)性和獨(dú)立性的含義。(2)標(biāo)識(shí)進(jìn)程的存在。操作系統(tǒng)是通過進(jìn)程的進(jìn)程控制塊感知相應(yīng)進(jìn)程的存在的,也可以說,進(jìn)程控制塊是進(jìn)程存在的惟一標(biāo)識(shí)。當(dāng)系統(tǒng)創(chuàng)建進(jìn)程時(shí),PCB被創(chuàng)建;當(dāng)系統(tǒng)撤消進(jìn)程時(shí),PCB被收回。(3)PCB提供了系統(tǒng)在控制和管理進(jìn)程時(shí)所需的一切信息。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第55頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.進(jìn)程控制塊中的內(nèi)容在進(jìn)程控制塊PCB中,主要包含有以下用以描述和管理控制進(jìn)程的信息以及相關(guān)的資源信息等。(1)進(jìn)程標(biāo)識(shí)符信息①內(nèi)部標(biāo)識(shí)符。②外部標(biāo)識(shí)符。(2)進(jìn)程調(diào)度信息①進(jìn)程狀態(tài)。②進(jìn)程優(yōu)先級(jí)。③進(jìn)程調(diào)度相關(guān)信息。(3)處理機(jī)狀態(tài)信息(4)進(jìn)程控制信息①程序和數(shù)據(jù)地址。②進(jìn)程同步和通信機(jī)制。③進(jìn)程資源清單。④進(jìn)程鏈接字。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第56頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.3.2進(jìn)程上下文進(jìn)程的靜態(tài)描述由進(jìn)程控制塊PCB、有關(guān)程序段和數(shù)據(jù)集組成。進(jìn)程上下文實(shí)際上是進(jìn)程執(zhí)行活動(dòng)全過程的靜態(tài)描述。具體地說,進(jìn)程上下文包括計(jì)算機(jī)系統(tǒng)中與執(zhí)行該進(jìn)程有關(guān)的各種寄存器(例如通用寄存器、程序計(jì)數(shù)器PC、程序狀態(tài)字寄存器PSW等)的值、程序段在經(jīng)過編譯之后形成的機(jī)器指令代碼集(或稱正文段)、數(shù)據(jù)集及各種堆棧值和PCB結(jié)構(gòu)(如圖3-6所示)。圖3-6進(jìn)程上下文結(jié)構(gòu)操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第57頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)
進(jìn)程上下文可按一定的執(zhí)行層次組合,例如用戶級(jí)上下文、系統(tǒng)級(jí)上下文等。顯然,一個(gè)進(jìn)程的執(zhí)行是在該進(jìn)程的上下文中執(zhí)行,而當(dāng)系統(tǒng)調(diào)度新進(jìn)程占有處理機(jī)時(shí),新老進(jìn)程的上下文發(fā)生轉(zhuǎn)換。在UNIX系統(tǒng)V中,進(jìn)程的上下文由3部分組成:用戶級(jí)上下文,系統(tǒng)級(jí)上下文,寄存器上下文。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第58頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.3.3進(jìn)程三態(tài)轉(zhuǎn)換分析1.就緒狀態(tài)(Ready)當(dāng)進(jìn)程已分配到了除CPU以外的所有必需資源,只要再獲得CPU便可立即執(zhí)行,此時(shí)的進(jìn)程狀態(tài)稱為就緒狀態(tài)。在一個(gè)多道程序系統(tǒng)中,可以有多個(gè)進(jìn)程處于就緒狀態(tài)。為了便于管理,一般把它們組織成一個(gè)隊(duì)列,稱為就緒隊(duì)列。2.執(zhí)行狀態(tài)(Running)正在CPU上運(yùn)行的進(jìn)程狀態(tài)稱為執(zhí)行狀態(tài)。顯然,在一個(gè)單處理機(jī)系統(tǒng)中,只能有一個(gè)進(jìn)程處于執(zhí)行狀態(tài);而在多處理機(jī)系統(tǒng)中,則可以有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。3.阻塞狀態(tài)(Blocked)阻塞狀態(tài)又稱為等待狀態(tài),當(dāng)一個(gè)正在CPU上執(zhí)行的進(jìn)程,因等待某事件發(fā)生而暫時(shí)無法執(zhí)行時(shí),便放棄CPU而處于阻塞狀態(tài)。處于阻塞狀態(tài)的進(jìn)程在邏輯上是不可運(yùn)行的,即使CPU空閑也不能占有CPU。如果進(jìn)程處于以上三種基本狀態(tài)之一,則進(jìn)程存在于內(nèi)存。
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第59頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)4.新狀態(tài)(New)該狀態(tài)是一個(gè)進(jìn)程剛剛被建立,但還未將其送入就緒隊(duì)列時(shí)的狀態(tài)。5.終止?fàn)顟B(tài)(Terminated)當(dāng)一個(gè)進(jìn)程以正?;虍惓7绞浇Y(jié)束運(yùn)行,操作系統(tǒng)就將它從就緒隊(duì)列中移出,但尚未撤消它的狀態(tài)。6.掛起狀態(tài)(Suspend)為了有效地利用內(nèi)存,滿足系統(tǒng)和用戶的需要,常常將進(jìn)程靜止下來。也就是說,若進(jìn)程處于執(zhí)行狀態(tài),則暫停執(zhí)行;若進(jìn)程處于就緒狀態(tài),則使其暫不接受調(diào)度。此時(shí)的靜止?fàn)顟B(tài)被稱之為掛起狀態(tài)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第60頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)圖3-7進(jìn)程基本狀態(tài)轉(zhuǎn)換圖圖3-8具有掛起狀態(tài)的進(jìn)程狀態(tài)圖操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第61頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)下面選擇一些典型的引起狀態(tài)轉(zhuǎn)換的事件。(1)就緒狀態(tài)-執(zhí)行狀態(tài)處于就緒狀態(tài)的進(jìn)程一旦被進(jìn)程調(diào)度程序選中后,便可獲得CPU并開始執(zhí)行。這個(gè)事件通常與CPU的調(diào)度策略有關(guān)。(2)執(zhí)行狀態(tài)-就緒狀態(tài)處于執(zhí)行狀態(tài)的進(jìn)程中,當(dāng)分給它的CPU時(shí)間片已用完時(shí),該進(jìn)程就不得不放棄轉(zhuǎn)去等待下一次時(shí)間片的到來。這個(gè)事件也通常與CPU的調(diào)度策略有關(guān)。(3)執(zhí)行狀態(tài)-阻塞狀態(tài)處于執(zhí)行狀態(tài)的進(jìn)程中,因等待某個(gè)事件的發(fā)生或申請(qǐng)某個(gè)資源而未能得到滿足時(shí),不得不放棄CPU而處于阻塞狀態(tài)。這個(gè)事件是由執(zhí)行狀態(tài)的進(jìn)程自己主動(dòng)改變的。(4)阻塞狀態(tài)-就緒狀態(tài)在其等待的事件已經(jīng)發(fā)生或申請(qǐng)的資源可以分配時(shí),又具備執(zhí)行條件,此時(shí)進(jìn)程轉(zhuǎn)為就緒狀態(tài)。這個(gè)事件是由外部事件引起的。事實(shí)上,進(jìn)程狀態(tài)的轉(zhuǎn)換是一個(gè)極其復(fù)雜的過程。一個(gè)進(jìn)程在某一時(shí)刻只能處于某一狀態(tài),進(jìn)程間狀態(tài)轉(zhuǎn)換并非均是可逆的,主動(dòng)的。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第62頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.3.4進(jìn)程的組織進(jìn)程隊(duì)列,指的是把具有相同狀態(tài)的PCB,按照某種原則鏈接在一起組成的隊(duì)列。目前常用的組織方式通常有鏈接方式和索引方式兩種。3.3.5內(nèi)核創(chuàng)建進(jìn)程1.進(jìn)程創(chuàng)建原語(CreatePrimitive)PCB是感知進(jìn)程存在的惟一標(biāo)識(shí),創(chuàng)建一個(gè)進(jìn)程的主要任務(wù)就是為其建立一個(gè)PCB。一個(gè)進(jìn)程在執(zhí)行過程中,使用創(chuàng)建原語(Create-Process)或系統(tǒng)調(diào)用來創(chuàng)建多個(gè)新進(jìn)程。創(chuàng)建進(jìn)程稱為父進(jìn)程,而新進(jìn)程稱為子進(jìn)程。
在一個(gè)父進(jìn)程創(chuàng)建子進(jìn)程時(shí),子進(jìn)程可以從操作系統(tǒng)那里直接獲得必需的資源,也可以只從父進(jìn)程資源子集那里獲得資源。當(dāng)父進(jìn)程在其子進(jìn)程之間分配資源或共享資源時(shí),需要對(duì)它們加以限制以保證系統(tǒng)的正常運(yùn)行。進(jìn)程在創(chuàng)建時(shí)除了獲取必需的各種硬件和軟件資源以外,還能夠從父進(jìn)程那里獲得所需的初始化數(shù)據(jù)(即輸入數(shù)據(jù))。此外,新進(jìn)程的地址空間通常有兩種可能:子進(jìn)程的地址空間是父進(jìn)程的地址空間的復(fù)制;或者子進(jìn)程的地址空間為另一個(gè)新的程序的地址空間。
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第63頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)在操作系統(tǒng)中,引起創(chuàng)建進(jìn)程的事件有以下兩種:(1)當(dāng)操作系統(tǒng)為了滿足某用戶的服務(wù)要求,或進(jìn)程調(diào)度程序調(diào)度到某個(gè)作業(yè)并將其裝入內(nèi)存運(yùn)行時(shí),由系統(tǒng)專門創(chuàng)建一個(gè)進(jìn)程。(2)基于應(yīng)用進(jìn)程(或父進(jìn)程)的需要,由它自己創(chuàng)建一個(gè)新的進(jìn)程。
無論是由操作系統(tǒng)創(chuàng)建一個(gè)進(jìn)程,還是由其他進(jìn)程來創(chuàng)建一個(gè)新的進(jìn)程,其基本操作是一樣的。進(jìn)程創(chuàng)建原語的主要操作過程為:(1)向系統(tǒng)申請(qǐng)一個(gè)空閑的PCB,為新進(jìn)程獲得其內(nèi)部標(biāo)識(shí)符i。(2)為新進(jìn)程分配所需的內(nèi)存空間等資源。(3)根據(jù)調(diào)用者提供的參數(shù),初始化PCB的內(nèi)容(如進(jìn)程內(nèi)部標(biāo)識(shí)符、進(jìn)程的初始狀態(tài)、優(yōu)先級(jí)、內(nèi)存存放的起始地址和所需資源清單等)。(4)若就緒隊(duì)列能夠容納新進(jìn)程,使將新進(jìn)程插入到就緒隊(duì)列。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第64頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)2.進(jìn)程撤消原語(TerminatePrimitive)所謂撤消,是指撤消進(jìn)程存在的標(biāo)志——PCB。此時(shí),進(jìn)程返回?cái)?shù)據(jù)(輸出)給其父進(jìn)程,所占有的全部資源,包括物理內(nèi)存和虛擬內(nèi)存、訪問的文件和I/0緩沖區(qū)等等的各類資源,都會(huì)被操作系統(tǒng)所釋放。引起進(jìn)程被撤消的事件主要有以下幾種:(1)該進(jìn)程已執(zhí)行完所有任務(wù)而正常終止;(2)由于出現(xiàn)某種錯(cuò)誤和故障而導(dǎo)致異常終止,比如程序越界、算術(shù)運(yùn)算、運(yùn)行超時(shí)或I/0故障等;(3)進(jìn)程應(yīng)外界的請(qǐng)求(如父進(jìn)程請(qǐng)求或終止)而被迫終止。一個(gè)進(jìn)程可以通過適當(dāng)?shù)南到y(tǒng)調(diào)用(如abort)來終止另一個(gè)進(jìn)程。但通常情況下,只有被終止進(jìn)程的父進(jìn)程才有權(quán)利執(zhí)行這一系統(tǒng)調(diào)用。否則,用戶都可能會(huì)任意地終止自己或他人的作業(yè)。因此,父進(jìn)程需要知道其所有子進(jìn)程的標(biāo)識(shí)符,每有一個(gè)新的進(jìn)程被創(chuàng)建,它的標(biāo)識(shí)符就要傳遞給父進(jìn)程。父進(jìn)程撤銷其子進(jìn)程的原因有很多,如子進(jìn)程使用了超過它所分配到的一些資源;分配給子進(jìn)程的任務(wù)已不再需要;父進(jìn)程撤銷等等。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第65頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)進(jìn)程撤消原語的主要操作過程如下:(1)根據(jù)被撤消進(jìn)程的標(biāo)識(shí)符去檢索PCB集合,獲得該進(jìn)程的狀態(tài)。(2)若被撤消進(jìn)程為正處于執(zhí)行狀態(tài),則應(yīng)立即中止該進(jìn)程的執(zhí)行,并置調(diào)度標(biāo)志為真,用于表明該進(jìn)程被終止后應(yīng)重新進(jìn)行調(diào)度,選擇新的進(jìn)程并分配處理機(jī)給它。(3)釋放該進(jìn)程所擁有的全部資源,歸還給其父進(jìn)程或系統(tǒng)。(4)把該進(jìn)程的PCB從所在隊(duì)列或鏈表中移出,然后轉(zhuǎn)進(jìn)程調(diào)度程序。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第66頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)3.進(jìn)程阻塞原語(BlockPrimitive)處于運(yùn)行狀態(tài)的進(jìn)程,在其運(yùn)行過程中期待某個(gè)事件發(fā)生:如等待鍵盤輸入,等待磁盤的數(shù)據(jù)傳輸完成,或等待其他進(jìn)程發(fā)送一個(gè)信息等。當(dāng)被等待的事件還沒有發(fā)生時(shí),進(jìn)程執(zhí)行阻塞原語,由運(yùn)行態(tài)變?yōu)樽枞麘B(tài)。4.進(jìn)程喚醒原語(WakcupPrimitive)當(dāng)某進(jìn)程期待的事件到來時(shí),根據(jù)等待事件的不同,可分以下兩種情況進(jìn)行討論。①當(dāng)進(jìn)程期待的事件是等待輸入/輸出完成時(shí),在輸入/輸出完成后,由硬件設(shè)備提出中斷請(qǐng)求,CPU響應(yīng)中斷,暫停當(dāng)前進(jìn)程的執(zhí)行,轉(zhuǎn)去進(jìn)行中斷處理。在中斷處理中,檢查有無等待該輸入/輸出完成的進(jìn)程。若有,則將該進(jìn)程從等待隊(duì)列抽出,將其由阻塞態(tài)置為就緒態(tài),插入就緒隊(duì)列。然后結(jié)束中斷處理,或者返回被中斷進(jìn)程繼續(xù)執(zhí)行,或者轉(zhuǎn)進(jìn)程調(diào)度,重選一個(gè)進(jìn)程投入運(yùn)行。②若期待的事件是等待某進(jìn)程發(fā)送一個(gè)信息,當(dāng)信息發(fā)送給該等待進(jìn)程時(shí),由發(fā)送進(jìn)程把該等待進(jìn)程喚醒,且將其由阻塞態(tài)置為就緒態(tài),插入就緒隊(duì)列即可。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第67頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)5.進(jìn)程掛起原語(SuspendPrimitive)在實(shí)時(shí)系統(tǒng)中,根據(jù)實(shí)時(shí)現(xiàn)場(chǎng)的需要,通常引入掛起原語和解掛(激活)原語,以便將正執(zhí)行的或沒有執(zhí)行的進(jìn)程掛起一段時(shí)間。此時(shí)被掛起的進(jìn)程由活動(dòng)狀態(tài)變?yōu)殪o止?fàn)顟B(tài)。當(dāng)執(zhí)行的條件成熟時(shí)再將它解掛而變?yōu)榛顒?dòng)狀態(tài)。只有處于活動(dòng)狀態(tài)的進(jìn)程才有可能被進(jìn)程調(diào)度選中運(yùn)行。當(dāng)需要把某進(jìn)程掛起時(shí),使用掛起原語。其掛起方式有:①掛起當(dāng)前運(yùn)行進(jìn)程;②掛起指定進(jìn)程;③掛起指定進(jìn)程及其子孫進(jìn)程等。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第68頁。3.3內(nèi)核中進(jìn)程的實(shí)現(xiàn)進(jìn)程掛起原語的執(zhí)行過程:從PCB隊(duì)列中讀出被掛起進(jìn)程的狀態(tài),若正處于活動(dòng)就緒狀態(tài),就改為靜止就緒狀態(tài);若為活動(dòng)阻塞狀態(tài),就將其改為靜止阻塞狀態(tài);若正在執(zhí)行,則轉(zhuǎn)到進(jìn)程調(diào)度程序重新調(diào)度。為了能讓系統(tǒng)在掛起一個(gè)進(jìn)程后仍能考察其狀態(tài)信息,應(yīng)該把該進(jìn)程的PCB副本存放到指定的內(nèi)存區(qū)域。6.進(jìn)程激活原語(ActivePrimitive)當(dāng)發(fā)生激活進(jìn)程的事件時(shí),如用戶進(jìn)程或父進(jìn)程要求激活指定進(jìn)程,系統(tǒng)就調(diào)用進(jìn)程激活原語將進(jìn)程從外存調(diào)入內(nèi)存,將處于靜止?fàn)顟B(tài)的進(jìn)程變?yōu)榛顒?dòng)狀態(tài),即把“靜止就緒”變?yōu)椤盎顒?dòng)就緒”,把“靜止阻塞”變?yōu)椤盎顒?dòng)阻塞”。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第69頁。3.4線程模型在程序代碼運(yùn)行期間,CPU的執(zhí)行流程由“經(jīng)過”程序計(jì)數(shù)器的指令地址序列來描述,這個(gè)地址序列就是指令的執(zhí)行軌跡,叫做執(zhí)行線程,簡(jiǎn)稱線程。它是進(jìn)程的控制流程。3.4.1多線程在一個(gè)進(jìn)程中允許有多個(gè)線程時(shí),它們都共享該進(jìn)程的狀態(tài)和資源,也就是說它們駐留在同一個(gè)用戶地址空間中,可以訪問相同的數(shù)據(jù)。當(dāng)一個(gè)線程改變了所屬進(jìn)程的變量時(shí),其他線程在下次訪問該變量時(shí)就會(huì)看到這種改變。由于每個(gè)線程具有自己的執(zhí)行堆棧、程序計(jì)數(shù)器、寄存器集和狀態(tài)標(biāo)志,所以同樣要為每個(gè)線程定義一個(gè)抽象數(shù)據(jù)類型來包含這些數(shù)據(jù)成員,以實(shí)現(xiàn)線程之間的切換。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第70頁。3.4線程模型引入多線程后為系統(tǒng)管理帶來了許多好處:①線程之間的切換減輕了內(nèi)存管理的負(fù)擔(dān),另外線程之間的切換所花時(shí)間也比進(jìn)程間切換少。②系統(tǒng)創(chuàng)建或終止一個(gè)線程的開銷要比創(chuàng)建或終止一個(gè)進(jìn)程的開銷少得多。③線程之間通信的效率要高于進(jìn)程之間的通信效率。進(jìn)程間通信需要內(nèi)核介入,而同一進(jìn)程中的多線程由于共享同一地址空間,所以通信時(shí)無須內(nèi)核介入。但是,引入線程后也需要解決一些問題:①需要增加CPU開銷,以便跟蹤線程。②線程之間也存在爭(zhēng)用共享資源的問題。
所以,當(dāng)編制程序時(shí),如果要求完成一組相關(guān)任務(wù)的應(yīng)用程序或函數(shù),應(yīng)該首選使用多線程的組織方式。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第71頁。3.4線程模型3.4.2內(nèi)核線程和用戶線程
內(nèi)核中的線程是一個(gè)調(diào)度的實(shí)體。它的創(chuàng)建與撤銷和用戶進(jìn)程沒有聯(lián)系,而是根據(jù)核心的內(nèi)部管理需求來確定的,例如為了執(zhí)行一個(gè)指定的函數(shù),它們沒有虛擬地址空間,可共享內(nèi)核正文段和全局?jǐn)?shù)據(jù),并有自己的內(nèi)核堆棧,它可以被單獨(dú)地調(diào)度執(zhí)行,也能使用內(nèi)核同步機(jī)制。用戶線程運(yùn)行在操作系統(tǒng)核心之上,但進(jìn)程中的線程對(duì)內(nèi)核是透明的,或者說內(nèi)核無需知道它們的存在。這些線程將競(jìng)爭(zhēng)分配給進(jìn)程的資源。當(dāng)內(nèi)核不支持用戶級(jí)線程時(shí),可以通過使用POSIX.1C提供的標(biāo)準(zhǔn)線程庫來實(shí)現(xiàn)用戶級(jí)線程,其線程包括線程的創(chuàng)建、刪除、互斥和條件變量的同步操作以及調(diào)度和管理線程的標(biāo)準(zhǔn)函數(shù),而無需內(nèi)核來幫助。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第72頁。3.4線程模型3.4.3線程與進(jìn)程的主要區(qū)別(1)進(jìn)程是資源管理的基本單位,它擁有自己的地址空間和各種資源;線程只是處理機(jī)調(diào)度的基本單位,它只和其他線程一起共享進(jìn)程資源,但自己沒有任何資源。(2)以進(jìn)程為單位進(jìn)行處理機(jī)切換和調(diào)度時(shí),由于涉及到資源轉(zhuǎn)移以及現(xiàn)場(chǎng)保護(hù)等問題,將導(dǎo)致處理機(jī)切換時(shí)間變長(zhǎng),資源利用率降低。以線程為單位進(jìn)行處理機(jī)切換和調(diào)度時(shí),由于不發(fā)生資源變化,特別是地址空間的變化,處理機(jī)切換的時(shí)間較短,從而處理機(jī)效率也較高。(3)對(duì)用戶來說,多線程可減少用戶的等待時(shí)間,提高系統(tǒng)的響應(yīng)速度。對(duì)于多線程系統(tǒng)而言,則可以在同一進(jìn)程中使用不同的線程同時(shí)進(jìn)行遠(yuǎn)程過程調(diào)用,從而縮短進(jìn)程的等待時(shí)間。(4)線程和進(jìn)程一樣,都有自己的狀態(tài),也有相應(yīng)的同步機(jī)制,不過,由于線程沒有單獨(dú)的數(shù)據(jù)和程序空間,因此,線程不能像進(jìn)程的數(shù)據(jù)與程序那樣,交換到外存存儲(chǔ)空間。從而線程沒有掛起狀態(tài)。(5)進(jìn)程的調(diào)度、同步等控制大多由操作系統(tǒng)內(nèi)核完成,而線程的控制既可以由操作系統(tǒng)內(nèi)核進(jìn)行,也可以由用戶控制進(jìn)行。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第73頁。3.5Linux的進(jìn)程管理3.5.1Linux的進(jìn)程的組成一般來說,Linux系統(tǒng)中的進(jìn)程都具有以下四個(gè)要素。①有一個(gè)程序正文段供其執(zhí)行。②進(jìn)程專用的系統(tǒng)堆棧空間。③有一個(gè)進(jìn)程描述符,即在內(nèi)核中的一個(gè)task_struct數(shù)據(jù)結(jié)構(gòu)。有了這個(gè)數(shù)據(jù)結(jié)構(gòu),進(jìn)程才能成為內(nèi)核調(diào)度的一個(gè)基本單位,接受內(nèi)核的調(diào)度。同時(shí),該結(jié)構(gòu)還記錄著進(jìn)程所占用的各項(xiàng)資源。④有一個(gè)獨(dú)立的地址空間,即擁有專有的用戶空間和專用的用戶空間堆棧。
缺了四個(gè)要素中的任何一個(gè)就不能成為進(jìn)程了。如果只具備前三條,那么就稱其為線程。如果完全沒有用戶空間,就稱為內(nèi)核線程。如果共享用戶空間,則稱為用戶線程。
Linux內(nèi)核提供了對(duì)線程的支持,因此也就沒有必要再在進(jìn)程內(nèi)部,即用戶空間中自行實(shí)現(xiàn)線程。在Linux系統(tǒng)中,許多進(jìn)程在創(chuàng)建之初都與其父進(jìn)程共用同一個(gè)存儲(chǔ)空間,所以嚴(yán)格說來還是線程;但是子進(jìn)程可以建立自己的存儲(chǔ)空間,并與父進(jìn)程分道揚(yáng)鑣,成為真正意義上的進(jìn)程。在Linux中,沒有為線程單獨(dú)定義數(shù)據(jù)結(jié)構(gòu),因此,Linux中進(jìn)程和線程沒有區(qū)別。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第74頁。3.5Linux的進(jìn)程管理3.5.2進(jìn)程描述符Linux系統(tǒng)用進(jìn)程描述符(processdescriptor,或進(jìn)程控制塊)來管理進(jìn)程,進(jìn)程描述符是一個(gè)task_struct類型的數(shù)據(jù)結(jié)構(gòu),它的字段包含與一個(gè)進(jìn)程相關(guān)的所有信息Linux系統(tǒng)能處理多達(dá)NR_TASKS個(gè)進(jìn)程。內(nèi)核在它自己的地址空間保存一個(gè)大小為NR_TASKS的全局靜態(tài)數(shù)組task。數(shù)組中的元素就是進(jìn)程描述符指針。Linux系統(tǒng)的進(jìn)程描述符被存放在內(nèi)核之外的主存中。每個(gè)進(jìn)程都有一個(gè)task_struct數(shù)據(jù)結(jié)構(gòu)和用做系統(tǒng)核心棧的存儲(chǔ)區(qū)。內(nèi)核在為每個(gè)進(jìn)程分配一個(gè)task_struct結(jié)構(gòu)時(shí),實(shí)際上分配了兩個(gè)連續(xù)的物理頁框(共8192字節(jié)),頁框的底部用來存放進(jìn)程的task_struct數(shù)據(jù)結(jié)構(gòu),頂部用做進(jìn)程的核心棧,如圖3-13所示。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第75頁。3.5Linux的進(jìn)程管理圖3-13進(jìn)程描述符和進(jìn)程核心棧的存放操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第76頁。3.5Linux的進(jìn)程管理3.5.3進(jìn)程狀態(tài)進(jìn)程描述符中的進(jìn)程狀態(tài)字段描述進(jìn)程當(dāng)前所處的狀態(tài)。進(jìn)程可能有以下幾個(gè)狀態(tài)。TASK_RUNNING:可運(yùn)行狀態(tài)。進(jìn)程要么在CPU上執(zhí)行,要么在就緒隊(duì)列準(zhǔn)備執(zhí)行。TASK_INTERRUPTIBLE:可中斷的等待狀態(tài)。運(yùn)行中的進(jìn)程由于某些條件,使進(jìn)程處于阻塞等待狀態(tài),直到一些條件變?yōu)檎鏁r(shí)將其喚醒為止。這些條件包括:等待一個(gè)I/O操作完成中斷,等待某進(jìn)程釋放一個(gè)資源或等待一個(gè)進(jìn)程傳遞一個(gè)信號(hào)等。TASK_UNINTERRUPTIBLE:不可中斷的等待狀態(tài)。運(yùn)行中的進(jìn)程由于某些條件,使進(jìn)程必須等待,不能被中斷,直到給定的條件發(fā)生為止。與前一個(gè)狀態(tài)不同的是,它不會(huì)因接收信號(hào)而終止等待狀態(tài)。與UNIX的高優(yōu)先級(jí)睡眠類似。TASK_STOPPED:暫停狀態(tài)。由于接收到一個(gè)信號(hào),進(jìn)程的執(zhí)行被暫停,或者進(jìn)程由暫停改變?yōu)榭蛇\(yùn)行。TASK_ZOMBIE:僵死狀態(tài)。進(jìn)程執(zhí)行完成并退出時(shí)處于終止?fàn)顟B(tài)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第77頁。3.5Linux的進(jìn)程管理圖3-14Linux的進(jìn)程狀態(tài)及其轉(zhuǎn)換操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第78頁。3.5Linux的進(jìn)程管理3.5.4進(jìn)程鏈表為了對(duì)進(jìn)程管理,將處于同一狀態(tài)的所有進(jìn)程用一個(gè)雙向循環(huán)鏈表連接起來,如圖3-15所示。鏈表中的第一個(gè)元素是init_task描述符,它是所有進(jìn)程的祖先,又叫做0號(hào)進(jìn)程或swapper進(jìn)程。
圖3-15進(jìn)程鏈表為了實(shí)現(xiàn)對(duì)多個(gè)進(jìn)程的管理,內(nèi)核建立了幾個(gè)進(jìn)程隊(duì)列鏈表:運(yùn)行隊(duì)列和等待隊(duì)列。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第79頁。3.5Linux的進(jìn)程管理3.5.5進(jìn)程控制Linux系統(tǒng)中的每個(gè)進(jìn)程要經(jīng)過被創(chuàng)建、調(diào)度執(zhí)行,以及最后消亡的過程。用于進(jìn)程創(chuàng)建的系統(tǒng)調(diào)用:fork(),clone(),vfork()。3.5.6Linux線程Linux內(nèi)核在2.2版中引入了線程機(jī)制。Linux提供了fork,這是具有傳統(tǒng)進(jìn)程復(fù)制功能的系統(tǒng)調(diào)用。Linux還提供了系統(tǒng)調(diào)用clone,其功能類似于創(chuàng)建一個(gè)線程。clone與fork的行為很相似,它不是創(chuàng)建調(diào)用進(jìn)程的復(fù)制,而是創(chuàng)建一個(gè)獨(dú)立進(jìn)程以共享原來調(diào)用進(jìn)程的的地址空間。通過共享父進(jìn)程的地址空間,clone任務(wù)能像獨(dú)立線程一樣工作。由于Linux內(nèi)核進(jìn)程的特定表示方式,所以允許共享地址空間。系統(tǒng)內(nèi)的每個(gè)進(jìn)程都有一個(gè)惟一的內(nèi)核數(shù)據(jù)結(jié)構(gòu)。不過,該數(shù)據(jù)結(jié)構(gòu)并不保存該數(shù)據(jù)結(jié)構(gòu)中進(jìn)程本身的數(shù)據(jù),而是保存了此數(shù)據(jù)保存處的數(shù)據(jù)結(jié)構(gòu)的指針。
Linux并不區(qū)分進(jìn)程和線程
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第80頁。3.5Linux的進(jìn)程管理3.5.7Linux進(jìn)程的創(chuàng)建與撤銷1.進(jìn)程的創(chuàng)建在使用Linux系統(tǒng)的時(shí)候,每次在終端下面輸入一行命令,就由shell進(jìn)程接收這個(gè)命令并創(chuàng)建一個(gè)新的進(jìn)程,這個(gè)新的進(jìn)程還可以通過fork()系統(tǒng)調(diào)用,繼續(xù)創(chuàng)建自己的子進(jìn)程,系統(tǒng)中的多個(gè)進(jìn)程構(gòu)成了一棵進(jìn)程樹。在Linux系統(tǒng)啟動(dòng)的時(shí)候,最早產(chǎn)生的進(jìn)程是idle進(jìn)程,其pid號(hào)為0,該進(jìn)程會(huì)創(chuàng)建一個(gè)內(nèi)核線程,該線程進(jìn)行一系列初始化動(dòng)作后最終會(huì)執(zhí)行/sbin/init文件,執(zhí)行該文件的結(jié)果是運(yùn)行模式從核心態(tài)切換到了用戶態(tài),該線程演變成了用戶進(jìn)程init,pid號(hào)為l。init進(jìn)程是一個(gè)非常重要的進(jìn)程,一切用戶態(tài)進(jìn)程都是它的后代進(jìn)程。2.進(jìn)程的撤消進(jìn)程運(yùn)行結(jié)束后,需要被操作系統(tǒng)銷毀。最普遍的情況是進(jìn)程正常運(yùn)行結(jié)束后顯式或隱式地調(diào)用exit()函數(shù)?;蛘?,當(dāng)進(jìn)程收到某種信號(hào)時(shí),該信號(hào)的處理函數(shù)會(huì)結(jié)束當(dāng)前進(jìn)程運(yùn)行并將其銷毀,對(duì)于最常使用的shell命令之一kill,在不指定信號(hào)的情況下,默認(rèn)信號(hào)SIGTERM將被發(fā)給相應(yīng)進(jìn)程并導(dǎo)致該進(jìn)程結(jié)束運(yùn)行。另一種常見的情況是,用戶程序訪問了非法地址空間,使內(nèi)核向進(jìn)程發(fā)送SIGSEGV信號(hào)從而導(dǎo)致進(jìn)程結(jié)束運(yùn)行。無論進(jìn)程因?yàn)槭裁丛蚨Y(jié)束,進(jìn)程銷毀的最終動(dòng)作都是調(diào)用函數(shù)do_exit()。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第81頁。3.5Linux的進(jìn)程管理3.5.8實(shí)例——使用庫函數(shù)clone()與pthread_create()在Linux環(huán)境下創(chuàng)建兩種不同執(zhí)行模式的線程程序3.5.9實(shí)例——Linux操作系統(tǒng)下守護(hù)進(jìn)程的編程方法操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第82頁。范立南劉颯編著北京大學(xué)出版社操作系統(tǒng)實(shí)用教程第4章進(jìn)程控制操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第83頁。第4章進(jìn)程控制
4.1同步和互斥4.2經(jīng)典的進(jìn)程同步問題4.3管程機(jī)制4.4進(jìn)程通信4.5線程間的同步和通信4.6Linux進(jìn)程通信機(jī)制操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第84頁。第4章進(jìn)程控制
進(jìn)程是申請(qǐng)系統(tǒng)資源的基本單位,但由于系統(tǒng)資源數(shù)量有限,必然導(dǎo)致各個(gè)進(jìn)程間的資源競(jìng)爭(zhēng)。用戶進(jìn)程與系統(tǒng)進(jìn)程之間,同一用戶作業(yè)內(nèi)部各個(gè)進(jìn)程之間,不同用戶各作業(yè)的進(jìn)程之間,各系統(tǒng)進(jìn)程之間都存在資源競(jìng)爭(zhēng)問題,因此進(jìn)程之間的關(guān)系非常復(fù)雜。如果對(duì)競(jìng)爭(zhēng)失控,產(chǎn)生的后果是:要么資源在使用過程中遭到破壞,要么是各個(gè)進(jìn)程為爭(zhēng)奪資源而形成僵持局面(死鎖)。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第85頁。4.1同步和互斥4.1.1并發(fā)問題1.并發(fā)的需求(1)操作系統(tǒng)利用進(jìn)程(線程)機(jī)制支持用戶態(tài)程序最大限度地并行執(zhí)行。(2)操作系統(tǒng)核心程序也要盡可能地并發(fā)運(yùn)行。由此,可以看出無論系統(tǒng)工作在管態(tài)還是目態(tài),要想提高系統(tǒng)性能必須解決好并發(fā)問題。2.并發(fā)程序(1)傳統(tǒng)的串行程序存在著并行成分,以下面的程序?yàn)槔? Read(a); Read(b); c=a+b; Write(c)從上述程序段可以看出,Read(a)和Read(b)兩個(gè)語句如果不通過同一輸入設(shè)備則可并發(fā)執(zhí)行。因此,在程序中可以并發(fā)執(zhí)行的語句和程序段會(huì)有很多。(2)識(shí)別算法中的并發(fā)成分有兩種方法:①程序員寫順序程序,用并行識(shí)別工具識(shí)別并發(fā)成分,組織使用操作系統(tǒng)的并發(fā)機(jī)制。②由程序員識(shí)別并發(fā)成分,用并發(fā)程序設(shè)計(jì)語言設(shè)計(jì)并發(fā)程序,由編譯系統(tǒng)安排并發(fā);或直接利用操作系統(tǒng)的系統(tǒng)調(diào)用,或高級(jí)并發(fā)程序庫設(shè)計(jì)并發(fā)程序。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第86頁。4.1同步和互斥3.并發(fā)程序設(shè)計(jì)語言并發(fā)語句并發(fā)語句是一種高級(jí)語言,其語法形式為:ParbeginS1;S2;…Sn;Parend;其中Si(i=1,2,…,n)是單個(gè)語句,Parbegin和Parend之間的語句可以并發(fā)執(zhí)行。并發(fā)語句描述手段的優(yōu)缺點(diǎn)①并發(fā)語句Parbegin/Parend的結(jié)構(gòu)化特征非常好。②存在著描述能力不強(qiáng)的缺點(diǎn),即存在著用Parbegin/Parend語句無法描述的并發(fā)優(yōu)先關(guān)系。③若能輔以其他手段(如本章后續(xù)將介紹的信號(hào)量機(jī)制),則并發(fā)語句可以大大增加其描述并發(fā)的能力。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第87頁。4.1同步和互斥4并發(fā)程序?qū)崿F(xiàn)操作系統(tǒng)提供進(jìn)程創(chuàng)建,結(jié)束和同步的系統(tǒng)調(diào)用,可直接提供給用戶編寫并行程序;或由并行語言編譯器將并發(fā)語言的語句轉(zhuǎn)化為對(duì)操作系統(tǒng)的系統(tǒng)調(diào)用。5.與進(jìn)程相關(guān)的系統(tǒng)調(diào)用以Unix操作系統(tǒng)為例,Unix利用進(jìn)程(或線程)支持并發(fā)執(zhí)行,提供了如下系統(tǒng)調(diào)用:①fork():創(chuàng)建一個(gè)新進(jìn)程。②exit(status):進(jìn)程結(jié)束。③wait(&status):等待子進(jìn)程結(jié)束。④waitpid(pid,…):等待pid所指定的進(jìn)程結(jié)束。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第88頁。4.1同步和互斥6.多進(jìn)程實(shí)現(xiàn)前述的讀寫并發(fā)程序示意(假設(shè)a,b都在兩進(jìn)程都可訪問的共享區(qū))pid=fork();ifpid==0then{read(b);exit(0);}elseread(a);return_pid=wait(&status);c=a+b;write(c);操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第89頁。4.1同步和互斥4.1.2進(jìn)程同步和互斥的基本概念在多道程序系統(tǒng)中,各個(gè)進(jìn)程之間是彼此獨(dú)立、并發(fā)地執(zhí)行著的。但是在計(jì)算機(jī)系統(tǒng)中的資源是有限的,這就導(dǎo)致了進(jìn)程之間的資源競(jìng)爭(zhēng)和共享,也就是說,使得這些進(jìn)程之間存在著相互制約的關(guān)系。這種制約關(guān)系可以歸納為以下兩種形式。1.間接制約關(guān)系它主要源于對(duì)資源的共享。這種制約關(guān)系就是進(jìn)程的“互斥”關(guān)系。2.直接制約關(guān)系它主要源于進(jìn)程之間的合作。這種直接制約關(guān)系稱為進(jìn)程的“同步”關(guān)系。
間接制約關(guān)系是由系統(tǒng)中諸并發(fā)進(jìn)程同時(shí)訪問共享變量或?qū)εR界資源的競(jìng)爭(zhēng)而引起的,稱為“進(jìn)程互斥”問題。而直接制約關(guān)系是由諸并發(fā)進(jìn)程之間的合作而引起的,一組合作的并發(fā)進(jìn)程以各自的速度向前推進(jìn),但各自的執(zhí)行卻互為對(duì)方的執(zhí)行前提,從而限制了諸進(jìn)程的執(zhí)行速度。
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第90頁。4.1同步和互斥
所謂進(jìn)程同步,指的是多道程序系統(tǒng)中兩個(gè)或多個(gè)進(jìn)程之間為了合作完成同一個(gè)任務(wù),在執(zhí)行時(shí)必須利用相應(yīng)的制約措施來相互協(xié)調(diào),即一個(gè)進(jìn)程在未獲得與之相合作的進(jìn)程發(fā)來消息之前應(yīng)阻塞等待,在收到合作進(jìn)程發(fā)來的消息后,才能繼續(xù)向前推進(jìn)的一種進(jìn)程合作關(guān)系。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第91頁。4.1同步和互斥進(jìn)程互斥是一組并發(fā)進(jìn)程之間存在的一種源于資源共享的間接制約關(guān)系,當(dāng)兩個(gè)或兩個(gè)以上的進(jìn)程需要同時(shí)訪問某個(gè)共享變量或公有資源時(shí),如果有一個(gè)進(jìn)程正在使用,則其他進(jìn)程就必須等待。進(jìn)程的互斥主要是由被共享資源的使用性質(zhì)所決定的,即限定進(jìn)程只能互斥的訪問資源。
操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第92頁。4.1同步和互斥臨界資源,是指在一段時(shí)間內(nèi)僅允許一個(gè)進(jìn)程使用的資源。例如共享的某變量或某表格,屬于軟件臨界資源;而像打印機(jī)或磁帶機(jī)等都屬于硬件臨界資源。臨界資源限定了進(jìn)程只能互斥地使用它,即當(dāng)一個(gè)進(jìn)程正在使用臨界資源時(shí),別的進(jìn)程只能等待,直到使用者用完并釋放資源后,才可以使用。進(jìn)程中訪問臨界資源的程序代碼或程序段稱為臨界區(qū)或臨界段。為了實(shí)現(xiàn)對(duì)臨界資源的互斥訪問,應(yīng)保證諸進(jìn)程不能同時(shí)進(jìn)入臨界區(qū),否則就會(huì)導(dǎo)致數(shù)據(jù)的不一致,產(chǎn)生與時(shí)間有關(guān)的錯(cuò)誤。操作系統(tǒng)實(shí)用教程全文共603頁,當(dāng)前為第93頁。4.1同步和互斥在操作系統(tǒng)中,可以采用軟件方法,或者通過硬件指令或設(shè)置專門的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)學(xué)生社團(tuán)活動(dòng)經(jīng)費(fèi)公開制度
- 人力資源制度
- 企業(yè)供應(yīng)商選擇與合作關(guān)系制度
- 2026年生物醫(yī)藥研究員高級(jí)筆試模擬卷
- 2026年醫(yī)學(xué)專業(yè)知識(shí)與技能考試題庫及答案
- 2026年政府采購法規(guī)知識(shí)競(jìng)賽試題及答案
- 2026年食品營(yíng)養(yǎng)學(xué)試題與答案參考
- 2025年人工智能輔助司法量刑建議系統(tǒng)使用規(guī)范協(xié)議
- 2024年遼寧兵器工業(yè)職工大學(xué)馬克思主義基本原理概論期末考試題含答案解析(必刷)
- 古文在寫作中的運(yùn)用課件
- 老年患者多病共存精準(zhǔn)管理策略
- 四川省遂寧市2026屆高三上學(xué)期一診考試英語試卷(含答案無聽力音頻有聽力原文)
- 福建省寧德市2025-2026學(xué)年高三上學(xué)期期末考試語文試題(含答案)
- 建筑施工行業(yè)2026年春節(jié)節(jié)前全員安全教育培訓(xùn)
- 2026屆高考語文復(fù)習(xí):小說人物形象復(fù)習(xí)
- 2026及未來5年中國(guó)防病毒網(wǎng)關(guān)行業(yè)市場(chǎng)全景調(diào)查及發(fā)展前景研判報(bào)告
- 兩個(gè)合伙人股權(quán)協(xié)議書范文模板
- GB/T 44082-2024道路車輛汽車列車多車輛間連接裝置強(qiáng)度要求
- 控?zé)熤嗅t(yī)科普知識(shí)講座
- 脫碳塔CO2脫氣塔設(shè)計(jì)計(jì)算
- 產(chǎn)品報(bào)價(jià)單貨物報(bào)價(jià)表(通用版)
評(píng)論
0/150
提交評(píng)論