計(jì)算機(jī)操作系統(tǒng)課件(湯子瀛)完整版.ppt_第1頁(yè)
計(jì)算機(jī)操作系統(tǒng)課件(湯子瀛)完整版.ppt_第2頁(yè)
計(jì)算機(jī)操作系統(tǒng)課件(湯子瀛)完整版.ppt_第3頁(yè)
計(jì)算機(jī)操作系統(tǒng)課件(湯子瀛)完整版.ppt_第4頁(yè)
計(jì)算機(jī)操作系統(tǒng)課件(湯子瀛)完整版.ppt_第5頁(yè)
已閱讀5頁(yè),還剩597頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)操作系統(tǒng)原理,-湯子瀛,第一章 操作系統(tǒng)引論,1.1 操作系統(tǒng)的目標(biāo)和作用 1.2 操作系統(tǒng)的發(fā)展過(guò)程 1.3 操作系統(tǒng)的基本特性 1.4 操作系統(tǒng)的主要功能 1.5 操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),1.1 操作系統(tǒng)的目標(biāo)和作用,1.1.1 操作系統(tǒng)的目標(biāo),目前存在著多種類(lèi)型的OS,不同類(lèi)型的OS,其目標(biāo)各有所側(cè)重。通常在計(jì)算機(jī)硬件上配置的OS,其目標(biāo)有以下幾點(diǎn): 1. 方便性 2. 有效性 3. 可擴(kuò)充性 4. 開(kāi)放性,1.1.2 操作系統(tǒng)的作用,1.OS作為用戶(hù)與計(jì)算機(jī)硬件系統(tǒng)之間的接口 OS作為用戶(hù)與計(jì)算機(jī)硬件系統(tǒng)之間接口的含義是:OS處于用戶(hù)與計(jì)算機(jī)硬件系統(tǒng)之間,用戶(hù)通過(guò)OS來(lái)使用計(jì)算機(jī)系統(tǒng)?;蛘哒f(shuō),用戶(hù)在OS幫助下,能夠方便、快捷、安全、可靠地操縱計(jì)算機(jī)硬件和運(yùn)行自己的程序。應(yīng)注意,OS是一個(gè)系統(tǒng)軟件,因而這種接口是軟件接口。,圖 1-1 OS作為接口的示意圖,(1) 命令方式。這是指由OS提供了一組聯(lián)機(jī)命令(語(yǔ)言), 用戶(hù)可通過(guò)鍵盤(pán)輸入有關(guān)命令,來(lái)直接操縱計(jì)算機(jī)系統(tǒng)。 (2) 系統(tǒng)調(diào)用方式。OS提供了一組系統(tǒng)調(diào)用,用戶(hù)可在自己的應(yīng)用程序中通過(guò)相應(yīng)的系統(tǒng)調(diào)用,來(lái)操縱計(jì)算機(jī)。 (3) 圖形、窗口方式。用戶(hù)通過(guò)屏幕上的窗口和圖標(biāo)來(lái)操縱計(jì)算機(jī)系統(tǒng)和運(yùn)行自己的程序。,2. OS作為計(jì)算機(jī)系統(tǒng)資源的管理者 在一個(gè)計(jì)算機(jī)系統(tǒng)中,通常都含有各種各樣的硬件和軟件資源。歸納起來(lái)可將資源分為四類(lèi):處理器、存儲(chǔ)器、 I/O設(shè)備以及信息(數(shù)據(jù)和程序)。相應(yīng)地,OS的主要功能也正是針對(duì)這四類(lèi)資源進(jìn)行有效的管理,即:處理機(jī)管理, 用于分配和控制處理機(jī);存儲(chǔ)器管理,主要負(fù)責(zé)內(nèi)存的分配與回收;I/O設(shè)備管理,負(fù)責(zé)I/O設(shè)備的分配與操縱;文件管理,負(fù)責(zé)文件的存取、共享和保護(hù)。可見(jiàn),OS確是計(jì)算機(jī)系統(tǒng)資源的管理者。事實(shí)上,當(dāng)今世界上廣為流行的一個(gè)關(guān)于OS作用的觀(guān)點(diǎn),正是把OS作為計(jì)算機(jī)系統(tǒng)的資源管理者。,3. OS用作擴(kuò)充機(jī)器 對(duì)于一臺(tái)完全無(wú)軟件的計(jì)算機(jī)系統(tǒng)(即裸機(jī)),即使其功能再?gòu)?qiáng),也必定是難于使用的。如果我們?cè)诼銠C(jī)上覆蓋上一層I/O設(shè)備管理軟件,用戶(hù)便可利用它所提供的I/O命令,來(lái)進(jìn)行數(shù)據(jù)輸入和打印輸出。此時(shí)用戶(hù)所看到的機(jī)器, 將是一臺(tái)比裸機(jī)功能更強(qiáng)、使用更方便的機(jī)器。通常把覆蓋了軟件的機(jī)器稱(chēng)為擴(kuò)充機(jī)器或虛機(jī)器。如果我們又在第一層軟件上再覆蓋上一層文件管理軟件,則用戶(hù)可利用該軟件提供的文件存取命令,來(lái)進(jìn)行文件的存取。此時(shí),用戶(hù)所看到的是臺(tái)功能更強(qiáng)的虛機(jī)器。如果我們又在文件管理軟件上再覆蓋一層面向用戶(hù)的窗口軟件,則用戶(hù)便可在窗口環(huán)境下方便地使用計(jì)算機(jī),形成一臺(tái)功能更強(qiáng)的虛機(jī)器。,1.1.3 推動(dòng)操作系統(tǒng)發(fā)展的主要?jiǎng)恿?不斷提高計(jì)算機(jī)資源利用率 2. 方便用戶(hù) 3. 器件的不斷更新?lián)Q代 4. 計(jì)算機(jī)體系結(jié)構(gòu)的不斷發(fā)展,1.2 操作系統(tǒng)的發(fā)展過(guò)程,1.2.1 無(wú)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng),1. 人工操作方式 從第一臺(tái)計(jì)算機(jī)誕生(1945年)到50年代中期的計(jì)算機(jī),屬于第一代,這時(shí)還未出現(xiàn)OS。這時(shí)的計(jì)算機(jī)操作是由用戶(hù)(即程序員)采用人工操作方式直接使用計(jì)算機(jī)硬件系統(tǒng),即由程序員將事先已穿孔(對(duì)應(yīng)于程序和數(shù)據(jù))的紙帶(或卡片)裝入紙帶輸入機(jī)(或卡片輸入機(jī)),再啟動(dòng)它們將程序和數(shù)據(jù)輸入計(jì)算機(jī), 然后啟動(dòng)計(jì)算機(jī)運(yùn)行。當(dāng)程序運(yùn)行完畢并取走計(jì)算結(jié)果后, 才讓下一個(gè)用戶(hù)上機(jī)。這種人工操作方式有以下兩方面的缺點(diǎn): (1) 用戶(hù)獨(dú)占全機(jī)。 (2) CPU等待人工操作。,2. 脫機(jī)輸入/輸出(Off-Line I/O)方式,這種脫機(jī)I/O方式的主要優(yōu)點(diǎn)如下: 減少了CPU的空閑時(shí)間。 (2) 提高I/O速度。,圖 1-2 脫機(jī)I/O示意圖,1.2.2 單道批處理系統(tǒng),1. 單道批處理系統(tǒng)(Simple Batch Processing System)的處理過(guò)程,圖 1-3 單道批處理系統(tǒng)的處理流程,2. 單道批處理系統(tǒng)的特征 單道批處理系統(tǒng)是最早出現(xiàn)的一種OS,嚴(yán)格地說(shuō),它只能算作是OS的前身而并非是現(xiàn)在人們所理解的OS。盡管如此,該系統(tǒng)比起人工操作方式的系統(tǒng)已有很大進(jìn)步。 該系統(tǒng)的主要特征如下: (1) 自動(dòng)性。 (2) 順序性。 (3) 單道性。,1.2.3 多道批處理系統(tǒng),1. 多道程序設(shè)計(jì)的基本概念 在單道批處理系統(tǒng)中,內(nèi)存中僅有一道作業(yè),它無(wú)法充分利用系統(tǒng)中的所有資源,致使系統(tǒng)性能較差。為了進(jìn)一步提高資源的利用率和系統(tǒng)吞吐量,在60年代中期又引入了多道程序設(shè)計(jì)技術(shù),由此而形成了多道批處理系統(tǒng)(Multiprogrammed Batch Processing System)。在該系統(tǒng)中, 用戶(hù)所提交的作業(yè)都先存放在外存上并排成一個(gè)隊(duì)列,稱(chēng)為“后備隊(duì)列”;然后,由作業(yè)調(diào)度程序按一定的算法從后備隊(duì)列中選擇若干個(gè)作業(yè)調(diào)入內(nèi)存,使它們共享CPU和系統(tǒng)中的各種資源。,在OS中引入多道程序設(shè)計(jì)技術(shù)可帶來(lái)以下好處: 提高CPU的利用率。,當(dāng)內(nèi)存中僅有一道程序時(shí),每逢該程序在運(yùn)行中發(fā)出I/O請(qǐng)求后,CPU空閑,必須在其I/O完成后才繼續(xù)運(yùn)行;尤其因I/O設(shè)備的低速性,更使CPU的利用率顯著降低。圖 1-4(a)示出了單道程序的運(yùn)行情況,從圖可以看出:在t2t3、 t6t7時(shí)間間隔內(nèi)CPU空閑。在引入多道程序設(shè)計(jì)技術(shù)后, 由于同時(shí)在內(nèi)存中裝有若干道程序,并使它們交替地運(yùn)行, 這樣,當(dāng)正在運(yùn)行的程序因I/O而暫停執(zhí)行時(shí),系統(tǒng)可調(diào)度另一道程序運(yùn)行,從而保持了CPU處于忙碌狀態(tài)。,圖 1-4 單道和多道程序運(yùn)行情況,(2) 可提高內(nèi)存和I/O設(shè)備利用率。為了能運(yùn)行較大的作業(yè),通常內(nèi)存都具有較大容量,但由于80%以上的作業(yè)都屬于中小型,因此在單道程序環(huán)境下,也必定造成內(nèi)存的浪費(fèi)。類(lèi)似地,對(duì)于系統(tǒng)中所配置的多種類(lèi)型的I/O設(shè)備, 在單道程序環(huán)境下也不能充分利用。如果允許在內(nèi)存中裝入多道程序, 并允許它們并發(fā)執(zhí)行,則無(wú)疑會(huì)大大提高內(nèi)存和I/O設(shè)備的利用率。 (3) 增加系統(tǒng)吞吐量。在保持CPU、I/O設(shè)備不斷忙碌的同時(shí),也必然會(huì)大幅度地提高系統(tǒng)的吞吐量,從而降低作業(yè)加工所需的費(fèi)用。,2. 多道批處理系統(tǒng)的特征,多道性。 (2) 無(wú)序性。 (3) 調(diào)度性。,3. 多道批處理系統(tǒng)的優(yōu)缺點(diǎn),資源利用率高。 (2) 系統(tǒng)吞吐量大。 (3) 平均周轉(zhuǎn)時(shí)間長(zhǎng)。 (4) 無(wú)交互能力。,4. 多道批處理系統(tǒng)需要解決的問(wèn)題,處理機(jī)管理問(wèn)題。 (2) 內(nèi)存管理問(wèn)題。 (3) I/O設(shè)備管理問(wèn)題。 (4) 文件管理問(wèn)題。 (5) 作業(yè)管理問(wèn)題。,1.2.4 分時(shí)系統(tǒng),1. 分時(shí)系統(tǒng)(Time-Sharing System)的產(chǎn)生 如果說(shuō), 推動(dòng)多道批處理系統(tǒng)形成和發(fā)展的主要?jiǎng)恿Γ翘岣哔Y源利用率和系統(tǒng)吞吐量,那么,推動(dòng)分時(shí)系統(tǒng)形成和發(fā)展的主要?jiǎng)恿Γ瑒t是用戶(hù)的需求?;蛘哒f(shuō), 分時(shí)系統(tǒng)是為了滿(mǎn)足用戶(hù)需求所形成的一種新型OS。它與多道批處理系統(tǒng)之間,有著截然不同的性能差別。用戶(hù)的需求具體表現(xiàn)在以下幾個(gè)方面: (1) 人機(jī)交互。 (2) 共享主機(jī)。 (3) 便于用戶(hù)上機(jī)。,2. 分時(shí)系統(tǒng)實(shí)現(xiàn)中的關(guān)鍵問(wèn)題,為實(shí)現(xiàn)分時(shí)系統(tǒng),其中,最關(guān)鍵的問(wèn)題是如何使用戶(hù)能與自己的作業(yè)進(jìn)行交互,即當(dāng)用戶(hù)在自己的終端上鍵入命令時(shí), 系統(tǒng)應(yīng)能及時(shí)接收并及時(shí)處理該命令,再將結(jié)果返回給用戶(hù)。 此后, 用戶(hù)可繼續(xù)鍵入下一條命令,此即人機(jī)交互。應(yīng)強(qiáng)調(diào)指出,即使有多個(gè)用戶(hù)同時(shí)通過(guò)自己的鍵盤(pán)鍵入命令,系統(tǒng)也應(yīng)能全部地及時(shí)接收并處理,(1) 及時(shí)接收。,(2) 及時(shí)處理。,3. 分時(shí)系統(tǒng)的特征,多路性。 (2) 獨(dú)立性。 (3) 及時(shí)性。 (4) 交互性。,1.2.5 實(shí)時(shí)系統(tǒng),所謂“實(shí)時(shí)”,是表示“及時(shí)”,而實(shí)時(shí)系統(tǒng)(Real-Time System)是指系統(tǒng)能及時(shí)(或即時(shí))響應(yīng)外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)該事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致地運(yùn)行。,1. 應(yīng)用需求,實(shí)時(shí)控制。 (2) 實(shí)時(shí)信息處理。,2. 實(shí)時(shí)任務(wù),1) 按任務(wù)執(zhí)行時(shí)是否呈現(xiàn)周期性來(lái)劃分 周期性實(shí)時(shí)任務(wù)。 (2) 非周期性實(shí)時(shí)任務(wù)。,外部設(shè)備所發(fā)出的激勵(lì)信號(hào)并無(wú)明顯的周期性,但都必須聯(lián)系著一個(gè)截止時(shí)間(Deadline)。它又可分為: 開(kāi)始截止時(shí)間任務(wù)在某時(shí)間以前必須開(kāi)始執(zhí)行; 完成截止時(shí)間任務(wù)在某時(shí)間以前必須完成。,2) 根據(jù)對(duì)截止時(shí)間的要求來(lái)劃分 (1) 硬實(shí)時(shí)任務(wù)(hard real-time task)。系統(tǒng)必須滿(mǎn)足任務(wù)對(duì)截止時(shí)間的要求,否則可能出現(xiàn)難以預(yù)測(cè)的結(jié)果。 (2) 軟實(shí)時(shí)任務(wù)(Soft real-time task)。它也聯(lián)系著一個(gè)截止時(shí)間, 但并不嚴(yán)格,若偶爾錯(cuò)過(guò)了任務(wù)的截止時(shí)間, 對(duì)系統(tǒng)產(chǎn)生的影響也不會(huì)太大。,3. 實(shí)時(shí)系統(tǒng)與分時(shí)系統(tǒng)特征的比較 多路性。 (2) 獨(dú)立性。 (3) 及時(shí)性。 (4) 交互性。 (5) 可靠性。,1.3 操作系統(tǒng)的基本特性,1.3.1 并發(fā)(Concurrence),并行性和并發(fā)性是既相似又有區(qū)別的兩個(gè)概念,并行性是指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生;而并發(fā)性是指兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生。在多道程序環(huán)境下,并發(fā)性是指在一段時(shí)間內(nèi),宏觀(guān)上有多個(gè)程序在同時(shí)運(yùn)行,但在單處理機(jī)系統(tǒng)中,每一時(shí)刻卻僅能有一道程序執(zhí)行,故微觀(guān)上這些程序只能是分時(shí)地交替執(zhí)行。倘若在計(jì)算機(jī)系統(tǒng)中有多個(gè)處理機(jī),則這些可以并發(fā)執(zhí)行的程序便可被分配到多個(gè)處理機(jī)上,實(shí)現(xiàn)并行執(zhí)行,即利用每個(gè)處理機(jī)來(lái)處理一個(gè)可并發(fā)執(zhí)行的程序,這樣,多個(gè)程序便可同時(shí)執(zhí)行。,1.3.2 共享(Sharing) 在操作系統(tǒng)環(huán)境下,所謂共享是指系統(tǒng)中的資源可供內(nèi)存中多個(gè)并發(fā)執(zhí)行的進(jìn)程(線(xiàn)程)共同使用。由于資源屬性的不同,進(jìn)程對(duì)資源共享的方式也不同,目前主要有以下兩種資源共享方式。,1. 互斥共享方式 系統(tǒng)中的某些資源,如打印機(jī)、磁帶機(jī),雖然它們可以提供給多個(gè)進(jìn)程(線(xiàn)程)使用,但為使所打印或記錄的結(jié)果不致造成混淆,應(yīng)規(guī)定在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程(線(xiàn)程)訪(fǎng)問(wèn)該資源。為此,當(dāng)一個(gè)進(jìn)程A要訪(fǎng)問(wèn)某資源時(shí),必須先提出請(qǐng)求, 如果此時(shí)該資源空閑,系統(tǒng)便可將之分配給請(qǐng)求進(jìn)程A使用, 此后若再有其它進(jìn)程也要訪(fǎng)問(wèn)該資源時(shí)(只要A未用完)則必須等待。 僅當(dāng)A進(jìn)程訪(fǎng)問(wèn)完并釋放該資源后, 才允許另一進(jìn)程對(duì)該資源進(jìn)行訪(fǎng)問(wèn)。我們把這種資源共享方式稱(chēng)為互斥式共享,而把在一段時(shí)間內(nèi)只允許一個(gè)進(jìn)程訪(fǎng)問(wèn)的資源稱(chēng)為臨界資源或獨(dú)占資源。 計(jì)算機(jī)系統(tǒng)中的大多數(shù)物理設(shè)備,以及某些軟件中所用的棧、變量和表格,都屬于臨界資源,它們要求被互斥地共享。,2. 同時(shí)訪(fǎng)問(wèn)方式 系統(tǒng)中還有另一類(lèi)資源,允許在一段時(shí)間內(nèi)由多個(gè)進(jìn)程“同時(shí)”對(duì)它們進(jìn)行訪(fǎng)問(wèn)。這里所謂的“同時(shí)”往往是宏觀(guān)上的,而在微觀(guān)上,這些進(jìn)程可能是交替地對(duì)該資源進(jìn)行訪(fǎng)問(wèn)。典型的可供多個(gè)進(jìn)程“同時(shí)”訪(fǎng)問(wèn)的資源是磁盤(pán)設(shè)備,一些用重入碼編寫(xiě)的文件,也可以被“同時(shí)”共享,即若干個(gè)用戶(hù)同時(shí)訪(fǎng)問(wèn)該文件。 并發(fā)和共享是操作系統(tǒng)的兩個(gè)最基本的特征,它們又是互為存在的條件。一方面,資源共享是以程序(進(jìn)程)的并發(fā)執(zhí)行為條件的,若系統(tǒng)不允許程序并發(fā)執(zhí)行,自然不存在資源共享問(wèn)題;另一方面,若系統(tǒng)不能對(duì)資源共享實(shí)施有效管理, 協(xié)調(diào)好諸進(jìn)程對(duì)共享資源的訪(fǎng)問(wèn),也必然影響到程序并發(fā)執(zhí)行的程度,甚至根本無(wú)法并發(fā)執(zhí)行。,1.3.3 虛擬(Virtual) 操作系統(tǒng)中的所謂“虛擬”,是指通過(guò)某種技術(shù)把一個(gè)物理實(shí)體變?yōu)槿舾蓚€(gè)邏輯上的對(duì)應(yīng)物。物理實(shí)體(前者)是實(shí)的, 即實(shí)際存在的;而后者是虛的,是用戶(hù)感覺(jué)上的東西。相應(yīng)地,用于實(shí)現(xiàn)虛擬的技術(shù),稱(chēng)為虛擬技術(shù)。在OS中利用了多種虛擬技術(shù),分別用來(lái)實(shí)現(xiàn)虛擬處理機(jī)、虛擬內(nèi)存、 虛擬外部設(shè)備和虛擬信道等。,在虛擬處理機(jī)技術(shù)中,是通過(guò)多道程序設(shè)計(jì)技術(shù),讓多道程序并發(fā)執(zhí)行的方法,來(lái)分時(shí)使用一臺(tái)處理機(jī)的。此時(shí), 雖然只有一臺(tái)處理機(jī),但它能同時(shí)為多個(gè)用戶(hù)服務(wù),使每個(gè)終端用戶(hù)都認(rèn)為是有一個(gè)CPU在專(zhuān)門(mén)為他服務(wù)。亦即, 利用多道程序設(shè)計(jì)技術(shù),把一臺(tái)物理上的CPU虛擬為多臺(tái)邏輯上的CPU,也稱(chēng)為虛擬處理機(jī),我們把用戶(hù)所感覺(jué)到的CPU稱(chēng)為虛擬處理器。,類(lèi)似地,可以通過(guò)虛擬存儲(chǔ)器技術(shù),將一臺(tái)機(jī)器的物理存儲(chǔ)器變?yōu)樘摂M存儲(chǔ)器,以便從邏輯上來(lái)擴(kuò)充存儲(chǔ)器的容量。此時(shí),雖然物理內(nèi)存的容量可能不大(如32 MB), 但它可以運(yùn)行比它大得多的用戶(hù)程序(如128 MB)。這使用戶(hù)所感覺(jué)到的內(nèi)存容量比實(shí)際內(nèi)存容量大得多,認(rèn)為該機(jī)器的內(nèi)存至少也有128 MB。當(dāng)然這時(shí)用戶(hù)所感覺(jué)到的內(nèi)存容量是虛的。我們把用戶(hù)所感覺(jué)到的存儲(chǔ)器稱(chēng)為虛擬存儲(chǔ)器。,我們還可以通過(guò)虛擬設(shè)備技術(shù),將一臺(tái)物理I/O設(shè)備虛擬為多臺(tái)邏輯上的I/O設(shè)備,并允許每個(gè)用戶(hù)占用一臺(tái)邏輯上的I/O設(shè)備,這樣便可使原來(lái)僅允許在一段時(shí)間內(nèi)由一個(gè)用戶(hù)訪(fǎng)問(wèn)的設(shè)備(即臨界資源),變?yōu)樵谝欢螘r(shí)間內(nèi)允許多個(gè)用戶(hù)同時(shí)訪(fǎng)問(wèn)的共享設(shè)備。例如,原來(lái)的打印機(jī)屬于臨界資源,而通過(guò)虛擬設(shè)備技術(shù),可以把它變?yōu)槎嗯_(tái)邏輯上的打印機(jī),供多個(gè)用戶(hù)“同時(shí)”打印。此外,也可以把一條物理信道虛擬為多條邏輯信道(虛信道)。在操作系統(tǒng)中,虛擬的實(shí)現(xiàn)主要是通過(guò)分時(shí)使用的方法。顯然,如果n是某物理設(shè)備所對(duì)應(yīng)的虛擬的邏輯設(shè)備數(shù),則虛擬設(shè)備的平均速度必然是物理設(shè)備速度的1/n。,1.3.4 異步性(Asynchronism),在多道程序環(huán)境下,允許多個(gè)進(jìn)程并發(fā)執(zhí)行, 但只有進(jìn)程在獲得所需的資源后方能執(zhí)行。在單處理機(jī)環(huán)境下,由于系統(tǒng)中只有一個(gè)處理機(jī),因而每次只允許一個(gè)進(jìn)程執(zhí)行,其余進(jìn)程只能等待。當(dāng)正在執(zhí)行的進(jìn)程提出某種資源要求時(shí),如打印請(qǐng)求,而此時(shí)打印機(jī)正在為其它某進(jìn)程打印,由于打印機(jī)屬于臨界資源,因此正在執(zhí)行的進(jìn)程必須等待,且放棄處理機(jī),直到打印機(jī)空閑,并再次把處理機(jī)分配給該進(jìn)程時(shí),該進(jìn)程方能繼續(xù)執(zhí)行。可見(jiàn),由于資源等因素的限制,使進(jìn)程的執(zhí)行通常都不是“一氣呵成”,而是以“停停走走”的方式運(yùn)行。,內(nèi)存中的每個(gè)進(jìn)程在何時(shí)能獲得處理機(jī)運(yùn)行,何時(shí)又因提出某種資源請(qǐng)求而暫停,以及進(jìn)程以怎樣的速度向前推進(jìn),每道程序總共需多少時(shí)間才能完成,等等,都是不可預(yù)知的。由于各用戶(hù)程序性能的不同,比如,有的側(cè)重于計(jì)算而較少需要I/O;而又有的程序其計(jì)算少而I/O多,這樣,很可能是先進(jìn)入內(nèi)存的作業(yè)后完成; 而后進(jìn)入內(nèi)存的作業(yè)先完成?;蛘哒f(shuō),進(jìn)程是以人們不可預(yù)知的速度向前推進(jìn),此即進(jìn)程的異步性。盡管如此,但只要運(yùn)行環(huán)境相同,作業(yè)經(jīng)多次運(yùn)行,都會(huì)獲得完全相同的結(jié)果。因此,異步運(yùn)行方式是允許的,是操作系統(tǒng)的一個(gè)重要特征。,1.4 操作系統(tǒng)的主要功能,1.4.1 處理機(jī)管理功能,1. 進(jìn)程控制 在傳統(tǒng)的多道程序環(huán)境下,要使作業(yè)運(yùn)行,必須先為它創(chuàng)建一個(gè)或幾個(gè)進(jìn)程,并為之分配必要的資源。當(dāng)進(jìn)程運(yùn)行結(jié)束時(shí),立即撤消該進(jìn)程,以便能及時(shí)回收該進(jìn)程所占用的各類(lèi)資源。進(jìn)程控制的主要功能是為作業(yè)創(chuàng)建進(jìn)程、撤消已結(jié)束的進(jìn)程,以及控制進(jìn)程在運(yùn)行過(guò)程中的狀態(tài)轉(zhuǎn)換。 在現(xiàn)代OS中,進(jìn)程控制還應(yīng)具有為一個(gè)進(jìn)程創(chuàng)建若干個(gè)線(xiàn)程的功能和撤消(終止)已完成任務(wù)的線(xiàn)程的功能。,2. 進(jìn)程同步 為使多個(gè)進(jìn)程能有條不紊地運(yùn)行,系統(tǒng)中必須設(shè)置進(jìn)程同步機(jī)制。進(jìn)程同步的主要任務(wù)是為多個(gè)進(jìn)程(含線(xiàn)程)的運(yùn)行進(jìn)行協(xié)調(diào)。有兩種協(xié)調(diào)方式: 進(jìn)程互斥方式, 這是指諸進(jìn)程(線(xiàn)程)在對(duì)臨界資源進(jìn)行訪(fǎng)問(wèn)時(shí), 應(yīng)采用互斥方式; 進(jìn)程同步方式,指在相互合作去完成共同任務(wù)的諸進(jìn)程(線(xiàn)程)間,由同步機(jī)構(gòu)對(duì)它們的執(zhí)行次序加以協(xié)調(diào)。 為了實(shí)現(xiàn)進(jìn)程同步,系統(tǒng)中必須設(shè)置進(jìn)程同步機(jī)制。最簡(jiǎn)單的用于實(shí)現(xiàn)進(jìn)程互斥的機(jī)制,是為每一個(gè)臨界資源配置一把鎖W,當(dāng)鎖打開(kāi)時(shí),進(jìn)程(線(xiàn)程)可以對(duì)該臨界資源進(jìn)行訪(fǎng)問(wèn);而當(dāng)鎖關(guān)上時(shí),則禁止進(jìn)程(線(xiàn)程)訪(fǎng)問(wèn)該臨界資源。,3. 進(jìn)程通信 在多道程序環(huán)境下,為了加速應(yīng)用程序的運(yùn)行,應(yīng)在系統(tǒng)中建立多個(gè)進(jìn)程,并且再為一個(gè)進(jìn)程建立若干個(gè)線(xiàn)程,由這些進(jìn)程(線(xiàn)程)相互合作去完成一個(gè)共同的任務(wù)。而在這些進(jìn)程(線(xiàn)程)之間,又往往需要交換信息。例如,有三個(gè)相互合作的進(jìn)程, 它們是輸入進(jìn)程、計(jì)算進(jìn)程和打印進(jìn)程。輸入進(jìn)程負(fù)責(zé)將所輸入的數(shù)據(jù)傳送給計(jì)算進(jìn)程;計(jì)算進(jìn)程利用輸入數(shù)據(jù)進(jìn)行計(jì)算, 并把計(jì)算結(jié)果傳送給打印進(jìn)程;最后,由打印進(jìn)程把計(jì)算結(jié)果打印出來(lái)。進(jìn)程通信的任務(wù)就是用來(lái)實(shí)現(xiàn)在相互合作的進(jìn)程之間的信息交換。 當(dāng)相互合作的進(jìn)程(線(xiàn)程)處于同一計(jì)算機(jī)系統(tǒng)時(shí),通常在它們之前是采用直接通信方式,即由源進(jìn)程利用發(fā)送命令直接將消息(message)掛到目標(biāo)進(jìn)程的消息隊(duì)列上,以后由目標(biāo)進(jìn)程利用接收命令從其消息隊(duì)列中取出消息。,4. 調(diào)度 在后備隊(duì)列上等待的每個(gè)作業(yè),通常都要經(jīng)過(guò)調(diào)度才能執(zhí)行。在傳統(tǒng)的操作系統(tǒng)中,包括作業(yè)調(diào)度和進(jìn)程調(diào)度兩步。作業(yè)調(diào)度的基本任務(wù),是從后備隊(duì)列中按照一定的算法,選擇出若干個(gè)作業(yè),為它們分配其必需的資源(首先是分配內(nèi)存)。 在將它們調(diào)入內(nèi)存后,便分別為它們建立進(jìn)程,使它們都成為可能獲得處理機(jī)的就緒進(jìn)程,并按照一定的算法將它們插入就緒隊(duì)列。而進(jìn)程調(diào)度的任務(wù),則是從進(jìn)程的就緒隊(duì)列中選出一新進(jìn)程,把處理機(jī)分配給它,并為它設(shè)置運(yùn)行現(xiàn)場(chǎng), 使進(jìn)程投入執(zhí)行。值得提出的是,在多線(xiàn)程O(píng)S中,通常是把線(xiàn)程作為獨(dú)立運(yùn)行和分配處理機(jī)的基本單位,為此,須把就緒線(xiàn)程排成一個(gè)隊(duì)列,每次調(diào)度時(shí),是從就緒線(xiàn)程隊(duì)列中選出一個(gè)線(xiàn)程,把處理機(jī)分配給它。,1.4.2 存儲(chǔ)器管理功能,1. 內(nèi)存分配,OS在實(shí)現(xiàn)內(nèi)存分配時(shí),可采取靜態(tài)和動(dòng)態(tài)兩種方式。在靜態(tài)分配方式中,每個(gè)作業(yè)的內(nèi)存空間是在作業(yè)裝入時(shí)確定的;在作業(yè)裝入后的整個(gè)運(yùn)行期間, 不允許該作業(yè)再申請(qǐng)新的內(nèi)存空間,也不允許作業(yè)在內(nèi)存中“移動(dòng)”; 在動(dòng)態(tài)分配方式中,每個(gè)作業(yè)所要求的基本內(nèi)存空間, 也是在裝入時(shí)確定的,但允許作業(yè)在運(yùn)行過(guò)程中,繼續(xù)申請(qǐng)新的附加內(nèi)存空間,以適應(yīng)程序和數(shù)據(jù)的動(dòng)態(tài)增漲,也允許作業(yè)在內(nèi)存中“移動(dòng)”。,為了實(shí)現(xiàn)內(nèi)存分配,在內(nèi)存分配的機(jī)制中應(yīng)具有這樣的結(jié)構(gòu)和功能: 內(nèi)存分配數(shù)據(jù)結(jié)構(gòu), 該結(jié)構(gòu)用于記錄內(nèi)存空間的使用情況, 作為內(nèi)存分配的依據(jù); 內(nèi)存分配功能,系統(tǒng)按照一定的內(nèi)存分配算法, 為用戶(hù)程序分配內(nèi)存空間; 內(nèi)存回收功能,系統(tǒng)對(duì)于用戶(hù)不再需要的內(nèi)存,通過(guò)用戶(hù)的釋放請(qǐng)求,去完成系統(tǒng)的回收功能。,2. 內(nèi)存保護(hù) 內(nèi)存保護(hù)的主要任務(wù),是確保每道用戶(hù)程序都只在自己的內(nèi)存空間內(nèi)運(yùn)行,彼此互不干擾。 為了確保每道程序都只在自己的內(nèi)存區(qū)中運(yùn)行,必須設(shè)置內(nèi)存保護(hù)機(jī)制。一種比較簡(jiǎn)單的內(nèi)存保護(hù)機(jī)制,是設(shè)置兩個(gè)界限寄存器,分別用于存放正在執(zhí)行程序的上界和下界。系統(tǒng)須對(duì)每條指令所要訪(fǎng)問(wèn)的地址進(jìn)行檢查,如果發(fā)生越界,便發(fā)出越界中斷請(qǐng)求,以停止該程序的執(zhí)行。如果這種檢查完全用軟件實(shí)現(xiàn),則每執(zhí)行一條指令,便須增加若干條指令去進(jìn)行越界檢查,這將顯著降低程序的運(yùn)行速度。因此,越界檢查都由硬件實(shí)現(xiàn)。當(dāng)然, 對(duì)發(fā)生越界后的處理, 還須與軟件配合來(lái)完成。,3. 地址映射 一個(gè)應(yīng)用程序(源程序)經(jīng)編譯后,通常會(huì)形成若干個(gè)目標(biāo)程序;這些目標(biāo)程序再經(jīng)過(guò)鏈接便形成了可裝入程序。這些程序的地址都是從“0”開(kāi)始的,程序中的其它地址都是相對(duì)于起始地址計(jì)算的; 由這些地址所形成的地址范圍稱(chēng)為“地址空間”, 其中的地址稱(chēng)為“邏輯地址”或“相對(duì)地址”。此外,由內(nèi)存中的一系列單元所限定的地址范圍稱(chēng)為“內(nèi)存空間”, 其中的地址稱(chēng)為“物理地址”。 在多道程序環(huán)境下,每道程序不可能都從“0”地址開(kāi)始裝入(內(nèi)存), 這就致使地址空間內(nèi)的邏輯地址和內(nèi)存空間中的物理地址不相一致。使程序能正確運(yùn)行,存儲(chǔ)器管理必須提供地址映射功能,以將地址空間中的邏輯地址轉(zhuǎn)換為內(nèi)存空間中與之對(duì)應(yīng)的物理地址。該功能應(yīng)在硬件的支持下完成。,4. 內(nèi)存擴(kuò)充 存儲(chǔ)器管理中的內(nèi)存擴(kuò)充任務(wù),并非是去擴(kuò)大物理內(nèi)存的容量,而是借助于虛擬存儲(chǔ)技術(shù),從邏輯上去擴(kuò)充內(nèi)存容量,使用戶(hù)所感覺(jué)到的內(nèi)存容量比實(shí)際內(nèi)存容量大得多; 或者是讓更多的用戶(hù)程序能并發(fā)運(yùn)行。這樣,既滿(mǎn)足了用戶(hù)的需要,改善了系統(tǒng)的性能,又基本上不增加硬件投資。 為了能在邏輯上擴(kuò)充內(nèi)存,系統(tǒng)必須具有內(nèi)存擴(kuò)充機(jī)制, 用于實(shí)現(xiàn)下述各功能: (1) 請(qǐng)求調(diào)入功能。 (2) 置換功能。,1.4.3 設(shè)備管理功能 設(shè)備管理用于管理計(jì)算機(jī)系統(tǒng)中所有的外圍設(shè)備, 而設(shè)備管理的主要任務(wù)是,完成用戶(hù)進(jìn)程提出的I/O請(qǐng)求; 為用戶(hù)進(jìn)程分配其所需的I/O設(shè)備;提高CPU和I/O設(shè)備的利用率;提高I/O速度;方便用戶(hù)使用I/O設(shè)備。為實(shí)現(xiàn)上述任務(wù),設(shè)備管理應(yīng)具有緩沖管理、設(shè)備分配和設(shè)備處理,以及虛擬設(shè)備等功能。,1. 緩沖管理 CPU運(yùn)行的高速性和I/O低速性間的矛盾自計(jì)算機(jī)誕生時(shí)起便已存在。 而隨著CPU速度迅速、大幅度的提高,使得此矛盾更為突出,嚴(yán)重降低了CPU的利用率。如果在I/O設(shè)備和CPU之間引入緩沖,則可有效地緩和CPU和I/O設(shè)備速度不匹配的矛盾,提高CPU的利用率,進(jìn)而提高系統(tǒng)吞吐量。 因此,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中, 都毫無(wú)例外地在內(nèi)存中設(shè)置了緩沖區(qū),而且還可通過(guò)增加緩沖區(qū)容量的方法,來(lái)改善系統(tǒng)的性能。 最常見(jiàn)的緩沖區(qū)機(jī)制有單緩沖機(jī)制、能實(shí)現(xiàn)雙向同時(shí)傳送數(shù)據(jù)的雙緩沖機(jī)制,以及能供多個(gè)設(shè)備同時(shí)使用的公用緩沖池機(jī)制。,2. 設(shè)備分配 設(shè)備分配的基本任務(wù),是根據(jù)用戶(hù)進(jìn)程的I/O請(qǐng)求、系統(tǒng)的現(xiàn)有資源情況以及按照某種設(shè)備分配策略,為之分配其所需的設(shè)備。如果在I/O設(shè)備和CPU之間,還存在著設(shè)備控制器和I/O通道時(shí),還須為分配出去的設(shè)備分配相應(yīng)的控制器和通道。 為了實(shí)現(xiàn)設(shè)備分配,系統(tǒng)中應(yīng)設(shè)置設(shè)備控制表、控制器控制表等數(shù)據(jù)結(jié)構(gòu),用于記錄設(shè)備及控制器的標(biāo)識(shí)符和狀態(tài)。據(jù)這些表格可以了解指定設(shè)備當(dāng)前是否可用,是否忙碌,以供進(jìn)行設(shè)備分配時(shí)參考。在進(jìn)行設(shè)備分配時(shí),應(yīng)針對(duì)不同的設(shè)備類(lèi)型而采用不同的設(shè)備分配方式。對(duì)于獨(dú)占設(shè)備(臨界資源)的分配,還應(yīng)考慮到該設(shè)備被分配出去后,系統(tǒng)是否安全。 設(shè)備使用完后,還應(yīng)立即由系統(tǒng)回收。,3. 設(shè)備處理 設(shè)備處理程序又稱(chēng)為設(shè)備驅(qū)動(dòng)程序。其基本任務(wù)是用于實(shí)現(xiàn)CPU和設(shè)備控制器之間的通信,即由CPU向設(shè)備控制器發(fā)出I/O命令,要求它完成指定的I/O操作;反之由CPU接收從控制器發(fā)來(lái)的中斷請(qǐng)求,并給予迅速的響應(yīng)和相應(yīng)的處理。 處理過(guò)程是:設(shè)備處理程序首先檢查I/O請(qǐng)求的合法性,了解設(shè)備狀態(tài)是否是空閑的,了解有關(guān)的傳遞參數(shù)及設(shè)置設(shè)備的工作方式。然后,便向設(shè)備控制器發(fā)出I/O命令,啟動(dòng)I/O設(shè)備去完成指定的I/O操作。設(shè)備驅(qū)動(dòng)程序還應(yīng)能及時(shí)響應(yīng)由控制器發(fā)來(lái)的中斷請(qǐng)求,并根據(jù)該中斷請(qǐng)求的類(lèi)型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。對(duì)于設(shè)置了通道的計(jì)算機(jī)系統(tǒng), 設(shè)備處理程序還應(yīng)能根據(jù)用戶(hù)的I/O請(qǐng)求,自動(dòng)地構(gòu)成通道程序。,1.4.4 文件管理功能,1. 文件存儲(chǔ)空間的管理 由文件系統(tǒng)對(duì)諸多文件及文件的存儲(chǔ)空間,實(shí)施統(tǒng)一的管理。其主要任務(wù)是為每個(gè)文件分配必要的外存空間,提高外存的利用率,并能有助于提高文件系統(tǒng)的運(yùn)行速度。 為此,系統(tǒng)應(yīng)設(shè)置相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用于記錄文件存儲(chǔ)空間的使用情況,以供分配存儲(chǔ)空間時(shí)參考;系統(tǒng)還應(yīng)具有對(duì)存儲(chǔ)空間進(jìn)行分配和回收的功能。為了提高存儲(chǔ)空間的利用率,對(duì)存儲(chǔ)空間的分配,通常是采用離散分配方式,以減少外存零頭,并以盤(pán)塊為基本分配單位。盤(pán)塊的大小通常為512 B8 KB。,2. 目錄管理 為了使用戶(hù)能方便地在外存上找到自己所需的文件,通常由系統(tǒng)為每個(gè)文件建立一個(gè)目錄項(xiàng)。目錄項(xiàng)包括文件名、文件屬性、文件在磁盤(pán)上的物理位置等。由若干個(gè)目錄項(xiàng)又可構(gòu)成一個(gè)目錄文件。目錄管理的主要任務(wù), 是為每個(gè)文件建立其目錄項(xiàng),并對(duì)眾多的目錄項(xiàng)加以有效的組織,以實(shí)現(xiàn)方便的按名存取。即用戶(hù)只須提供文件名, 即可對(duì)該文件進(jìn)行存取。其次,目錄管理還應(yīng)能實(shí)現(xiàn)文件共享,這樣,只須在外存上保留一份該共享文件的副本。此外,還應(yīng)能提供快速的目錄查詢(xún)手段,以提高對(duì)文件的檢索速度。,3. 文件的讀/寫(xiě)管理和保護(hù) (1) 文件的讀/寫(xiě)管理。該功能是根據(jù)用戶(hù)的請(qǐng)求,從外存中讀取數(shù)據(jù);或?qū)?shù)據(jù)寫(xiě)入外存。在進(jìn)行文件讀(寫(xiě))時(shí),系統(tǒng)先根據(jù)用戶(hù)給出的文件名,去檢索文件目錄,從中獲得文件在外存中的位置。然后,利用文件讀(寫(xiě))指針,對(duì)文件進(jìn)行讀(寫(xiě))。一旦讀(寫(xiě))完成,便修改讀(寫(xiě))指針,為下一次讀(寫(xiě))做好準(zhǔn)備。由于讀和寫(xiě)操作不會(huì)同時(shí)進(jìn)行,故可合用一個(gè)讀/寫(xiě)指針。 (2) 文件保護(hù)。 防止未經(jīng)核準(zhǔn)的用戶(hù)存取文件; 防止冒名頂替存取文件; 防止以不正確的方式使用文件。,1.4.5 用戶(hù)接口,1. 命令接口,(1) 聯(lián)機(jī)用戶(hù)接口。這是為聯(lián)機(jī)用戶(hù)提供的,它由一組鍵盤(pán)操作命令及命令解釋程序所組成。當(dāng)用戶(hù)在終端或控制臺(tái)上每鍵入一條命令后,系統(tǒng)便立即轉(zhuǎn)入命令解釋程序,對(duì)該命令加以解釋并執(zhí)行該命令。在完成指定功能后,控制又返回到終端或控制臺(tái)上,等待用戶(hù)鍵入下一條命令。這樣,用戶(hù)可通過(guò)先后鍵入不同命令的方式,來(lái)實(shí)現(xiàn)對(duì)作業(yè)的控制,直至作業(yè)完成。,(2) 脫機(jī)用戶(hù)接口。該接口是為批處理作業(yè)的用戶(hù)提供的,故也稱(chēng)為批處理用戶(hù)接口。該接口由一組作業(yè)控制語(yǔ)言JCL組成。批處理作業(yè)的用戶(hù)不能直接與自己的作業(yè)交互作用,只能委托系統(tǒng)代替用戶(hù)對(duì)作業(yè)進(jìn)行控制和干預(yù)。這里的作業(yè)控制語(yǔ)言JCL便是提供給批處理作業(yè)用戶(hù)的、為實(shí)現(xiàn)所需功能而委托系統(tǒng)代為控制的一種語(yǔ)言。用戶(hù)用JCL把需要對(duì)作業(yè)進(jìn)行的控制和干預(yù),事先寫(xiě)在作業(yè)說(shuō)明書(shū)上,然后將作業(yè)連同作業(yè)說(shuō)明書(shū)一起提供給系統(tǒng)。當(dāng)系統(tǒng)調(diào)度到該作業(yè)運(yùn)行時(shí),又調(diào)用命令解釋程序,對(duì)作業(yè)說(shuō)明書(shū)上的命令,逐條地解釋執(zhí)行。如果作業(yè)在執(zhí)行過(guò)程中出現(xiàn)異?,F(xiàn)象,系統(tǒng)也將根據(jù)作業(yè)說(shuō)明書(shū)上的指示進(jìn)行干預(yù)。這樣,作業(yè)一直在作業(yè)說(shuō)明書(shū)的控制下運(yùn)行,直至遇到作業(yè)結(jié)束語(yǔ)句時(shí),系統(tǒng)才停止該作業(yè)的運(yùn)行。,2. 程序接口 該接口是為用戶(hù)程序在執(zhí)行中訪(fǎng)問(wèn)系統(tǒng)資源而設(shè)置的,是用戶(hù)程序取得操作系統(tǒng)服務(wù)的惟一途徑。它是由一組系統(tǒng)調(diào)用組成,每一個(gè)系統(tǒng)調(diào)用都是一個(gè)能完成特定功能的子程序,每當(dāng)應(yīng)用程序要求OS提供某種服務(wù)(功能)時(shí),便調(diào)用具有相應(yīng)功能的系統(tǒng)調(diào)用。早期的系統(tǒng)調(diào)用都是用匯編語(yǔ)言提供的,只有在用匯編語(yǔ)言書(shū)寫(xiě)的程序中,才能直接使用系統(tǒng)調(diào)用;但在高級(jí)語(yǔ)言以及C語(yǔ)言中,往往提供了與各系統(tǒng)調(diào)用一一對(duì)應(yīng)的庫(kù)函數(shù),這樣,應(yīng)用程序便可通過(guò)調(diào)用對(duì)應(yīng)的庫(kù)函數(shù)來(lái)使用系統(tǒng)調(diào)用。但在近幾年所推出的操作系統(tǒng)中,如UNIX、OS/2版本中,其系統(tǒng)調(diào)用本身已經(jīng)采用C語(yǔ)言編寫(xiě),并以函數(shù)形式提供,故在用C語(yǔ)言編制的程序中, 可直接使用系統(tǒng)調(diào)用。,3. 圖形接口 用戶(hù)雖然可以通過(guò)聯(lián)機(jī)用戶(hù)接口來(lái)取得OS的服務(wù),但這時(shí)要求用戶(hù)能熟記各種命令的名字和格式,并嚴(yán)格按照規(guī)定的格式輸入命令,這既不方便又花時(shí)間,于是,圖形用戶(hù)接口便應(yīng)運(yùn)而生。圖形用戶(hù)接口采用了圖形化的操作界面, 用非常容易識(shí)別的各種圖標(biāo)(icon)來(lái)將系統(tǒng)的各項(xiàng)功能、各種應(yīng)用程序和文件,直觀(guān)、逼真地表示出來(lái)。用戶(hù)可用鼠標(biāo)或通過(guò)菜單和對(duì)話(huà)框,來(lái)完成對(duì)應(yīng)用程序和文件的操作。此時(shí)用戶(hù)已完全不必像使用命令接口那樣去記住命令名及格式,從而把用戶(hù)從繁瑣且單調(diào)的操作中解脫出來(lái)。,1.5 操作系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),1.5.1 軟件工程的基本概念,1. 軟件的含義 所謂軟件,是指當(dāng)計(jì)算機(jī)運(yùn)行時(shí),能提供所要求的功能和性能的指令和程序的集合,該程序能夠正確地處理信息的數(shù)據(jù)結(jié)構(gòu);作為規(guī)范軟件,還應(yīng)具有描述程序功能需求以及程序如何操作使用的文檔。如果說(shuō),硬件是物理部件, 那么,軟件則是一種邏輯部件,它具有與硬件完全不同的特點(diǎn)。,2. 軟件工程的含義 軟件工程是指運(yùn)用系統(tǒng)的、規(guī)范的和可定量的方法,來(lái)開(kāi)發(fā)、運(yùn)行和維護(hù)軟件;或者說(shuō),是采用工程的概念、 原理、 技術(shù)和方法,來(lái)開(kāi)發(fā)與維護(hù)軟件, 其目的是為了解決在軟件開(kāi)發(fā)中所出現(xiàn)的編程隨意、軟件質(zhì)量不可保證以及維護(hù)困難等問(wèn)題。,1.5.2 傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu) 操作系統(tǒng)是一個(gè)十分復(fù)雜的大型軟件。為了控制該軟件的復(fù)雜性,在開(kāi)發(fā)OS時(shí),先后引入了分解、模塊化、 抽象和隱蔽等方法。開(kāi)發(fā)方法的不斷發(fā)展,促進(jìn)了OS結(jié)構(gòu)的更新?lián)Q代。這里,我們把第一代至第三代的OS結(jié)構(gòu), 稱(chēng)為傳統(tǒng)的OS結(jié)構(gòu),而把微內(nèi)核的OS結(jié)構(gòu)稱(chēng)為現(xiàn)代OS結(jié)構(gòu)。,1. 無(wú)結(jié)構(gòu)操作系統(tǒng) 在早期開(kāi)發(fā)操作系統(tǒng)時(shí),設(shè)計(jì)者只是把他的注意力放在功能的實(shí)現(xiàn)和獲得高的效率上,缺乏首尾一致的設(shè)計(jì)思想。 此時(shí)的OS是為數(shù)眾多的一組過(guò)程的集合,各過(guò)程之間可以相互調(diào)用,在操作系統(tǒng)內(nèi)部不存在任何結(jié)構(gòu),因此,這種OS是無(wú)結(jié)構(gòu)的,也有人把它稱(chēng)為整體系統(tǒng)結(jié)構(gòu)。 此時(shí)程序設(shè)計(jì)的技巧,只是如何編制緊湊的程序,以便于有效地利用內(nèi)存、對(duì)GOTO語(yǔ)句的使用不加任何限制,所設(shè)計(jì)出的操作系統(tǒng)既龐大又雜亂,缺乏清晰的程序結(jié)構(gòu)。這一方面會(huì)使所編制出的程序錯(cuò)誤很多,給調(diào)試工作帶來(lái)很多困難;另一方面也使程序難以閱讀和理解,增加了維護(hù)人員的負(fù)擔(dān)。,2. 模塊化OS結(jié)構(gòu) 1) 模塊化結(jié)構(gòu) 模塊化程序設(shè)計(jì)技術(shù),是最早(20世紀(jì)60年代)出現(xiàn)的一種程序設(shè)計(jì)技術(shù)。該技術(shù)是基于“分解”和“模塊化”原則來(lái)控制大型軟件的復(fù)雜度的。為使OS具有較清晰的結(jié)構(gòu),OS不再是由眾多的過(guò)程直接構(gòu)成,而是將OS按其功能劃分為若干個(gè)具有一定獨(dú)立性和大小的模塊。每個(gè)模塊具有某方面的管理功能,如進(jìn)程管理模塊、存儲(chǔ)器管理模塊、I/O設(shè)備管理模塊和文件管理模塊等,并規(guī)定好各模塊間的接口, 使各模塊之間能通過(guò)該接口實(shí)現(xiàn)交互,然后再進(jìn)一步將各模塊細(xì)分為若干個(gè)具有一定管理功能的子模塊,如把進(jìn)程管理模塊又分為進(jìn)程控制、 進(jìn)程同步、 進(jìn)程通信和進(jìn)程調(diào)度等子模塊, 同樣也要規(guī)定各子模塊之間的接口。若子模塊較大時(shí),再進(jìn)一步將它細(xì)分。圖 1-5 示出了由模塊、子模塊等組成的模塊化OS結(jié)構(gòu)。,圖 1-5 模塊化操作系統(tǒng)結(jié)構(gòu),2) 模塊化OS的優(yōu)缺點(diǎn) 提高了OS設(shè)計(jì)的正確性、 可理解性和可維護(hù)性。 (2) 增強(qiáng)了OS的可適應(yīng)性。 (3) 加速了OS的開(kāi)發(fā)過(guò)程。,模塊化結(jié)構(gòu)設(shè)計(jì)的缺點(diǎn)有二。首先,在開(kāi)始設(shè)計(jì)OS時(shí),對(duì)模塊的劃分及對(duì)接口的規(guī)定并不精確, 而且還可能存在錯(cuò)誤,因而很難保證按此規(guī)定所設(shè)計(jì)出的模塊會(huì)完全正確, 這將使在把這些模塊裝配成OS時(shí)發(fā)生困難;其次,從功能觀(guān)點(diǎn)來(lái)劃分模塊時(shí),未能將共享資源和獨(dú)占資源加以區(qū)別; 由于管理上的差異,又會(huì)使模塊間存在著復(fù)雜的依賴(lài)關(guān)系使OS結(jié)構(gòu)變得不清晰。,3. 分層式OS結(jié)構(gòu),1) 有序分層的基本概念 從改進(jìn)設(shè)計(jì)方式上說(shuō),應(yīng)使我們的每一步設(shè)計(jì)都是建立在可靠的基礎(chǔ)上。我們可以從物理機(jī)器開(kāi)始, 在其上面先添加一層具有一定功能的軟件A1, 由于A(yíng)1是建立在完全確定的物理機(jī)器上的,在經(jīng)過(guò)精心設(shè)計(jì)和幾乎是窮盡無(wú)遺的測(cè)試后,可以認(rèn)為A1是正確的;然后再在A(yíng)1上添加一層新軟件A2,如此一層一層地自底向上增添軟件層,每一層都實(shí)現(xiàn)若干功能,最后總能構(gòu)成一個(gè)能滿(mǎn)足需要的OS。,分層式結(jié)構(gòu)設(shè)計(jì)的基本原則是:每一層都僅使用其底層所提供的功能和服務(wù),這樣可使系統(tǒng)的調(diào)試和驗(yàn)證都變得容易, 例如,在調(diào)試第一層軟件A1時(shí),由于它只使用了物理機(jī)器提供的功能,因此它將與其所有的高層軟件A2,An無(wú)關(guān); 同樣在調(diào)試A2時(shí),它也只使用了A1和物理機(jī)器所提供的功能, 而與其高層軟件A3, ,An無(wú)關(guān),這樣,一旦發(fā)現(xiàn)Ai出現(xiàn)錯(cuò)誤時(shí),通常該錯(cuò)誤只會(huì)局限于A(yíng)i,因?yàn)樗c所有其高層的軟件無(wú)關(guān),而Ai層以下的各層軟件,又都經(jīng)過(guò)仔細(xì)的調(diào)試。,2) 層次的設(shè)置 (1) 程序嵌套。 通常OS的每個(gè)功能的實(shí)現(xiàn), 并非是只用一個(gè)程序便能完成的,而是要經(jīng)由若干個(gè)軟件層才有可能完成。因此在劃分OS層次時(shí),首先要考慮在實(shí)現(xiàn)OS 的每個(gè)功能時(shí)所形成的程序嵌套。例如,作業(yè)調(diào)度模塊須調(diào)用進(jìn)程控制模塊;在為某作業(yè)創(chuàng)建一進(jìn)程時(shí),進(jìn)程控制模塊又須調(diào)用內(nèi)存管理模塊為新進(jìn)程分配內(nèi)存空間,可見(jiàn),進(jìn)程控制模塊應(yīng)在內(nèi)存管理模塊之上; 而作業(yè)調(diào)度模塊又應(yīng)在更高層。,(2) 運(yùn)行頻率。在分層結(jié)構(gòu)中,各層次軟件的運(yùn)行速度是不同的,因?yàn)锳1層軟件能直接在物理機(jī)器上運(yùn)行, 故它有最高的運(yùn)行速度。隨著層次的增高,其相應(yīng)軟件的運(yùn)行速度就隨之下降,因而An層軟件的運(yùn)行速度最低。 為了提高OS的運(yùn)行效率,應(yīng)該將那些經(jīng)常活躍的模塊放在最接近硬件的A1層,如時(shí)鐘管理、進(jìn)程調(diào)度,通常都放在A(yíng)1層。,(3) 公用模塊。應(yīng)把供多種資源管程程序調(diào)用的公用模塊, 設(shè)置在最低層,不然,會(huì)使比它低的層次模塊由于無(wú)法調(diào)用它而須另外配置相應(yīng)功能的模塊。例如,用于對(duì)信號(hào)量進(jìn)行操作的原語(yǔ)Signal和Wait。 (4) 用戶(hù)接口。為方便用戶(hù)(程序),OS向用戶(hù)提供了“用戶(hù)與OS的接口”,如命令接口、程序接口以及圖形用戶(hù)接口。這些接口應(yīng)設(shè)置在OS的最高層,直接提供給用戶(hù)使用。,1.5.3 微內(nèi)核OS結(jié)構(gòu),1. 客戶(hù)/服務(wù)器模式(Client-Server Model) 1) 基本概念 為了提高OS的靈活性和可擴(kuò)充性而將OS劃分為兩部分, 一部分是用于提供各種服務(wù)的一組服務(wù)器(進(jìn)程),如用于提供進(jìn)程管理的進(jìn)程服務(wù)器、提供存儲(chǔ)器管理的存儲(chǔ)器服務(wù)器提供文件管理的文件服務(wù)器等,所有這些服務(wù)器(進(jìn)程)都運(yùn)行在用戶(hù)態(tài)。 當(dāng)有一用戶(hù)進(jìn)程(現(xiàn)在稱(chēng)為客戶(hù)進(jìn)程)要求讀文件的一個(gè)盤(pán)塊時(shí),該進(jìn)程便向文件服務(wù)器(進(jìn)程)發(fā)出一個(gè)請(qǐng)求;當(dāng)服務(wù)器完成了該客戶(hù)的請(qǐng)求后,便給該客戶(hù)回送一個(gè)響應(yīng)。 操作系統(tǒng)的另一部分是內(nèi)核,用來(lái)處理客戶(hù)和服務(wù)器之間的通信, 即由內(nèi)核來(lái)接收客戶(hù)的請(qǐng)求,再將該請(qǐng)求送至相應(yīng)的服務(wù)器;同時(shí)它也接收服務(wù)器的應(yīng)答, 并將此應(yīng)答回送給請(qǐng)求客戶(hù)。 此外,在內(nèi)核中還應(yīng)具有其它一些機(jī)構(gòu),用于實(shí)現(xiàn)與硬件緊密相關(guān)的和一些較基本的功能。,圖 1-6 單機(jī)環(huán)境下的客戶(hù)/服務(wù)器模式,2) 客戶(hù)/服務(wù)器模式的優(yōu)點(diǎn) 提高了系統(tǒng)的靈活性和可擴(kuò)充性。 (2) 提高了OS的可靠性。 (3) 可運(yùn)行于分布式系統(tǒng)中。,2. 面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)(Object-Orientated Programming),1) 面向?qū)ο蠹夹g(shù)的基本概念 面向?qū)ο蠹夹g(shù)是20世紀(jì)80年代初提出并很快流行起來(lái)的。該技術(shù)是基于“抽象”和“隱蔽”原則來(lái)控制大型軟件的復(fù)雜度的。所謂對(duì)象,是指在現(xiàn)實(shí)世界中具有相同屬性、服從相同規(guī)則的一系列事物的抽象,而把其中的具體事物稱(chēng)為對(duì)象的實(shí)例。OS中的各類(lèi)實(shí)體如進(jìn)程、線(xiàn)程、消息、存儲(chǔ)器等,都使用了對(duì)象這一概念,相應(yīng)地,便有進(jìn)程對(duì)象線(xiàn)程對(duì)象、 存儲(chǔ)器對(duì)象等。,圖 1-7 一個(gè)對(duì)象的示意圖,2) 面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn) (1) 可修改性和可擴(kuò)充性。由于隱蔽了表示實(shí)體的數(shù)據(jù)和操作,因而可以改變對(duì)象的表示而不會(huì)影響其它部分, 從而可以方便地改變老的對(duì)象和增加新的對(duì)象。 (2) 繼承性。繼承性是面向?qū)ο蠹夹g(shù)所具有的重要特性。繼承性是指子對(duì)象可以繼承父對(duì)象的屬性,這樣,在創(chuàng)建一個(gè)新的對(duì)象時(shí), 便可減少大量的時(shí)空開(kāi)銷(xiāo)。 (3) 正確性和可靠性。由于對(duì)象是構(gòu)成操作系統(tǒng)的基本單元,可以獨(dú)立地對(duì)它進(jìn)行測(cè)試,這樣,比較易于保證其正確性和可靠性,從而比較容易保證整個(gè)系統(tǒng)的正確性和可靠性。,3. 微內(nèi)核技術(shù) 微內(nèi)核技術(shù)的引入,所謂微內(nèi)核技術(shù),是指精心設(shè)計(jì)的、能實(shí)現(xiàn)現(xiàn)代OS核心功能的小型內(nèi)核,它與一般的OS(程序)不同, 它更小更精煉,它不僅運(yùn)行在核心態(tài),而且開(kāi)機(jī)后常駐內(nèi)存, 它不會(huì)因內(nèi)存緊張而被換出內(nèi)存。微內(nèi)核并非是一個(gè)完整的OS, 而只是為構(gòu)建通用OS提供一個(gè)重要基礎(chǔ)。由于在微內(nèi)核OS結(jié)構(gòu)中,通常都采用了客戶(hù)/服務(wù)器模式,因此OS的大部分功能和服務(wù),都是由若干服務(wù)器來(lái)提供的, 如文件服務(wù)器、作業(yè)服務(wù)器和網(wǎng)絡(luò)服務(wù)器等。,2) 微內(nèi)核的基本功能 微內(nèi)核所提供的功能,通常都是一些最基本的功能,如進(jìn)程管理、存儲(chǔ)器管理、進(jìn)程間通信、 低級(jí)I/O功能。 (1) 進(jìn)程管理。 (2) 存儲(chǔ)器管理。 (3) 進(jìn)程通信管理。 (4) I/O設(shè)備管理。,第二章 進(jìn)程管理,2.1 進(jìn)程的基本概念 2.2 進(jìn)程控制 2.3 進(jìn)程同步 2.4 經(jīng)典進(jìn)程的同步問(wèn)題 2.5 管程機(jī)制 2.6 進(jìn)程通信 2.7 線(xiàn)程,2.1 進(jìn)程的基本概念,2.1.1 程序的順序執(zhí)行及其特征,1. 程序的順序執(zhí)行 僅當(dāng)前一操作(程序段)執(zhí)行完后,才能執(zhí)行后繼操作。例如,在進(jìn)行計(jì)算時(shí),總須先輸入用戶(hù)的程序和數(shù)據(jù),然后進(jìn)行計(jì)算,最后才能打印計(jì)算結(jié)果。 S1: a=x+y; S2: b=a-5; S3: c=b+1;,圖 2-1 程序的順序執(zhí)行,2. 程序順序執(zhí)行時(shí)的特征,順序性: (2) 封閉性: (3) 可再現(xiàn)性:,2.1.2 前趨圖,前趨圖(Precedence Graph)是一個(gè)有向無(wú)循環(huán)圖,記為DAG(Directed Acyclic Graph),用于描述進(jìn)程之間執(zhí)行的前后關(guān)系。圖中的每個(gè)結(jié)點(diǎn)可用于描述一個(gè)程序段或進(jìn)程,乃至一條語(yǔ)句;結(jié)點(diǎn)間的有向邊則用于表示兩個(gè)結(jié)點(diǎn)之間存在的偏序(Partial Order)或前趨關(guān)系(Precedence Relation)“”。 =(Pi, Pj)|Pi must complete before Pj may start, 如果(Pi, Pj),可寫(xiě)成PiPj,稱(chēng)Pi是Pj的直接前趨,而稱(chēng)Pj是Pi的直接后繼。在前趨圖中,把沒(méi)有前趨的結(jié)點(diǎn)稱(chēng)為初始結(jié)點(diǎn)(Initial Node),把沒(méi)有后繼的結(jié)點(diǎn)稱(chēng)為終止結(jié)點(diǎn)(Final Node)。,每個(gè)結(jié)點(diǎn)還具有一個(gè)重量(Weight),用于表示該結(jié)點(diǎn)所含有的程序量或結(jié)點(diǎn)的執(zhí)行時(shí)間。,IiCiPi和S1S2S3,圖 2-2 前趨圖,對(duì)于圖 2-2(a)所示的前趨圖, 存在下述前趨關(guān)系:,P1P2, P1P3, P1P4, P2P5, P3P5, P4P6, P4P7, P5P8, P6P8, P7P9, P8P9 或表示為: P=P1, P2, P3, P4, P5, P6, P7, P8, P9 = (P1, P2), (P1, P3), (P1, P4), (P2, P5), (P3, P5), (P4, P6), (P4, P7), (P5, P8), (P6, P8), (P7, P9), (P8, P9) 應(yīng)當(dāng)注意,前趨圖中必須不存在循環(huán),但在圖2-2(b)中卻有著下述的前趨關(guān)系: S2S3, S3S2,2.1.3 程序的并發(fā)執(zhí)行及其特征,1. 程序的并發(fā)執(zhí)行,圖 2-3 并發(fā)執(zhí)行時(shí)的前趨圖,在該例中存在下述前趨關(guān)系: IiCi,IiIi+1, CiPi, CiCi+1,PiPi+1 而Ii+1和Ci及Pi-1是重迭的,亦即在Pi-1和Ci以及Ii+1之間,可以并發(fā)執(zhí)行。 對(duì)于具有下述四條語(yǔ)句的程序段: S1: a=x+2 S2: b=y+4 S3: c=a+b S4: d=c+b,圖 2-4 四條語(yǔ)句的前趨關(guān)系,2. 程序并發(fā)執(zhí)行時(shí)的特征,間斷性 2) 失去封閉性 3) 不可再現(xiàn)性,例如,有兩個(gè)循環(huán)程序A和B,它們共享一個(gè)變量N。程序A每執(zhí)行一次時(shí),都要做N=N+1操作;程序B每執(zhí)行一次時(shí), 都要執(zhí)行Print(N)操作,然后再將N置成“0”。程序A和B以不同的速度運(yùn)行。 (1) N=N+1在Print(N)和N=0之前,此時(shí)得到的N值分別為n+1, n+1, 0。 (2) N=N+1在Print(N)和N=0之后,此時(shí)得到的N值分別為n, 0, 1。 (3) N=N+1在Print(N)和N=0之間,此時(shí)得到的N值分別為n, n+1, 0。,2.1.4 進(jìn)程的特征與狀態(tài),1. 進(jìn)程的特征和定義,結(jié)構(gòu)特征 2) 動(dòng)態(tài)性 3) 并發(fā)性 4) 獨(dú)立性 5) 異步性,較典型的進(jìn)程定義有: (1) 進(jìn)程是程序的一次執(zhí)行。 (2) 進(jìn)程是一個(gè)程序及其數(shù)據(jù)在處理機(jī)上順序執(zhí)行時(shí)所發(fā)生的活動(dòng)。 (3) 進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過(guò)程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。 在引入了進(jìn)程實(shí)體的概念后,我們可以把傳統(tǒng)OS中的進(jìn)程定義為:“進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過(guò)程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位”。,2. 進(jìn)程的三種基本狀態(tài),就緒(Ready)狀態(tài) 2) 執(zhí)行狀態(tài) 3) 阻塞狀態(tài),圖 2-5 進(jìn)程的三種基本狀態(tài)及其轉(zhuǎn)換,3. 掛起狀態(tài) 引入掛起狀態(tài)的原因 終端用戶(hù)的請(qǐng)求。 (2) 父進(jìn)程請(qǐng)求。 (3) 負(fù)荷調(diào)節(jié)的需要。 (4) 操作系統(tǒng)的需要。,2) 進(jìn)程狀態(tài)的轉(zhuǎn)換,活動(dòng)就緒靜止就緒。 (2) 活動(dòng)阻塞靜止阻塞。 (3) 靜止就緒活動(dòng)就緒。 (4) 靜止阻塞活動(dòng)阻塞。,圖 2-6 具有掛起狀態(tài)的進(jìn)程狀態(tài)圖,2.1.5 進(jìn)程控制塊,1. 進(jìn)程控制塊的作用,進(jìn)程控制塊的作用是使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(含數(shù)據(jù)),成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其它進(jìn)程并發(fā)執(zhí)行的進(jìn)程?;蛘哒f(shuō),OS是根據(jù)PCB來(lái)對(duì)并發(fā)執(zhí)行的進(jìn)程進(jìn)行控制和管理的。,2. 進(jìn)程控制塊中的信息,1) 進(jìn)程標(biāo)識(shí)符 進(jìn)程標(biāo)識(shí)符用于惟一地標(biāo)識(shí)一個(gè)進(jìn)程。一個(gè)進(jìn)程通常有兩種標(biāo)識(shí)符: (1) 內(nèi)部標(biāo)識(shí)符。在所有的操作系統(tǒng)中,都為每一個(gè)進(jìn) 程賦予一個(gè)惟一的數(shù)字標(biāo)識(shí)符,它通常是一個(gè)進(jìn)程的序號(hào)。 設(shè)置內(nèi)部標(biāo)識(shí)符主要是為了方便系統(tǒng)使用。 (2) 外部標(biāo)識(shí)符。它由創(chuàng)建者提供,通常是由字母、數(shù)字組成,往往是由用戶(hù)(進(jìn)程)在訪(fǎng)問(wèn)該進(jìn)程時(shí)使用。為了描述進(jìn)程的家族關(guān)系, 還應(yīng)設(shè)置父進(jìn)程標(biāo)識(shí)及子進(jìn)程標(biāo)識(shí)。此外,還可設(shè)置用戶(hù)標(biāo)識(shí),以指示擁有該進(jìn)程的用戶(hù)。,2) 處理機(jī)狀態(tài) 處理機(jī)狀態(tài)信息主要是由處理機(jī)的各種寄存器中的內(nèi)容組成的。 通用寄存器,又稱(chēng)為用戶(hù)可視寄存器,它們是用戶(hù)程序可以訪(fǎng)問(wèn)的,用于暫存信息, 在大多數(shù)處理機(jī)中,有 832 個(gè)通用寄存器,在RISC結(jié)構(gòu)的計(jì)算機(jī)中可超過(guò) 100 個(gè); 指令計(jì)數(shù)器,其中存放了要訪(fǎng)問(wèn)的下一條指令的地址; 程序狀態(tài)字PSW,其中含有狀態(tài)信息,如條件碼、執(zhí)行方式、 中斷屏蔽標(biāo)志等; 用戶(hù)棧指針, 指每個(gè)用戶(hù)進(jìn)程都有一個(gè)或若干個(gè)與之相關(guān)的系統(tǒng)棧,用于存放過(guò)程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址。棧指針指向該棧的棧頂。,3) 進(jìn)程調(diào)度信息 在PCB中還存放一些與進(jìn)程調(diào)度和進(jìn)程對(duì)換有關(guān)的信息,包括: 進(jìn)程狀態(tài),指明進(jìn)程的當(dāng)前狀態(tài), 作為進(jìn)程調(diào)度和對(duì)換時(shí)的依據(jù); 進(jìn)程優(yōu)先級(jí),用于描述進(jìn)程使用處理機(jī)的優(yōu)先級(jí)別的一個(gè)整數(shù), 優(yōu)先級(jí)高的進(jìn)程應(yīng)優(yōu)先獲得處理機(jī); 進(jìn)程調(diào)度所需的其它信息,它們與所采用的進(jìn)程調(diào)度算法有關(guān),比如,進(jìn)程已等待CPU的時(shí)間總和、 進(jìn)程已執(zhí)行的時(shí)間總和等; 事件,是指進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)所等待發(fā)生的事件,即阻塞原因。,4) 進(jìn)程控制信息 進(jìn)程控制信息包括: 程序和數(shù)據(jù)的地址, 是指進(jìn)程的程序和數(shù)據(jù)所在的內(nèi)存或外存地(首)址,以便再調(diào)度到該進(jìn)程執(zhí)行時(shí),能從PCB中找到其程序和數(shù)據(jù); 進(jìn)程同步和通信機(jī)制,指實(shí)現(xiàn)進(jìn)程同步和進(jìn)程通信時(shí)必需的機(jī)制, 如消息隊(duì)列指針、信號(hào)量等,它們可能全部或部分地放在PCB中; 資源清單,是一張列出了除CPU以外的、進(jìn)程所需的全部資源及已經(jīng)分配到該進(jìn)程的資源的清單; 鏈接指針, 它給出了本進(jìn)程(PCB)所在隊(duì)列中的下一個(gè)進(jìn)程的PCB的首地址。,3. 進(jìn)程控制塊的組織方式,1) 鏈接方式,圖 2-7 PCB鏈接隊(duì)列示意圖,2) 索引方式,圖 2-8 按索引方式組織PCB,2.2 進(jìn) 程 控 制,2.2.1 進(jìn)程的創(chuàng)建,1. 進(jìn)程圖(Process Graph),圖 2-9 進(jìn)程樹(shù),2. 引起創(chuàng)建進(jìn)程的事件,用戶(hù)登錄。 (2) 作業(yè)調(diào)度。 (3) 提供服務(wù)。 (4) 應(yīng)用請(qǐng)求。,3. 進(jìn)程的創(chuàng)建(Creation of Progress),(1)申請(qǐng)空白PCB。 (2) 為新進(jìn)程分配資源。 (3) 初始化進(jìn)程控制塊。 (4) 將新進(jìn)程插入就緒隊(duì)列,如果進(jìn)程就緒隊(duì)列能夠接納新進(jìn)程, 便將新進(jìn)程插入就緒隊(duì)列。,2.2.2 進(jìn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論