




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1.1計算機系統(tǒng)與操作系統(tǒng)1.2操作系統(tǒng)的形成1.3操作系統(tǒng)的類型1.4操作系統(tǒng)的功能習題1.1.1計算機系統(tǒng)
計算機系統(tǒng)是一個整體概念,不論是大型機、小型機還是微型機,都是由兩大部分組成的:計算機硬件部分和軟件部分。
硬件部分指的是組成計算機的任何機械的、磁性的、電子的裝置或部件。它是由中央處理器、存儲器、輸入/輸出設(shè)備等組成的。這些部件一般采用總線結(jié)構(gòu)組織在一起。由這些硬件部件構(gòu)成的機器稱為裸機,它是計算機系統(tǒng)最基本的硬件環(huán)境,是計算機系統(tǒng)的物質(zhì)基礎(chǔ)。1.1計算機系統(tǒng)與操作系統(tǒng)然而,用戶不喜歡裸機這種工作環(huán)境,因為裸機上沒有任何一種可以協(xié)助他們解決問題的手段,只提供最低級的機器語言。為了對硬件的性能加以擴充和完善,為了方便用戶上機,在裸機外添加了能實現(xiàn)各種功能的軟件程序。例如,為了方便用戶描述自己的算題任務(wù),提供了程序設(shè)計語言以及相應(yīng)的翻譯程序。為了方便、有效地解決各類問題,提供了各種服務(wù)性程序和實用程序,如系統(tǒng)程序庫、編輯程序、連接裝配程序等。為了維護系統(tǒng)正常工作,提供有查錯程序、診斷程序和引導程序。此外,還有用戶應(yīng)用程序、數(shù)據(jù)庫管理系統(tǒng)等。這些系統(tǒng)程序或應(yīng)用程序以及有關(guān)的數(shù)據(jù)形成了軟件。在這些軟件中有一個很重要的軟件系統(tǒng),即操作系統(tǒng),它管理系統(tǒng)中所有的軟、硬件設(shè)備,并組織整個計算機的工作流程。軟件一般可以分為以下幾類:
系統(tǒng)軟件,如操作系統(tǒng)、編譯系統(tǒng)、連接裝配程序等。
工具軟件,如各種診斷程序、檢查程序等。
應(yīng)用軟件,如應(yīng)用程序、軟件包等。裸機是計算機系統(tǒng)的物質(zhì)基礎(chǔ),沒有硬件就不能執(zhí)行指令和實施最原始、最簡單的操作,軟件也就失去了效用;而若只有硬件,沒有配置相應(yīng)的軟件,計算機就不能發(fā)揮它潛在的能力,這樣硬件也就沒有活力。因此,硬件和軟件這二者是相互依賴、相互促進的。只有軟件和硬件有機地結(jié)合在一起的系統(tǒng),才能稱得上是一個計算機系統(tǒng)。操作系統(tǒng)將系統(tǒng)中的各種軟、硬件資源有機地組合成一個整體,使計算機真正體現(xiàn)了系統(tǒng)的完整性和可利用性。計算機系統(tǒng)是由硬件和軟件兩大部分組成的一個完整的系統(tǒng)。其中,裸機處于系統(tǒng)的最底層,裸機的外面是軟件部分。軟件部分按照它們的功能和使用特性分為系統(tǒng)軟件和應(yīng)用軟件。應(yīng)用軟件是在系統(tǒng)軟件的支持下完成各項工作的,它在系統(tǒng)軟件的外層。系統(tǒng)軟件中的操作系統(tǒng)處于核心地位,負責整個系統(tǒng)的管理和控制,與計算機硬件關(guān)系最為密切。計算機系統(tǒng)的組成如圖1-1所示。圖1-1計算機系統(tǒng)的組成以及操作系統(tǒng)的地位1.1.2操作系統(tǒng)的概念
在計算機系統(tǒng)中引入操作系統(tǒng)的目的可以從三個方面來考察。
1)從用戶的觀點來看
計算機是為用戶提供服務(wù)的,計算機所完成的任何工作,都是為了滿足用戶的計算或處理需求。因此,引入操作系統(tǒng)是讓計算機為用戶提供最好的服務(wù),構(gòu)建一個用戶和計算機之間的和諧交互環(huán)境。
2)從系統(tǒng)管理人員的觀點來看
引入操作系統(tǒng)是為了合理地組織計算機工作流程,管理和分配計算機系統(tǒng)硬件及軟件資源,使之能為多個用戶高效率地共享。
3)從發(fā)展的觀點來看
引入操作系統(tǒng)是為了給計算機系統(tǒng)的功能擴展提供支撐平臺,使之在追加新的服務(wù)和功能時更加容易和不影響原有的服務(wù)和功能。綜上所述,我們可以把操作系統(tǒng)定義為:操作系統(tǒng)是計算機系統(tǒng)中的一個系統(tǒng)軟件,它是這樣一些程序模塊的集合——它們管理和控制計算機系統(tǒng)中的硬件及軟件資源,合理地組織計算機工作流程,以便有效地利用這些資源為用戶提供一個具有足夠的功能、使用方便、可擴展、安全和可管理的工作環(huán)境,從而在計算機與用戶之間起到接口的作用。1.1.3操作系統(tǒng)的宗旨
操作系統(tǒng)是重要的核心軟件,它管理著計算機系統(tǒng)的各種資源,控制計算機的工作流程,為用戶和上層軟件提供各種服務(wù)功能。所以操作系統(tǒng)的宗旨可概括如下。
1.有效地管理系統(tǒng)資源,提高資源的利用率
現(xiàn)代的計算機系統(tǒng)一般都為多個用戶或多個計算任務(wù)共同使用,它們共享計算機系統(tǒng)資源。系統(tǒng)所擁有的資源與使用它們的用戶和算題任務(wù)的需求相比總是要少些,應(yīng)用程序在執(zhí)行過程中都要申請系統(tǒng)資源。所以系統(tǒng)資源如何分配,怎樣在用戶程序之間協(xié)調(diào)他們的需求,就是操作系統(tǒng)提供的資源管理功能。因此,對操作系統(tǒng)而言,它的宗旨就是充分地利用系統(tǒng)資源,提高資源的利用率。
2.提供良好的界面,方便用戶使用
操作系統(tǒng)為方便用戶使用計算機,不但提供了許多豐富的服務(wù)功能,同時還提供了方便的接口供用戶使用,這樣,用戶無須了解系統(tǒng)中各種資源的使用細節(jié),只用操作系統(tǒng)提供的用戶界面,就可方便、直觀地使用計算機。隨著計算機技術(shù)、多媒體技術(shù)的發(fā)展,提供友好方便的用戶界面變得越來越重要了。操作系統(tǒng)伴隨著計算機技術(shù)本身及其應(yīng)用的日益發(fā)展而逐漸發(fā)展并不斷完善,它的功能由弱到強,在計算機系統(tǒng)中的地位不斷提高。另外,操作系統(tǒng)作為裸機上的第一層軟件,與計算機組成和體系結(jié)構(gòu)是密切相關(guān)的。我們通常把計算機硬件的發(fā)展分為四個階段:電子管時代、晶體管時代、集成電路時代、大規(guī)模和超大規(guī)模集成電路時代。為適應(yīng)上述計算機發(fā)展過程,操作系統(tǒng)經(jīng)歷了如下的發(fā)展過程:手工操作階段(無操作系統(tǒng))→批處理→執(zhí)行系統(tǒng)→多道程序系統(tǒng)→分時操作系統(tǒng)→實時操作系統(tǒng)→通用操作系統(tǒng)→網(wǎng)絡(luò)操作系統(tǒng)→分布式操作系統(tǒng)→嵌入式操作系統(tǒng)等。1.2操作系統(tǒng)的形成1.2.1手工操作階段
在第一代計算機時期,構(gòu)成計算機的主要元器件是電子管,計算機運算速度較慢(幾千次/秒),沒有操作系統(tǒng),甚至沒有任何軟件。用戶直接用機器語言編制程序,并在上機時獨占全部計算機資源。用戶既是程序員,又是操作員。上機完全是手工操作:先把程序紙帶(或卡片)裝到輸入機上,然后啟動輸入機把程序和數(shù)據(jù)送入計算機,接著通過控制臺開關(guān)啟動程序運行。計算完畢,打印機輸出計算結(jié)果,用戶卸下并取走紙帶(或卡片)。整個過程都是人工操作。這種由一道程序獨占機器及人工操作的情況,在計算機速度較慢時是允許的,由于此時計算機所需時間相對較長,手工操作所占比例還不是很大。
20世紀50年代后期,計算機的運行速度有了很大提高,從每秒幾千次、幾萬次發(fā)展到每秒幾十萬次、上百萬次。這時,手工操作的慢速度和計算機的高速度之間形成了矛盾,即所謂的人-機矛盾。為了解決這一矛盾,只有擺脫人工干預(yù),實現(xiàn)作業(yè)的自動過渡。這樣就出現(xiàn)了批處理。1.2.2早期批處理
在計算機發(fā)展的早期階段,用戶上機時需要自己建立和運行作業(yè),并做結(jié)束處理。由于沒有任何用于管理的軟件,所有的運行管理和具體操作都是由用戶自己承擔的。
為了縮短作業(yè)的建立時間,人們研制了監(jiān)督程序。它是一個常駐內(nèi)存的小的核心代碼,若干用戶作業(yè)合成一批,形成一個作業(yè)執(zhí)行序列,由監(jiān)督程序自動地依次進行處理。
1.聯(lián)機批處理
用戶上機前,要提交程序、數(shù)據(jù)和作業(yè)說明書給操作員,再將這些資料穿成紙帶或卡片的形式。操作員把提交的一批作業(yè)裝到輸入設(shè)備上,然后由監(jiān)督程序控制送到磁帶上。監(jiān)督程序自動輸入第一個作業(yè)的說明記錄,若系統(tǒng)資源能夠滿足用戶要求,則將該作業(yè)的程序、數(shù)據(jù)調(diào)入內(nèi)存,并從磁帶上輸入所需要的編譯程序,編譯程序?qū)⒂脩粼闯绦蚍g成目標代碼,然后由連接裝配程序把編譯后的目標代碼及所需的子程序裝配成一個可執(zhí)行的程序,接著啟動執(zhí)行。計算完成后輸出該作業(yè)的計算結(jié)果。一個作業(yè)處理完畢后,監(jiān)督程序又可以自動地調(diào)取下一個作業(yè)處理。重復上述過程,直到該批作業(yè)全部處理完畢。聯(lián)機批處理系統(tǒng)實現(xiàn)了作業(yè)自動過渡,同手工操作相比,計算機的使用效率提高了。但在這種系統(tǒng)中,作業(yè)的輸入輸出是聯(lián)機的,也就是說,作業(yè)從輸入到打印出結(jié)果都是由CPU直接控制的。隨著處理機速度的不斷提高,處理機和輸入輸出設(shè)備之間的速度差距形成了矛盾。在作業(yè)的輸入和執(zhí)行結(jié)果的輸出過程中,CPU仍處在等待狀態(tài),因此CPU的時間仍有很大的浪費。如果把輸入輸出工作直接交給一個專用機去做,就可以充分發(fā)揮CPU的效率,為此產(chǎn)生了脫機批處理。
2.脫機批處理
脫機批處理系統(tǒng)是由主機和衛(wèi)星機組成的,如圖1-2所示。
衛(wèi)星機只與外部設(shè)備打交道,它負責把輸入機上的作業(yè)輸入到輸入帶上,主機從輸入帶上調(diào)入作業(yè)并運行,計算完成后,將結(jié)果輸出到輸出帶上,再由衛(wèi)星機負責把信息打印輸出。在這樣的系統(tǒng)中,主機和衛(wèi)星機可以并行操作,充分發(fā)揮主機的高速計算能力。因此脫機批處理系統(tǒng)和聯(lián)機批處理系統(tǒng)相比大大提高了系統(tǒng)的處理能力。圖1-2脫機批處理系統(tǒng)1.2.3執(zhí)行系統(tǒng)
批處理系統(tǒng)實現(xiàn)了作業(yè)的自動過渡,它的出現(xiàn)改善了CPU與外部設(shè)備的使用情況,使計算機系統(tǒng)的處理能力得以提高。但也存在一些缺點,如磁帶需人工拆裝,既麻煩又容易出錯。而另一個更重要的問題則是系統(tǒng)的安全性問題。在進行批處理的過程中,所涉及的監(jiān)督程序、系統(tǒng)程序和用戶程序之間是一種相互調(diào)用關(guān)系,任何一個環(huán)節(jié)出問題,整個系統(tǒng)都會停頓。另外也無法防止用戶程序破壞監(jiān)督程序和系統(tǒng)程序。
20世紀60年代初,硬件獲得了兩方面的進展,一是通道的引入,二是中斷技術(shù)的出現(xiàn),這兩項成果導致了操作系統(tǒng)進入執(zhí)行系統(tǒng)階段。
通道是一種專用處理部件,它能控制一臺或多臺外部設(shè)備工作,負責外部設(shè)備和主存之間的信息傳輸。它一旦被啟動就能獨立于CPU運行,這樣可使CPU和通道并行操作,而且CPU和輸入輸出設(shè)備也能并行操作。所謂中斷,是指主機接到外部信號時馬上停止原來的工作,轉(zhuǎn)去處理這一事件,處理完畢后,主機再回到原來的斷點繼續(xù)工作。借助于通道、中斷技術(shù),輸入輸出工作可在主機控制下完成。這時,原來的監(jiān)督程序的功能擴大了,它不僅要負責調(diào)度作業(yè)自動地運行,而且還要提供輸入輸出功能。這個擴展了的監(jiān)督程序常駐內(nèi)存,被稱為執(zhí)行系統(tǒng)。
執(zhí)行系統(tǒng)實現(xiàn)的是聯(lián)機操作,和早期批處理系統(tǒng)不同的是:輸入輸出工作是由在主機控制下的通道完成的,主機與通道、主機和外設(shè)之間都可以并行操作。在執(zhí)行系統(tǒng)中,用戶程序的輸入輸出工作是委托給系統(tǒng)實現(xiàn)的,由系統(tǒng)檢查其命令的合法性,以避免由于不合法的輸入輸出命令造成對系統(tǒng)的威脅,因此提高了系統(tǒng)的安全性。1.2.4多道程序系統(tǒng)
上述的批處理系統(tǒng)和執(zhí)行系統(tǒng)有一個共同之處,就是每次調(diào)用一個用戶程序進入內(nèi)存,稱為單道運行。單道程序的運行情況如圖1-3所示。圖1-3單道程序工作示例從圖1-3中可以看出,當外部設(shè)備進行傳輸工作時,CPU處于空閑等待狀態(tài);反之,當CPU工作時,I/O設(shè)備又無事可做。這說明,計算機系統(tǒng)各部件的效能沒有得到充分的發(fā)揮,其原因在于內(nèi)存中只有一道程序。我們知道,操作系統(tǒng)的宗旨是要提高資源的利用率,為此,人們設(shè)想能否在系統(tǒng)中同時存放幾道程序,這就引入了多道程序設(shè)計技術(shù)。
多道程序運行情況如圖1-4所示。圖中,用戶程序A首先在處理機上運行,當它需要從輸入設(shè)備輸入新的數(shù)據(jù)時,系統(tǒng)幫助它啟動輸入設(shè)備進行輸入,并讓用戶程序B開始計算。程序B經(jīng)過一段計算后需要從打印機輸出一批數(shù)據(jù),系統(tǒng)接收請求并幫助啟動打印機工作。如果此時程序A的輸入尚未結(jié)束,也無其他用戶程序需要計算,處理機就處于空閑狀態(tài),直到程序A在輸入結(jié)束后重新運行。若當程序B的打印工作結(jié)束時,程序A仍在運行,則程序B繼續(xù)等待,直到程序A計算結(jié)束再次請求I/O傳輸時,程序B才能占用處理機。圖1-4多道程序工作示例多道程序設(shè)計是一種軟件技術(shù),該技術(shù)使同時進入計算機內(nèi)存的幾個相互獨立的程序,在管理程序控制之下相互穿插地運行。當某道程序因某種原因不能繼續(xù)運行下去時,管理程序便將另一道程序投入運行。這樣可以使中央處理器及各外部設(shè)備盡量處于忙碌狀態(tài),從而大大地提高計算機的使用效率。綜上所述,多道運行的特征是:
(1)多道,即計算機內(nèi)存中同時存放幾道相互獨立的程序。
(2)宏觀上并行,即同時進入系統(tǒng)的幾道程序都處于運行過程中,在一段時間內(nèi)它們先后開始了各自的運行,但都未運行完畢。
(3)微觀上串行,因為系統(tǒng)中只有一個CPU,所以各道程序輪流使用CPU,交替執(zhí)行。
在批處理系統(tǒng)中采用多道程序設(shè)計技術(shù),就形成了多道批處理系統(tǒng)。在該系統(tǒng)中,要處理的許多作業(yè)放在外部存儲器中,形成作業(yè)隊列,等待運行。當需要調(diào)入作業(yè)時,由操作系統(tǒng)中的作業(yè)調(diào)度程序根據(jù)一定的調(diào)度原則,將滿足資源條件且符合調(diào)度原則的幾個作業(yè)調(diào)入內(nèi)存,讓它們交替運行。采取這種方式,在內(nèi)存中總是同時存有幾道程序,系統(tǒng)資源的利用率是比較高的。1.2.5分時系統(tǒng)
在批處理方式下,用戶以脫機操作方式使用計算機,用戶在提交作業(yè)以后就完全脫離了自己的作業(yè),不管出現(xiàn)什么情況都不能加以干預(yù),只有等該批作業(yè)處理結(jié)束后,用戶才能拿到計算結(jié)果。根據(jù)結(jié)果再作下一步處理,若有錯,還得重復上述過程。盡管計算機效率高,但是卻給用戶使用計算機帶來麻煩。
人們十分留戀手工操作階段的聯(lián)機工作方式。那時,用戶獨占機器,并且直接控制程序的運行,可以隨時了解程序運行情況。但是,這種工作方式的機器效率極低。那么,是否可以找到一個既能保證機器效率,又能方便用戶使用的方法呢?20世紀60年代中期,計算機技術(shù)和軟件技術(shù)的發(fā)展實現(xiàn)了這種可能。由于主機速度的不斷提高和采用了分時技術(shù),一臺計算機可同時為多個終端用戶服務(wù),而每個用戶可在自己的終端設(shè)備上聯(lián)機使用計算機,就好像自己獨占機器一樣。采用分時技術(shù)可以使一臺計算機同時為多個聯(lián)機終端用戶使用,提供聯(lián)機操作和較快的響應(yīng)時間,這種處理方式稱為分時處理。采用分時技術(shù)的系統(tǒng)稱為分時系統(tǒng)。在這樣的系統(tǒng)中,一臺計算機和許多終端設(shè)備連接。每個用戶可以通過系統(tǒng)發(fā)出各種控制命令,請求完成某項工作,而系統(tǒng)則分析從終端發(fā)來的命令,完成用戶提出的要求,輸出一些必要的信息,如給出提示符,報告運行情況和操作結(jié)果。用戶根據(jù)系統(tǒng)給出的信息,向系統(tǒng)提出下一步請求。重復上述交互會話過程,直到用戶完成預(yù)計的全部工作為止。1.2.6實時系統(tǒng)
20世紀60年代中期計算機進入第三代,計算機的性能和可靠性有了很大的提高,造價亦大幅下降,計算機應(yīng)用越來越廣泛。計算機用于工業(yè)過程控制、軍事實時控制等,形成了各種實時系統(tǒng)。
實時處理是以快速響應(yīng)和可預(yù)測為特征的?!皩崟r”的含義是指計算機在規(guī)定的時間內(nèi)做出最快的反應(yīng)。根據(jù)被控對象的要求,其響應(yīng)時間要求在秒級、毫秒級甚至微秒級或
更小。
20世紀60年代中期至70年代中期,出現(xiàn)了一些通用系統(tǒng),這樣的系統(tǒng)可同時支持批量處理、分時處理、實時處理三者或其中的二者,這就形成了通用操作系統(tǒng)。1.2.7操作系統(tǒng)的進一步發(fā)展
隨著大規(guī)模集成電路工藝技術(shù)的飛速發(fā)展,以及微處理器的出現(xiàn)和發(fā)展,計算機有了更大的發(fā)展和普及,操作系統(tǒng)也有了進一步的發(fā)展,例如,個人計算機上的操作系統(tǒng)、嵌入式操作系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)、分布式操作系統(tǒng)等。通過上一節(jié)的討論,我們已經(jīng)知道,隨著計算機技術(shù)和軟件技術(shù)的發(fā)展,已形成了各種類型的操作系統(tǒng),以滿足不同的應(yīng)用要求。根據(jù)使用環(huán)境和對計算任務(wù)的處理方式不同,操作系統(tǒng)可分為以下幾種類型:
(1)批處理操作系統(tǒng);
(2)分時操作系統(tǒng);
(3)實時操作系統(tǒng);
(4)個人計算機操作系統(tǒng);
(5)網(wǎng)絡(luò)操作系統(tǒng);
(6)分布式操作系統(tǒng)。1.3操作系統(tǒng)的類型1.3.1批處理操作系統(tǒng)
批處理操作系統(tǒng)把用戶提交的作業(yè)成批送入計算機,然后由作業(yè)調(diào)度程序自動選擇作業(yè)運行。這樣能縮短作業(yè)之間的交接時間,減少處理機的空閑等待時間,從而提高系統(tǒng)的效率。批處理系統(tǒng)的主要特征是:
(1)多道性。在內(nèi)存中可同時駐留多道程序,并允許它們并發(fā)執(zhí)行,從而有效地提高了資源的利用率和系統(tǒng)吞吐量。
(2)無序性。多個作業(yè)完成的先后順序與它們進入內(nèi)存的順序之間并無嚴格的對應(yīng)關(guān)系,即先進入內(nèi)存的作業(yè)可能較后甚至最后完成,而后進入內(nèi)存的作業(yè)又可能先完成。
(3)調(diào)度性。作業(yè)從提交給系統(tǒng)開始直至完成,需要經(jīng)過作業(yè)調(diào)度和進程調(diào)度。
多道批處理系統(tǒng)的優(yōu)點是,由于在內(nèi)存中裝入了多道程序,使它們共享資源,保持資源處于忙碌狀態(tài),因此不但提高了系統(tǒng)吞吐量,而且使各種資源得以充分利用。其缺點是無交互性,用戶一旦把作業(yè)提交給系統(tǒng)后直至作業(yè)完成,用戶都不能與自己的作業(yè)進行交互,而且作業(yè)周轉(zhuǎn)時間長,用戶使用不方便。1.3.2分時操作系統(tǒng)
分時系統(tǒng)一般采用時間片輪轉(zhuǎn)的方式使一臺計算機為多個終端用戶服務(wù),對每個用戶能保證足夠快的響應(yīng)時間,并提供交互會話的能力。
分時系統(tǒng)的主要特征是:
(1)多路性。允許在一臺主機上同時連接多臺終端,系統(tǒng)按分時原則為每一個用戶服務(wù)。宏觀上是多個用戶同時工作,共享系統(tǒng)資源;而微觀上則是每個用戶作業(yè)輪流運行一個時間片。
(2)獨立性。每個用戶各占一個終端,彼此獨立操作,互不干擾,讓用戶感覺好像獨占主機一樣。
(3)及時性。用戶的請求能在很短時間內(nèi)獲得響應(yīng),此時間間隔是以人們所能接受的等待時間來確定的。
(4)交互性。用戶與計算機之間進行“會話”,用戶從終端輸入命令,提出計算要求,系統(tǒng)收到命令后分析用戶的要求并完成之,然后把運算結(jié)果通過屏幕或打印機告訴用戶,用戶可以根據(jù)運算結(jié)果提出下一步要求,直到全部工作完成。1.3.3實時操作系統(tǒng)
實時系統(tǒng)主要是隨著計算機應(yīng)用于實時控制和實時信息處理而發(fā)展起來的。實時系統(tǒng)是指系統(tǒng)能及時響應(yīng)外部事件的請求,在規(guī)定的時間內(nèi)完成對該事件的處理,并控制所有實時任務(wù)協(xié)調(diào)一致地運行。實時系統(tǒng)的主要特征是:
(1)系統(tǒng)對外部實時信號必須及時響應(yīng),響應(yīng)的時間間隔要足以控制發(fā)出實時信號的那個環(huán)境。
(2)實時系統(tǒng)要求有高可靠性和安全性,系統(tǒng)的效率則是放在第二位的。
(3)系統(tǒng)的整體性強。實時系統(tǒng)要求所管理的聯(lián)機設(shè)備和資源,必須按一定的時間關(guān)系和邏輯關(guān)系協(xié)調(diào)工作。
(4)實時系統(tǒng)沒有分時系統(tǒng)那樣強的交互會話功能,通常不允許用戶通過實時終端設(shè)備去編寫新的程序和修改已有的程序。1.3.4個人計算機操作系統(tǒng)
個人計算機操作系統(tǒng)是一個聯(lián)機交互式的單用戶操作系統(tǒng)。系統(tǒng)在一段時間內(nèi)僅為一個用戶服務(wù)。由于一個用戶獨占計算機系統(tǒng)的資源,使得操作系統(tǒng)中的處理機管理和存儲管理變得比較簡單,而設(shè)備管理和文件系統(tǒng)仍是十分重要的,且文件系統(tǒng)功能應(yīng)相當豐富,因為它是直接為用戶使用的。這類操作系統(tǒng)提供的用戶界面與分時系統(tǒng)十分類似,且有交互會話功能,提供鍵盤命令。方便、友好的界面在這類操作系統(tǒng)中是至關(guān)重要的。1.3.5網(wǎng)絡(luò)操作系統(tǒng)
計算機網(wǎng)絡(luò)是通過通信設(shè)施將物理上分散的具有自治功能的多個計算機系統(tǒng)互聯(lián)起來的,實現(xiàn)信息交換、資源共享的系統(tǒng)。
網(wǎng)絡(luò)操作系統(tǒng)的主要特征是:
(1)計算機網(wǎng)絡(luò)是一個互聯(lián)的計算機系統(tǒng)的群體。
(2)這些計算機是自治的,每臺計算機都有自己的操作系統(tǒng),各自獨立工作。它們在網(wǎng)絡(luò)協(xié)議控制下協(xié)調(diào)工作。
(3)系統(tǒng)互聯(lián)要通過通信設(shè)施來實現(xiàn)。
(4)系統(tǒng)通過通信設(shè)施執(zhí)行信息交換、資源共享、互操作和協(xié)作處理,實現(xiàn)多種應(yīng)用要求。1.3.6分布式操作系統(tǒng)
粗看起來,分布式操作系統(tǒng)與計算機網(wǎng)絡(luò)系統(tǒng)沒有多大區(qū)別。分布式操作系統(tǒng)也可以定義為通過通信網(wǎng)絡(luò)將物理上分布的具有自治功能的數(shù)據(jù)處理系統(tǒng)或計算機系統(tǒng)互聯(lián)起來,實現(xiàn)信息交換和資源共享,協(xié)作完成任務(wù)。分布式操作系統(tǒng)的主要特征是:
(1)系統(tǒng)內(nèi)包含有多個物理資源和邏輯資源,它們可以動態(tài)地分配給各個任務(wù)。
(2)所有資源都必須高度自治而相互配合地工作,它們之間不存在層次控制或主從控制的關(guān)系。
(3)所有處理部件是地理分布的,并且部件之間的進程通信是有雙邊協(xié)議的消息通信。
(4)系統(tǒng)內(nèi)有一個全局操作系統(tǒng),采用分布式控制的辦法,負責全系統(tǒng)的資源管理和運行控制。
(5)系統(tǒng)對用戶提供一個透明的、一體化的用戶界面。
分布式系統(tǒng)具有高可靠性、可用性和可擴展性,具有容錯能力,能對系統(tǒng)內(nèi)的資源進行動態(tài)分配和動態(tài)負荷平衡,所以能使系統(tǒng)資源達到最佳的共享效果。1.4.1處理機管理
計算機系統(tǒng)中最重要的資源是中央處理器,沒有它,任何計算都不可能運行。在單道程序或單用戶的情況下,處理機為一個作業(yè)或一個用戶所獨占,對處理機的管理十分簡單。但在多道程序或多用戶的情況下,要組織多個作業(yè)同時運行,就要解決對處理機分配調(diào)度策略、分配實施和資源回收等問題。這就是處理機的管理功能。1.4操作系統(tǒng)的功能1.4.2存儲管理
存儲管理的主要工作是對存儲器進行分配、保護、擴充和管理。
(1)內(nèi)存分配。在內(nèi)存中除了操作系統(tǒng)和其他系統(tǒng)軟件外,還有一個或多個用戶程序。如何分配內(nèi)存,以保證系統(tǒng)及各用戶程序的存儲區(qū)互不沖突,這就是內(nèi)存分配問題。
(2)存儲保護。系統(tǒng)中有多個程序在運行,如何保證一道程序在執(zhí)行過程中不會有意或無意地破壞另一道程序?如何保證用戶程序不會破壞系統(tǒng)程序?這就是存儲保護問題。
(3)內(nèi)存擴充。當用戶作業(yè)所需要的內(nèi)存容量超過計算機系統(tǒng)所提供的內(nèi)存容量時,如何把內(nèi)部存儲器和外部存儲器結(jié)合起來管理,為用戶提供一個容量比實際容量大得多的虛擬存儲器,讓用戶使用這個虛擬存儲器就和使用內(nèi)存一樣方便,這就是內(nèi)存擴充所要完成的任務(wù)。1.4.3設(shè)備管理
計算機外設(shè)的管理是操作系統(tǒng)中最龐雜、瑣碎的部分。設(shè)備管理應(yīng)具有下述功能:
(1)設(shè)備分配。根據(jù)一定的設(shè)備分配原則對設(shè)備進行分配。為了使設(shè)備與主機并行工作,常采用緩沖技術(shù)和虛擬技術(shù)。
(2)設(shè)備傳輸控制。實現(xiàn)物理的輸入/輸出操作,即啟動設(shè)備、中斷處理、結(jié)束處理等。
(3)設(shè)備獨立性。輸入/輸出設(shè)備種類很多,使用方法各不相同。設(shè)備管理應(yīng)為用戶提供一個良好的界面,而不必去涉及具體的設(shè)備特性,以使用戶能方便、靈活地使用這些
設(shè)備。1.4.4文件管理
處理機管理、存儲管理及設(shè)備管理三種功能都是針對計算機的硬件資源的管理,文件管理則是對系統(tǒng)的軟件資源的管理。
我們把程序和數(shù)據(jù)統(tǒng)稱為信息或文件。一個文件在暫時不用時,就被放到外部存儲器上保存起來。這樣,外存上保存了大量的文件。對這些文件如不能很好地管理,就會引起混亂,甚至使文件遭到破壞。這就是文件管理需要解決的問題。信息的共享、保密和保護,也是文件管理所要解決的。如果系統(tǒng)允許多個用戶協(xié)同工作,那么就應(yīng)該允許用戶共享信息文件。但這種共享應(yīng)該是受控制的,應(yīng)該有授權(quán)和保密機制。還要有一定的保護機制以免文件被非授權(quán)用戶調(diào)用和修改,即使在意外情況下,如系統(tǒng)失效、用戶對文件使用不當,也應(yīng)能盡量保護信息免遭破壞。1.計算機系統(tǒng)由哪幾部分組成?
2.什么是操作系統(tǒng)?操作系統(tǒng)的宗旨是什么?
3.操作系統(tǒng)怎樣提高系統(tǒng)的效率?
4.批處理系統(tǒng)是怎樣實現(xiàn)計算機操作自動化的?
5.推動批處理系統(tǒng)形成和發(fā)展的主要動力是什么?
6.多道程序設(shè)計技術(shù)的特點是什么?習題
7.為什么引入多道程序設(shè)計技術(shù)可以提高系統(tǒng)資源的利用率?
8.請簡述批處理系統(tǒng)的優(yōu)缺點。
9.推動分時系統(tǒng)形成和發(fā)展的主要動力是什么?
10.分時系統(tǒng)的主要特點是什么?
11.試對分時系統(tǒng)和實時系統(tǒng)進行比較。
12.從資源管理的角度來看,操作系統(tǒng)的基本功能可以分為哪幾部分?2.1硬件環(huán)境2.2操作系統(tǒng)的邏輯結(jié)構(gòu)2.3用戶與操作系統(tǒng)的接口習題2.1.1存儲器
存儲器是計算機系統(tǒng)中的記憶設(shè)備,用來存放程序和數(shù)據(jù)。目前,構(gòu)成存儲器的存儲介質(zhì)主要采用半導體器件和磁性材料。對于存儲器的要求是容量大、速度快、成本低,但是在一個存儲器中要求同時兼顧這三方面是比較困難的。為了解決這方面的矛盾,目前在計算機系統(tǒng)中,通常采用多級存儲器體系結(jié)構(gòu),即高速緩沖存儲器、主存儲器和外存儲器,如圖2-1所示。CPU能直接訪問的存儲器稱為內(nèi)存儲器,它包括高速緩沖存儲器和主存儲器。CPU不能直接訪問外存儲器,外存儲器的信息必須調(diào)入內(nèi)存儲器后才能由CPU進行
處理。2.1硬件環(huán)境圖2-1存儲系統(tǒng)的分級結(jié)構(gòu)
1.高速緩沖存儲器
它是位于CPU與主存儲器之間的一種容量較小但速度很高的存儲器。一般來說,CPU的速度遠高于主存儲器,當CPU直接從主存儲器中存取數(shù)據(jù)時要等待一定的時間周期,而Cache則可以保存CPU剛用過或循環(huán)使用的一部分數(shù)據(jù),如果CPU需要再次使用該部分數(shù)據(jù)則可從Cache中直接調(diào)用,這樣就避免了重復存取數(shù)據(jù),減少了CPU的等待時間,因而提高了系統(tǒng)的效率。
Cache又分為L1Cache(一級緩存)和L2Cache(二級緩存),一般L1Cache主要集成在CPU內(nèi)部,而L2Cache集成在主板或是CPU上。
2.主存儲器
主存儲器簡稱主存,是計算機系統(tǒng)中的主要存儲器,用來存放計算機運行期間的大量程序和數(shù)據(jù)。一個要執(zhí)行的程序必須裝入主存儲器,中央處理器可直接訪問主存儲器,因而任何程序和數(shù)據(jù)必須被裝入主存儲器之后中央處理器才能對它們進行操作。
主存儲器以“字節(jié)”為單位進行編址,若干字節(jié)組成一個“字”。
中央處理器可以按地址讀出主存儲器中一個字節(jié)或一個字的內(nèi)容,讀出的內(nèi)容可以存放在中央處理器設(shè)置的內(nèi)部寄存器(例如指令寄存器、通用寄存器和各種控制寄存器)中,也可把內(nèi)部寄存器的內(nèi)容存儲到指定地址的主存空間中。
3.外存儲器
外存儲器簡稱外存,它是大容量的輔助存儲器。目前主要使用磁盤存儲器、磁帶存儲器和光盤存儲器。各種外圍設(shè)備只能與主存儲器交換信息,在輔助存儲器中的信息只有被讀到主存儲器之后,才能供中央處理器訪問。大多數(shù)計算機系統(tǒng)把輔助存儲器作為主存儲器的擴展,用來保存大量的程序和數(shù)據(jù)。磁盤可被隨機訪問,用來存放常用的信息。磁帶主要用于備份,存放不常用的信息以及作為系統(tǒng)間信息交換的媒介。為什么設(shè)置輔助存儲器呢?主要從以下兩個方面考慮:
(1)由于主存儲器容量的限制,主存不足以存儲所有需要的程序和數(shù)據(jù);
(2)主存儲器不是一種永久性的存儲設(shè)備,當電源被切斷時主存儲器中的信息就會消失。
輔助存儲器的優(yōu)點是容量大且能永久地保存信息,缺點是不能被中央處理器直接訪問。如果要使用輔助存儲器中的信息,應(yīng)該先把信息傳送到主存儲器中,然后,中央處理器才能對信息進行操作。2.1.2處理機的態(tài)
在計算機系統(tǒng)中,中央處理器會在系統(tǒng)程序和用戶程序之間切換,因此中央處理器有兩種工作狀態(tài):系統(tǒng)態(tài)和用戶態(tài)。
系統(tǒng)態(tài)又稱核心態(tài)或管態(tài),是操作系統(tǒng)的管理程序執(zhí)行時機器所處的狀態(tài)。它具有較高的特權(quán),能執(zhí)行一切硬件指令,訪問所有寄存器和內(nèi)存儲區(qū)。用戶態(tài)又稱常態(tài)或目態(tài),是用戶程序執(zhí)行時機器所處的狀態(tài)。這是具有較低特權(quán)的執(zhí)行狀態(tài),只能執(zhí)行規(guī)定的指令,訪問指定的寄存器和內(nèi)存儲區(qū)。
計算機系統(tǒng)都有自己的指令系統(tǒng),在多道程序設(shè)計系統(tǒng)中,指令系統(tǒng)分為“特權(quán)指令”與“非特權(quán)指令”。特權(quán)指令僅能由操作系統(tǒng)使用,如設(shè)置時鐘、清內(nèi)存等為特權(quán)指令;其他指令為非特權(quán)指令,用戶只能使用非特權(quán)指令。當中央處理器處于管態(tài)時可執(zhí)行包括特權(quán)指令在內(nèi)的一切機器指令,當中央處理器處于目態(tài)時則不能執(zhí)行特權(quán)指令。所以,操作系統(tǒng)程序占用中央處理器時,應(yīng)讓中央處理器在管態(tài)下工作,而用戶程序占用中央處理器時,應(yīng)讓中央處理器在目態(tài)下工作。如果中央處理器在目態(tài)下工作,但卻取到了一條特權(quán)指令,此時中央處理器將拒絕執(zhí)行該指令,并形成一個“非法操作”事件。中斷裝置識別到該事件后,轉(zhuǎn)交給操作系統(tǒng)去處理,由操作系統(tǒng)通知用戶:“程序中有非法指令”,必須修改。當系統(tǒng)啟動時,硬件裝置將中央處理器的初始狀態(tài)設(shè)為管態(tài),然后裝入操作系統(tǒng)程序,如果操作系統(tǒng)選擇了用戶程序占用處理器,則把管態(tài)轉(zhuǎn)換成目態(tài)。如果中斷裝置發(fā)現(xiàn)了一個事件,則又將其置為管態(tài),讓操作系統(tǒng)去處理出現(xiàn)的事件。所以,總能保證操作系統(tǒng)在管態(tài)下工作,操作系統(tǒng)退出執(zhí)行時,讓用戶程序在目態(tài)執(zhí)行。2.1.3中斷技術(shù)
計算機系統(tǒng)由硬件和軟件兩大部分組成。硬件是軟件執(zhí)行的基礎(chǔ),硬件具有中央處理器與外圍設(shè)備并行工作的能力,各個外圍設(shè)備也可同時工作。操作系統(tǒng)利用硬件的這種功能,采用多道程序設(shè)計技術(shù),允許多用戶并行工作。在硬件的中斷裝置配合下,操作系統(tǒng)能正確地控制各個程序的執(zhí)行。
1.中斷
中斷是計算機系統(tǒng)結(jié)構(gòu)的一個重要組成部分。在中斷機制中的硬件部分(中斷裝置)的作用就是在CPU每執(zhí)行完一條指令后,判斷是否有中斷事件發(fā)生,如果沒有事件發(fā)生,CPU繼續(xù)執(zhí)行;若有事件發(fā)生,中斷裝置中斷原先占用CPU的程序的執(zhí)行,把被中斷程序的斷點保存起來,讓操作系統(tǒng)的處理服務(wù)程序占用CPU對事件進行處理,處理完后,再讓被中斷的程序繼續(xù)占用CPU執(zhí)行下去。
2.中斷的類型
從中斷事件的性質(zhì)出發(fā),中斷可以分為兩大類:
(1)強迫性中斷事件:包括硬件故障中斷,程序性中斷,外部中斷和輸入輸出中斷等。
(2)自愿性中斷事件:是由正在運行的進程執(zhí)行一條訪管指令用以請求系統(tǒng)調(diào)用而引起的中斷,這種中斷也稱為“訪管中斷”。
3.中斷的響應(yīng)
中央處理器每執(zhí)行一條指令后,硬件的中斷裝置立即檢查有無中斷事件發(fā)生,若有中斷事件發(fā)生,則暫?,F(xiàn)行進程的執(zhí)行,而讓操作系統(tǒng)的中斷處理程序占用處理器,這一過程稱為“中斷響應(yīng)”。
中斷響應(yīng)過程中,中斷裝置要做以下三項工作:
(1)是否有中斷事件發(fā)生;
(2)若有中斷發(fā)生,則保護斷點信息;
(3)啟動操作系統(tǒng)的中斷處理程序工作。
4.中斷處理
操作系統(tǒng)的中斷處理程序?qū)χ袛嗍录M行處理時,大致要做三方面的工作:
1)保護被中斷進程的現(xiàn)場信息
處理器的運行現(xiàn)場就是指處理機在執(zhí)行程序過程中任意一個時刻的狀態(tài)信息的集合。
處理器運行現(xiàn)場包括的內(nèi)容有:指令計數(shù)器(程序計數(shù)器),程序狀態(tài)寄存器,通用寄存器,特殊控制寄存器。
進入中斷處理時首先把被中斷程序的斷點(當前的指令地址)等保存起來,然后讓操作系統(tǒng)的處理程序占用處理器。操作系統(tǒng)在處理事件之前,把被中斷程序在處理器的各個寄存器中設(shè)置的狀態(tài)保存起來,在事件處理結(jié)束后,選中某個程序占用處理器時再把被保存的該程序的狀態(tài)恢復到各寄存器中,同時把該程序的返回地址(原斷點或新的啟動點)裝入指令地址計數(shù)器中。
2)分析中斷原因
根據(jù)舊的程序狀態(tài)字(PSW)的中斷碼可知發(fā)生該中斷的具體原因。
3)處理發(fā)生的中斷事件
請求系統(tǒng)創(chuàng)建相應(yīng)的處理進程進入就緒隊列。
5.中斷屏蔽
中斷屏蔽技術(shù)是在一個中斷處理沒有結(jié)束之前不響應(yīng)其他中斷事件,或者只響應(yīng)比當前級別高的中斷事件。
如果當中斷裝置檢查到有中斷事件后,便去查看PSW中的中斷屏蔽標志,如果沒有屏蔽就響應(yīng)該中斷;否則,暫時不響應(yīng)該中斷,待屏蔽標志消除后再響應(yīng)。自愿性中斷是不能屏蔽的。
6.中斷機制在操作系統(tǒng)中的作用
中斷機制最大的優(yōu)點是方便處理隨機事件。無論在什么情況下,只要有隨機事件發(fā)生,操作系統(tǒng)都可以通過中斷機制中斷當前程序的運行,轉(zhuǎn)而執(zhí)行處理該事件的服務(wù)程序。
因此,中斷給操作系統(tǒng)設(shè)計帶來了很多方便之處:
(1)中斷使得實時處理許多緊急事件成為可能。
(2)中斷可以實現(xiàn)處理器與外設(shè)的并行,提高處理器的執(zhí)行效率。
(3)中斷可以實現(xiàn)多道程序間的切換。
(4)中斷還可以讓操作系統(tǒng)能夠為用戶程序提供一系列的系統(tǒng)調(diào)用,作為系統(tǒng)服務(wù)的支撐平臺,簡化操作系統(tǒng)和應(yīng)用程序的開發(fā)設(shè)計過程。2.2.1結(jié)構(gòu)設(shè)計目標
為提高計算機系統(tǒng)資源的利用率和方便用戶使用,在計算機系統(tǒng)中必須配備操作系統(tǒng)。
操作系統(tǒng)是一個大型的軟件,規(guī)模龐大、結(jié)構(gòu)復雜。操作系統(tǒng)必須具有一個清晰、正確的邏輯結(jié)構(gòu)。操作系統(tǒng)的結(jié)構(gòu)設(shè)計目標主要考慮正確性、高效性、可維護性、可移植性等要求。
2.2操作系統(tǒng)的邏輯結(jié)構(gòu)
1.正確性
能引起操作系統(tǒng)工作不正確的因素很多,其中最主要的是用戶作業(yè)的類型以及作業(yè)到達系統(tǒng)的時間是隨機的。系統(tǒng)中發(fā)生的各種事件都是隨機的,多個隨機到達的作業(yè)都要占用中央處理器和使用計算機系統(tǒng)的其他資源,操作系統(tǒng)必須充分估計和把握各種不確定的情況。一個結(jié)構(gòu)良好的操作系統(tǒng)不僅能保證操作系統(tǒng)的正確性而且易于驗證其正確性。
2.高效性
操作系統(tǒng)自身的開銷,例如占用的主存空間和輔助存儲空間、占用的處理器時間等,對計算機系統(tǒng)的效率有很大影響。減少操作系統(tǒng)的開銷就能提高計算機系統(tǒng)的效率,尤其對常駐主存儲器的核心程序部分更要精心設(shè)計。核心程序處于頻繁活動狀態(tài),是影響計算機系統(tǒng)效率的關(guān)鍵所在,設(shè)計核心程序應(yīng)遵循少而精的原則,使處理既有效又靈活。
3.維護性
一個操作系統(tǒng)交付使用后,有時需對功能進行增加、刪除,如發(fā)現(xiàn)錯誤時需要進行修改,為了提高效率要對算法進行調(diào)整等。因此,在結(jié)構(gòu)設(shè)計時應(yīng)注意到這些問題,使操作系統(tǒng)容易維護。
4.移植性
所謂移植性,是指能否方便地把操作系統(tǒng)移植到一個新的硬件環(huán)境中。為了能方便地移植,在結(jié)構(gòu)設(shè)計時,應(yīng)盡量減少與硬件直接有關(guān)的程序量且將其獨立封裝。這樣,在移植時,只需修改這一部分程序,其他部分不必修改。如果能采用國際通用的標準C語言或C++語言編寫操作系統(tǒng)程序,那么,只要經(jīng)過重新編譯和設(shè)置必要的參數(shù),就可使其適應(yīng)新的硬件環(huán)境。2.2.2層次結(jié)構(gòu)
操作系統(tǒng)是負責管理計算機系統(tǒng)資源的最基本的系統(tǒng)軟件,用戶是通過調(diào)用操作系統(tǒng)的功能來使用計算機的。如何設(shè)計和構(gòu)造這樣一個繁瑣而又有相當規(guī)模的軟件呢?通常采用模塊分層方法,在硬件基礎(chǔ)上分層次構(gòu)造操作系統(tǒng)的各個部分。
由于操作系統(tǒng)十分龐大,清晰的結(jié)構(gòu)有利于開發(fā)和調(diào)試。層次結(jié)構(gòu)是一種重要的設(shè)計技術(shù),正確性容易得到保證,也提高了可維護性和可移植性。層次結(jié)構(gòu)法的最大特點是把整體問題局部化。一個大型復雜的操作系統(tǒng)被分解成若干單向依賴的層次,由各層的正確性來保證整個操作系統(tǒng)的正確性。采用層次結(jié)構(gòu)不僅結(jié)構(gòu)清晰,而且便于調(diào)試,有利于功能的增加、刪減和修改。
從資源管理的觀點看,操作系統(tǒng)的功能分成四大部分,即處理器管理、存儲管理、文件管理、設(shè)備管理。
這四大部分相互配合,協(xié)調(diào)工作,實現(xiàn)對計算機系統(tǒng)的資源管理和控制程序的執(zhí)行,為用戶提供方便的使用接口和良好的運行環(huán)境。按照依賴關(guān)系,操作系統(tǒng)的一種層次結(jié)構(gòu)如圖2-2所示。圖2-2操作系統(tǒng)層次結(jié)構(gòu)處理器管理要對中斷事件進行處理,要為各程序合理地分配中央處理器的工作時間。它是操作系統(tǒng)的核心程序,是與硬件直接有關(guān)的部分。因而,把它放在最內(nèi)層。存儲管理、設(shè)備管理和文件管理依次存放在外層。為避免錯綜復雜的聯(lián)系可能造成的差錯,可規(guī)定各層次的依賴關(guān)系,圖2-2的層次結(jié)構(gòu)是一種外層依賴內(nèi)層的關(guān)系。層次結(jié)構(gòu)的主要優(yōu)點是有利于系統(tǒng)的設(shè)計和調(diào)試,實現(xiàn)各層次的功能時都可利用內(nèi)層提供的功能,不必知道內(nèi)層的功能是怎樣實現(xiàn)的,而只需知道這些功能可做什么。調(diào)試工作可從最內(nèi)層開始,最內(nèi)層只使用硬件提供的功能,調(diào)試時無需考慮其他任何部分。一旦最內(nèi)層調(diào)試通過,則第二層可在最內(nèi)層提供的功能上執(zhí)行,依次類推,直到完成各層功能的調(diào)試。若在調(diào)試某層的功能時發(fā)現(xiàn)錯誤,可斷定錯誤位于當前層,因為內(nèi)層的各層次已通過調(diào)試了。層次結(jié)構(gòu)的主要困難在于層次的劃分和安排,由于每一層只能利用位于它內(nèi)層提供的功能,因而需要仔細地規(guī)劃每一層的功能,以保證操作系統(tǒng)工作過程中不出現(xiàn)雙向依賴關(guān)系。如果存在雙向依賴關(guān)系,則很可能出現(xiàn)無休止的循環(huán),使系統(tǒng)癱瘓。2.3.1命令接口
按照對作業(yè)控制方式的不同,命令接口分為脫機命令接口和聯(lián)機命令接口。通常在批處理系統(tǒng)中,用戶以脫機方式使用計算機;而在分時系統(tǒng)和具有交互能力的系統(tǒng)中,使用聯(lián)機命令接口。
脫機命令接口又稱批處理命令接口,通過作業(yè)控制語言(JCL,JobControlLanguage)實現(xiàn),即由一組作業(yè)控制命令(或語句)組成。脫機用戶不能直接干預(yù)作業(yè)的運行。用戶上機前必須準備好用作業(yè)控制語言書寫的作業(yè)申請書,包括程序和數(shù)據(jù)等。用戶對作業(yè)的控制要求以作業(yè)控制說明書的方式提交給系統(tǒng),系統(tǒng)根據(jù)作業(yè)說明書來分配作業(yè)所需資源并控制作業(yè)的執(zhí)行。2.3用戶與操作系統(tǒng)的接口聯(lián)機命令接口又稱交互式命令接口,即利用操作系統(tǒng)提供的操作命令來實現(xiàn)人與計算機之間的信息交流。它由一組操作命令組成,這組命令由操作系統(tǒng)的命令解釋程序解釋執(zhí)行。不同的操作系統(tǒng)提供不同的操作命令方式,通常采用命令行接口(CLI,CommandLineInterpreter,命令行解釋程序)方式和窗口圖形接口(GUI,GraphicalUserInterfaces,圖形用戶接口)方式。
1.作業(yè)控制語言
一個用戶作業(yè)進入計算機系統(tǒng)后,除作業(yè)程序執(zhí)行時要調(diào)用系統(tǒng)功能外,用戶往往還要告訴系統(tǒng)控制作業(yè)執(zhí)行的步驟。例如,依次做編譯、裝配、運行等。系統(tǒng)提供了讓用戶給出作業(yè)執(zhí)行步驟的手段,即作業(yè)控制語言和操作控制命令。
用戶可以用作業(yè)控制語言寫出控制作業(yè)執(zhí)行步驟的“作業(yè)說明書”,這是一種非交互式的控制方式;也可以從鍵盤輸入操作控制命令或從“菜單”中選擇命令來指出作業(yè)的執(zhí)行步驟,這是一種交互式的控制方式。一般在批處理系統(tǒng)中的脫機工作方式下,系統(tǒng)提供作業(yè)控制語言。用戶對作業(yè)的控制意圖要利用作業(yè)控制語言書寫一份作業(yè)操作說明書,包括作業(yè)申請表、操作說明書、程序和數(shù)據(jù)。在上機前,用戶向系統(tǒng)提出執(zhí)行作業(yè)的請求,包括作業(yè)名、需用CPU時間、最遲完成時間、資源請求及使用何種編譯程序等。作業(yè)說明書由一條條對作業(yè)處理的命令組成,如編輯命令、編譯命令、連接命令、運行命令等。操作系統(tǒng)根據(jù)作業(yè)申請表來分配作業(yè)所需的資源并注冊該作業(yè),通過作業(yè)說明書對作業(yè)實施控制。
2.命令行方式
在聯(lián)機方式下,用戶通過命令行完成操作命令的提交。用戶通過控制臺或終端鍵入操作命令,向系統(tǒng)提出各種服務(wù)請求。用戶每輸入完一條命令,控制就轉(zhuǎn)入命令解釋程序,然后命令解釋程序?qū)︽I入的命令解釋執(zhí)行,完成指定的功能。之后,控制轉(zhuǎn)回到控制臺或終端,準備接收用戶的下一條命令。如此反復,直到作業(yè)執(zhí)行結(jié)束。所謂命令行方式,通常是指以一問一答的方式提交任務(wù),即在操作系統(tǒng)的系統(tǒng)提示符下直接輸入操作命令,每輸入一條命令執(zhí)行一個任務(wù),通過命令控制計算機。
早期的操作系統(tǒng)都是以命令行方式與用戶交互,用戶通過命令行提交任務(wù)。典型的具有命令行工作界面的操作系統(tǒng)有DOS、UNIX、NetWare等。
3.窗口圖形方式
在命令行方式下,用戶與操作系統(tǒng)的交互要求用戶記憶命令格式。窗口圖形方式是指在系統(tǒng)提供的工作窗口中通過菜單命令或工具按鈕完成命令的提交,從而完成與操作系統(tǒng)的交互,這種工作界面的最大特點是用戶不必死記命令和語法,只需從窗口中選擇操作命令即可。當前流行的Windows系列都是具有窗口圖形工作界面的操作系統(tǒng)。窗口系統(tǒng)的圖形元素及其狀態(tài)主要包括以下幾種。
1)窗口(window)
窗口是屏幕上的矩形區(qū)域。窗口中主要包括的圖形元素一般有標題條(titlebar)、邊框(border)、窗口角(corner)、系統(tǒng)菜單框(systemmenubox)、最大化/最小化按鈕(maximize/minimize)、滾動條(scrollbar)等。
窗口的狀態(tài)一般包括當前/非當前窗口(active/inactive),最大化/最小化/恢復原大小(restore),窗口的前后遮蓋,焦點(focus)。
2)圖標(icon)
圖標是一個小圖像(如32×32pixel或64×64pixel),通常供鼠標指針點擊。通過不同的圖標可以標識不同的對象,如可執(zhí)行程序、最小化的窗口等。
鼠標指針(mousepointer):鼠標指針通常對應(yīng)屏幕上的光標(cursor)。
光標在屏幕上只有一個,在不同屏幕位置(上下文)可以呈現(xiàn)不同形狀,可以獨立于鼠標來直接操縱光標。鼠標點擊主要包括左鍵/右鍵/中鍵(left/right/middlebutton),單擊(click)/雙擊(double-click),拖曳(drag)/拖放(drag-and-drop)。
3)按鈕(button)
當用鼠標點擊按鈕時將執(zhí)行相應(yīng)的功能,或提供單項或多項選擇。
4)菜單(menu)
菜單是臨時窗口,可分為菜單條(menubar)、彈出式菜單、下拉式菜單(上下文相關(guān)菜單)。
5)對話框(dialogbox)
對話框也是臨時窗口,可以顯示提示信息(message)或填寫用戶設(shè)置。系統(tǒng)提供的窗口圖形方式一般有以下幾個特點:
(1)利用圖形元素表示功能,即將各種圖形元素顯示在屏幕上,用戶可以通過操縱圖形元素(如菜單、圖標)來執(zhí)行相應(yīng)的功能。
(2)同屏多窗口與并發(fā)進程相對應(yīng),即屏幕上同時顯示多個窗口;一個進程可以對應(yīng)一個或多個窗口;窗口動態(tài)創(chuàng)建、改變、撤銷。
(3)輸入方式:可以通過鼠標指針點擊(或其他定位設(shè)備)或鍵盤輸入,通常是即時交互。
(4)一致的圖形元素風格可方便用戶學習和使用,如按鈕、滾動條等。2.3.2程序接口
在源程序一級,用戶使用程序設(shè)計語言描述算題任務(wù)的邏輯要求,例如,打開一個文件、讀文件、寫文件及請求主存空間等,這些要求的實現(xiàn)只有通過操作系統(tǒng)的功能程序才能完成。操作系統(tǒng)編制了許多不同功能的子程序,用戶程序在執(zhí)行中可以調(diào)用這些子程序。由操作系統(tǒng)提供的這些子程序稱為子程序系統(tǒng)功能調(diào)用程序,或簡稱為“系統(tǒng)調(diào)用”。程序接口就是由一組系統(tǒng)調(diào)用命令組成的,是操作系統(tǒng)提供給程序設(shè)計人員的接口,供用戶以程序方式進行操作,或通過API(ApplicationProgrammingInterface)函數(shù)調(diào)用系統(tǒng)提供的例行程序,請求操作系統(tǒng)提供服務(wù)。例如在DOS系統(tǒng)中提供中斷服務(wù)功能,在Windows系統(tǒng)中提供WindowsAPI函數(shù)。系統(tǒng)調(diào)用是為了用戶在程序中調(diào)用操作系統(tǒng)而提供的一些子功能。系統(tǒng)調(diào)用命令是為擴充機器指令、增強系統(tǒng)功能、方便用戶使用而提供的。因此,在一些計算機系統(tǒng)中,把系統(tǒng)調(diào)用命令稱為廣義指令。廣義指令與機器指令在性質(zhì)上是不同的,機器指令是用硬件來實現(xiàn)的,而廣義指令則是由操作系統(tǒng)提供的一個或多個子程序模塊實現(xiàn)的。
系統(tǒng)調(diào)用提供了運行程序和操作系統(tǒng)之間的界面,一個操作系統(tǒng)提供的系統(tǒng)調(diào)用越多,系統(tǒng)的功能就越強,用戶使用起來就越方便。
系統(tǒng)調(diào)用命令按其功能大致分為進程管理和控制、進程通信、外部設(shè)備的輸入輸出服務(wù)、文件管理和存儲空間的管理等。
(1)進程控制,包括進程創(chuàng)建、進程執(zhí)行、進程撤銷、執(zhí)行等待和執(zhí)行優(yōu)先級控制等。
(2)進程通信,用在進程之間傳遞消息或信號。
(3)設(shè)備管理,用來請求和釋放有關(guān)設(shè)備、以及啟動設(shè)備操作等。
(4)文件管理,包括打開文件、建立文件、讀文件、寫文件、關(guān)閉文件及刪除文件等。
(5)存儲管理,包括調(diào)查作業(yè)占據(jù)內(nèi)存區(qū)的大小、獲取作業(yè)占據(jù)內(nèi)存區(qū)的始址等。為了能更清楚說明系統(tǒng)調(diào)用的實現(xiàn),下面給出一個小例子:
在DOS操作系統(tǒng)中,系統(tǒng)調(diào)用主要功能包括:
(1)設(shè)備管理(如鍵盤、顯示器、打印機、磁盤等的管理)。
(2)文件管理和目錄操作。
(3)其他管理(如內(nèi)存、時間、日期等的管理)。這些子程序給用戶編程帶來很大方便,用戶不必了解有關(guān)的設(shè)備、電路、接口等方面的問題,只需直接調(diào)用即可。調(diào)用這些子程序的方法如下:
(1)功能號→AH,將系統(tǒng)功能號送到AH寄存器中。比如:將01送給AH,表示從鍵盤輸入一個字符。
(2)入口參數(shù)→指定寄存器。
(3)?INTDOS函數(shù)調(diào)用。用戶只需給出以上三方面信息,DOS就可根據(jù)所給信息自動轉(zhuǎn)入相關(guān)子程序執(zhí)行。
下面給出一個修改系統(tǒng)日期的實例來進一步描述系統(tǒng)調(diào)用:
#include“stdio.h”
#include“dos.h”
main()
{
當程序運行后,用戶輸入DATE命令顯示系統(tǒng)日期時,系統(tǒng)日期改為2008-10-20。
在Linux操作系統(tǒng)中,也同樣提供了許多功能,我們將在第3章的實例中給出進程控制的系統(tǒng)調(diào)用,供大家參考。
通常情況下,當提到系統(tǒng)調(diào)用時,會引起和一般過程調(diào)用的混淆,那么系統(tǒng)調(diào)用和一般的過程調(diào)用存在什么區(qū)別呢?下面從以下幾點進行簡單的比較和說明。
1.系統(tǒng)調(diào)用是動態(tài)調(diào)用,而一般過程調(diào)用是靜態(tài)調(diào)用
系統(tǒng)調(diào)用是動態(tài)調(diào)用,程序中不包含被調(diào)用代碼,優(yōu)點是:用戶程序長度縮短;當操作系統(tǒng)升級時,調(diào)用方也不必改變用戶程序。
系統(tǒng)調(diào)用方式的調(diào)用地址和返回地址都是不固定的,系統(tǒng)調(diào)用指令中不包含調(diào)用地址,只包含功能號,是按功能號(在可執(zhí)行目標程序中)調(diào)用的。在操作系統(tǒng)內(nèi)部,由系統(tǒng)調(diào)用處理程序通過系統(tǒng)調(diào)用分支表(操作系統(tǒng)的一個數(shù)據(jù)結(jié)構(gòu))將功能號轉(zhuǎn)換為相應(yīng)的指令地址。
系統(tǒng)調(diào)用返回指令中不包括返回地址,通過棧保存和彈出返回地址。系統(tǒng)調(diào)用返回地址不固定,因為用戶程序在不同的地方調(diào)用操作系統(tǒng)。
2.運行的系統(tǒng)狀態(tài)不同
“系統(tǒng)調(diào)用”程序執(zhí)行時往往要使用“啟動I/O”等特權(quán)指令,所以,“系統(tǒng)調(diào)用”是在管態(tài)下執(zhí)行的程序。由于用戶程序是在目態(tài)下執(zhí)行的,因此現(xiàn)在有這樣一個問題:如果用戶程序想要啟動外設(shè),或者要完成在目態(tài)下無法完成的工作時,怎么辦?要實現(xiàn)這一問題必須有三個條件:
(1)需要有一條指令,使處理機能從目態(tài)進入管態(tài),并向操作系統(tǒng)提出要其代為完成的工作;
(2)在管態(tài)下由操作系統(tǒng)完成用戶程序的請求;
(3)操作系統(tǒng)完成所做工作后能返回到用戶程序,即從管態(tài)又回到原來的目態(tài)。
解決這個問題要靠訪管指令。訪管指令本身不是特權(quán)指令,其基本功能是“自愿進管”,而引起訪管中斷。
訪管指令SVC,指令格式如圖2-3所示。圖2-3系統(tǒng)調(diào)用過程圖中,SVC為訪管指令的操作碼,地址碼N占8位,表示訪管中斷的中斷碼。8位中斷碼可以表示0~255共256種不同的二進制代碼,以每種代碼作為一個功能號,它對應(yīng)一個系統(tǒng)向用戶提供的子功能,這些子功能就是系統(tǒng)功能調(diào)用。
3.進入方式不同
由于用戶程序使用系統(tǒng)調(diào)用后要進入系統(tǒng)空間,因此需要調(diào)用一個軟中斷,而普通過程在被調(diào)用時沒有這個過程。
4.嵌套調(diào)用
對系統(tǒng)調(diào)用,一般不允許在同一個進程中發(fā)生嵌套或遞歸。用戶使用系統(tǒng)調(diào)用時,產(chǎn)生一條相應(yīng)的指令,處理機在執(zhí)行到該指令時發(fā)生相應(yīng)的中斷,并發(fā)出有關(guān)信號給該處理機構(gòu)。該處理機構(gòu)在收到了處理機發(fā)來的信號后,啟動相關(guān)的處理程序完成。系統(tǒng)調(diào)用執(zhí)行過程如圖2-4所示。圖2-4系統(tǒng)調(diào)用過程
(1)為執(zhí)行系統(tǒng)調(diào)用命令做準備。其主要工作是把用戶程序的“現(xiàn)場”保留起來,并把系統(tǒng)調(diào)用命令的編號等參數(shù)放入約定的存儲單元。
(2)根據(jù)系統(tǒng)調(diào)用的編號,訪問系統(tǒng)調(diào)用入口表,找到相應(yīng)子程序的入口地址,然后轉(zhuǎn)去執(zhí)行。
(3)系統(tǒng)調(diào)用命令執(zhí)行完成后的處理。這包括恢復“現(xiàn)場”,并把系統(tǒng)調(diào)用的返回參數(shù)或參數(shù)區(qū)首址放入指定的通用寄存器中,以供用戶程序使用。1.什么是管態(tài)?什么是目態(tài)?
2.什么是中斷?在操作系統(tǒng)中為何要引入中斷?
3.中斷的分類有哪些?
4.什么是中斷響應(yīng)?
5.用戶與操作系統(tǒng)的接口是什么?
6.什么是系統(tǒng)調(diào)用?
7.簡述系統(tǒng)調(diào)用的執(zhí)行過程。
8.簡述系統(tǒng)調(diào)用和一般過程調(diào)用的區(qū)別。習題3.1進程的引入3.2進程的描述3.3進程控制3.4進程控制的實現(xiàn)舉例習題3.1.1程序的順序執(zhí)行
1.程序順序執(zhí)行
一個程序通常由若干個程序段組成,它們必須按照某種先后次序來執(zhí)行,僅當前一操作執(zhí)行完后,才能執(zhí)行后續(xù)操作,這類執(zhí)行過程就是程序的順序執(zhí)行。例如,在處理一個作業(yè)時,總是先輸入用戶的程序和數(shù)據(jù),然后進行計算,最后將所得的結(jié)果打印出來。若用結(jié)點代表各個程序段的操作,其中I代表輸入操作,C代表計算操作,P代表打印操作,則上述程序段的執(zhí)行過程如圖3-1所示。對一個作業(yè)的輸入、計算和打印三個操作,必須順序執(zhí)行。3.1進?程?的?引?入圖3-1程序的順序執(zhí)行
2.程序順序執(zhí)行的特征
1)順序性
當順序程序在處理機上執(zhí)行時,處理機的操作是嚴格按照程序所規(guī)定的順序執(zhí)行的,即只有前一操作結(jié)束后,才能執(zhí)行后續(xù)操作。
2)封閉性
程序是在封閉的環(huán)境下運行的。即程序在運行時,它獨占全機資源,因而機內(nèi)各資源的狀態(tài)只有本程序才能改變。程序一旦開始運行,其執(zhí)行結(jié)果不受外界因素的影響。
3)可再現(xiàn)性
只要程序執(zhí)行時的環(huán)境和初始條件相同,當程序多次重復執(zhí)行時,不論它是從頭到尾不停頓地執(zhí)行,還是“停停走走”地執(zhí)行,都將獲得相同的結(jié)果。3.1.2程序的并發(fā)執(zhí)行
1.程序并發(fā)執(zhí)行
如圖3-1所示的輸入操作、計算操作和打印操作是一個作業(yè)的三個處理過程,邏輯上要求順序執(zhí)行。但實際上,實現(xiàn)上述三個步驟的輸入機、中央處理機和打印機這三個物理部件是可以同時操作的。由于作業(yè)本身的特點,這三個作業(yè)步驟只能順序執(zhí)行。當有一批作業(yè)進行處理時,情況就不同了。輸入了作業(yè)1的程序和數(shù)據(jù)后,在對該作業(yè)進行計算的同時,可輸入作業(yè)2的程序和數(shù)據(jù),即作業(yè)1的計算操作和作業(yè)2的輸入操作同時進行。如圖3-2所示,說明了系統(tǒng)對一批作業(yè)進行處理時,各程序段執(zhí)行的先后順序。圖3-2程序的并發(fā)執(zhí)行從圖3-2中可以看出,有的程序執(zhí)行是有先后順序的,如:I1先于I2和C1,C1先于P1和C2等。有的程序段可以并發(fā)執(zhí)行,如:I2和C1,C2和P1。所以,對于并發(fā)執(zhí)行的程序來說,它有時處于執(zhí)行狀態(tài),但由于并發(fā)程序之間的相互制約關(guān)系,有時因需要的某種資源得不到滿足,處于暫停狀態(tài)。因此,并發(fā)程序執(zhí)行時就是像這樣停停走走向前推進的。為了能正確反映程序執(zhí)行時的活動規(guī)律和狀態(tài)變化,要引入一個新的概念——進程,以便從變化的角度動態(tài)地描述程序的執(zhí)行。
2.程序并發(fā)執(zhí)行時的特征
1)間斷性
程序在并發(fā)執(zhí)行時,由于它們共享資源或為完成同一項任務(wù)而相互合作,致使在并發(fā)程序之間形成了相互制約的關(guān)系。例如,圖3-2所示的I、C和P是三個相互合作的程序,當計算程序完成Ci-1的計算后,如果輸入程序I但計算程序尚未完成Ii的處理,則計算程序就無法進行Ci的處理,致使計算程序暫停運行。又如,打印程序完成了Pi的打印后,若計算程序尚未完成對Ci-1的計算,則打印程序就無法對Ci-1的處理結(jié)果進行打印。一旦使某程序暫停的因素消失,計算程序便可恢復執(zhí)行對Ci進行處理。簡言之,相互制約將導致并發(fā)程序具有“執(zhí)行-暫停執(zhí)行-執(zhí)行”這種間斷性的活動規(guī)律。
2)失去封閉性
程序在并發(fā)執(zhí)行時,是多個程序共享系統(tǒng)中的各種資源,因而這些資源的狀態(tài)將由多個程序來改變,致使程序的運行已失去了封閉性。這樣,某程序在執(zhí)行時,必然會受到其他程序的影響。例如,當處理機資源被其他程序占有時,某程序必須等待。
3)不可再現(xiàn)性
程序在并發(fā)執(zhí)行時,由于失去了封閉性,也將導致失去其可再現(xiàn)性。現(xiàn)以兩個并發(fā)的循環(huán)程序共用一個公共變量N來說明這個問題。設(shè)程序A每執(zhí)行一次都要做N=N+1操作,程序B每隔一定時間打印出N值,并將它重新置為0,變量N的初值為N0。這兩個程序如圖3-3所示。圖3-3兩個程序并發(fā)執(zhí)行實例由于程序A和程序B的執(zhí)行都以各自獨立的速度向前推進,故程序A與程序B之間對變量N的操作會有如下三種可能:
(1)程序A的N=N+1操作,在程序B的PRINT(N)和N=0操作之前,如圖3-4所示。
這種情況下打印機打印出來的N值為“N0+1”。
(2)程序A的N=N+1操作,在程序B的PRINT(N)和N?=?0操作之間,如圖3-5所示。
這種情況下打印機打印出來的N值為“N0”。
(3)程序A的N=N+1操作,在程序B的PRINT(N)和N=0操作之后,如圖3-6所示。圖3-4第一種執(zhí)行情況圖3-6第三種執(zhí)行情況這種情況下打印機打印出來的N值為“N0”。
之所以出現(xiàn)上述錯誤,是因為它們公用了一個公共變量N,而又沒有采取恰當?shù)拇胧?。這個例子說明并發(fā)程序的執(zhí)行結(jié)果與執(zhí)行速度有關(guān),也就是說,并發(fā)程序已喪失了順序程序所具有的封閉性和可再現(xiàn)性的特征。3.2.1進程的定義
進程的概念是在20世紀60年代初期,首先由美國麻省理工學院的MULTICS和IBM公司的CTSS/360系統(tǒng)引入的,其后又有許多人從不同的角度給進程下過各種定義。其中較能反映進程實質(zhì)的定義有:
(1)進程是程序的一次執(zhí)行。
(2)進程可定義為一個數(shù)據(jù)結(jié)構(gòu)及能在其上進行操作的一個程序。
3.2進?程?的?描?述
(3)進程是一個程序與其數(shù)據(jù)一起通過處理機的執(zhí)行所發(fā)生的活動。
(4)進程是程序在一個數(shù)據(jù)集合上的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。
據(jù)此,可以把進程定義為:可并發(fā)執(zhí)行的程序在處理機上的執(zhí)行過程。
顯然,進程和程序是兩個截然不同的概念。程序是指令的有序集合,本身沒有任何運行的含義。而進程是程序在處理機上的一次執(zhí)行過程,是一個動態(tài)的概念,進程是有生命期的,能夠動態(tài)地產(chǎn)生和消亡。其動態(tài)性還表現(xiàn)為:“進程由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,因得不到資源而暫停,由撤銷而消亡”。程序和進程是既有區(qū)別又有聯(lián)系的兩個概念,它們的區(qū)別如下:
(1)程序是一個靜態(tài)的概念,而進程是一個動態(tài)的概念。
(2)程序的存在是永久的,而進程是有生命期的。
(3)進程是一個能獨立運行的基本單位,是系統(tǒng)資源分配和調(diào)度的基本單位。
(4)進程與程序之間不是一一對應(yīng)的,即同一程序同時運行于若干不同的數(shù)據(jù)集合上,屬于若干個不同的進程。3.2.2進程的基本狀態(tài)
前面已經(jīng)介紹過,進程并不是一口氣運行到底的,它與并發(fā)執(zhí)行的其他進程的執(zhí)行是相互制約的。進程有時處于運行狀態(tài),有時又由于某種原因而暫停,等到使它暫停的原因消失后,它又準備運行了,所以進程在運行中不斷地改變其運行狀態(tài)。一個進程在活動期間至少具備以下三種狀態(tài):就緒狀態(tài):當進程已經(jīng)獲得除處理機以外的所有資源后,一旦獲得CPU,就可以立即運行,這時的進程狀態(tài)稱為就緒狀態(tài)。在一個系統(tǒng)中,可以有多個進程同時處于就緒狀態(tài),通常把這些進程排成一個或多個隊列,稱為就緒隊列。
運行狀態(tài):進程已獲得處理機,它的程序正在執(zhí)行,這時的進程狀態(tài)稱為運行狀態(tài)。在單處理機系統(tǒng)中,只能有一個進程處于運行狀態(tài)。只有在多處理機系統(tǒng),才存在運行隊列。等待狀態(tài):進程因發(fā)生某事件(如請求I/O等)而暫時停止運行,即使給它CPU也無法運行,這時的進程狀態(tài)稱為等待狀態(tài),也稱為阻塞狀態(tài)。把處于等待狀態(tài)的進程排成一個隊列,稱為等待隊列。有時也按阻塞的原因不同排成多個隊列。
進程并非固定地處于某個狀態(tài),它將隨著程序的執(zhí)行和外界條件的變化而發(fā)生變化,可以用進程狀態(tài)變遷圖(如圖3-7所示)來說明系統(tǒng)中進程的狀態(tài)和這些狀態(tài)之間變遷的原因。在圖3-7中,以結(jié)點表示進程的狀態(tài),以箭頭表示狀態(tài)的變化。圖3-7進程狀態(tài)變遷圖從圖3-7中可以看出,處于就緒狀態(tài)的進程,當進程調(diào)度程序為它分配了處理機后,該進程由就緒狀態(tài)變?yōu)檫\行狀態(tài);正在運行的進程因發(fā)生某事件而無法執(zhí)行,則進程將由運行狀態(tài)變?yōu)樽枞麪顟B(tài);處于阻塞狀態(tài)的進程,若其等待的事件已經(jīng)發(fā)生,則由阻塞狀態(tài)變?yōu)榫途w狀態(tài);正在執(zhí)行的進程,如因時間片用完而被暫停執(zhí)行,該進程由執(zhí)行狀態(tài)轉(zhuǎn)為就緒狀態(tài)。3.2.3進程的描述
當程序并發(fā)執(zhí)行時,由于并發(fā)程序之間的相互制約關(guān)系,造成程序在執(zhí)行過程中受阻而暫停,如果系統(tǒng)無法保留該程序的現(xiàn)場,也就意味著無法恢復該程序的現(xiàn)場以繼續(xù)執(zhí)行。為了使程序在多道程序設(shè)計環(huán)境下能并發(fā)執(zhí)行,并能對并發(fā)執(zhí)行的程序加以控制和描述,專門配置了稱為“進程控制塊”的數(shù)據(jù)結(jié)構(gòu)。
1.進程控制塊
為了描述和控制進程的運行,系統(tǒng)為每個進程定義了一個數(shù)據(jù)結(jié)構(gòu)——進程控制塊(PCB,ProcessControlBlock)。所謂系統(tǒng)創(chuàng)建一個進程,就是由系統(tǒng)為某個程序設(shè)置一個PCB,用于對該進程進行控制和管理。進程執(zhí)行完成時,由系統(tǒng)收回其PCB,該進程便消亡了。
對于不同的操作系統(tǒng)來說,進程PCB所包含的內(nèi)容會有些不同,但通常會包括表3-1所示的內(nèi)容。表3-1進程PCB結(jié)構(gòu)對PCB所包含的內(nèi)容具體說明如下:
(1)進程標識符(NAME):每個進程都必須有唯一的標識符,以區(qū)別于系統(tǒng)內(nèi)的其他進程。在進程創(chuàng)建時,由創(chuàng)建者給出進程的標識符。
(2)進程當前狀態(tài)(STATUS):說明本進程目前處于何種狀態(tài),即運行、就緒或等待,以作為進程調(diào)度程序分配處理機的依據(jù)。
(3)進程隊列指針(NEXT):用于記錄處于同一狀態(tài)下的下一個PCB的地址,以此可以將同一狀態(tài)的所有進程鏈接起來。
(4)總鏈指針(ALL-Q-NEXT):當系統(tǒng)中存在大量進程時,所有的進程根據(jù)自己的狀態(tài)分別處于相應(yīng)的隊列中,這便于對進程實施調(diào)度控制。當進行某些管理功能,如執(zhí)行創(chuàng)建新進程時,就感到系統(tǒng)具有所有進程的總鏈將是十分方便的。因為進程的標識符必須是唯一的,為了避免重名,必須先檢查系統(tǒng)中已有的進程名,如果在各個不同狀態(tài)的隊列中進行查詢是非常麻煩的,所以,通過提供一個總鏈指針來方便查詢。PCB中的該項內(nèi)容是存放總鏈隊列中下一個PCB的地址。
(5)程序開始地址(START-ADDR):該進程的程序從此地址開始執(zhí)行。
(6)進程優(yōu)先級(PRIORITY):反映進程要求CPU的緊迫程度,優(yōu)先級高的進程可以優(yōu)先獲得CPU。
(7)CPU現(xiàn)場保護(CPUSTATUS):當進程因某種原因釋放處理機時,CPU現(xiàn)場信息被保存在PCB的該區(qū)域中,以便在進程重新獲得處理機后繼續(xù)執(zhí)行。
(8)通信信息(COMMUNICATION-INFORMATION):記錄該進程在執(zhí)行過程中與別的進程所發(fā)生的信息交換情況。
(9)進程家族(PROCESS-FAMILY):有的系統(tǒng)允許進程創(chuàng)建子進程,從而形成一個進程家族樹。在PCB中必須指明進程與家族的關(guān)系。
(10)占有資源清單(OWN-RESOURCE):列出進程所需資源及當前已分配資源清單。
2.進程的組成
從結(jié)構(gòu)上講,每個進程都是由程序、數(shù)據(jù)和一個進程控制塊PCB組成的,如圖3-8所示。進程的程序部分描述了進程所要完成的功能。數(shù)據(jù)集合是程序在執(zhí)行時所需要的數(shù)據(jù)和工作區(qū)。這兩部分是進程存在的基礎(chǔ)。PCB是進程存在的標識。圖3-8進程的組成3.2.4進程PCB的組織方式
在一個系統(tǒng)中,通常存在許多PCB。為能對它們實現(xiàn)有效的管理,應(yīng)采用適當?shù)姆绞綄⑺鼈兘M織起來。目前常用的組織方式有鏈接方式和索引方式兩種。
1.鏈接方式
把具有相同狀態(tài)的PCB用其中的鏈接字鏈接成一個隊列,這樣,可形成就緒隊列、若干個阻塞隊列和空白隊列等。對其中的就緒隊列常按進程優(yōu)先權(quán)的大小排列,把優(yōu)先權(quán)高的進程的PCB排在隊列前面。此外,也可根據(jù)阻塞原因的不同,把處于阻塞狀態(tài)的進程的PCB排成等待I/O操作完成隊列、等待分配內(nèi)存隊列。圖3-9所示是一種鏈接隊列的組織
方式。圖3-9PCB鏈接隊列示意圖
2.索引方式
系統(tǒng)根據(jù)所有進程的狀態(tài),建立幾張索引表。例如,就緒索引表、阻塞索引表等。并把各索引表在內(nèi)存的首地址記錄于內(nèi)存中的一些專用單元中。在每個索引表的表目中,記錄具有相應(yīng)狀態(tài)的某個PCB在PCB表中的地址。按索引方式組織PCB,如圖3-10所示。圖3-10按索引方式組織PCB3.3.1進程創(chuàng)建
進程創(chuàng)建是由創(chuàng)建原語實現(xiàn)的。當需要進程時,就可以建立一個新進程。被創(chuàng)建的進程稱為子進程,創(chuàng)建者稱為父進程。
創(chuàng)建原語的主要功能是為被創(chuàng)建進程形成一個PCB,并填入相應(yīng)的初始值,同時將PCB插入就緒隊列,返回一個進程的標識號(PID)。該原語的實現(xiàn)過程如圖3-11所示。3.3進程控制圖3-11進程創(chuàng)建算法流程圖3.3.2進程撤銷
進程撤銷是由撤銷原語實現(xiàn)的。一個進程在完成其任務(wù)后,應(yīng)予以撤銷,以便及時釋放所占有的各類資源。
撤銷原語的主要功能是收回被撤銷進程占用的所有資源,并撤銷它的PCB,從總鏈隊列中摘除它,然后轉(zhuǎn)進程調(diào)度程序。該原語實現(xiàn)過程如圖3-12所示。圖3-12
進程撤銷算法流程圖3.3.3進程的阻塞與喚醒
阻塞原語的作用是將進程由執(zhí)行狀態(tài)轉(zhuǎn)為阻塞狀態(tài),而喚醒原語的作用是將進程由阻塞狀態(tài)轉(zhuǎn)為就緒狀態(tài)。
當一個進程所期待的某一事件尚未出現(xiàn)時,該進程調(diào)用阻塞原語將自己阻塞起來。阻塞原語在阻塞一個進程時,由于該進程正處于執(zhí)行狀態(tài),應(yīng)先中斷處理機和保存該進程的CPU現(xiàn)場,然后將該進程插入到等待該事件的等待隊列中,再從就緒隊列中選擇一個新的進程投入運行。該原語實現(xiàn)過程如圖3-13所示。進程由運行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài)是由于進程必須等待某一事件的發(fā)生,因此處于等待狀態(tài)的進程是絕對不可能叫醒自己的。當該進程期待的事件出現(xiàn)時,由發(fā)現(xiàn)者進程調(diào)用喚醒原語將阻塞的進程喚醒,使其進入就緒狀態(tài)。發(fā)現(xiàn)者進程和被喚醒進程是合作的并發(fā)進程。喚醒原語的功能是:當進程等待的事件發(fā)生時,喚醒該進程。該原語實現(xiàn)過程如圖3-14所示。圖3-13進程阻塞算法流程圖圖3-14進程喚醒算法流程圖
1.進程創(chuàng)建
Linux系統(tǒng)中,除初始化進程外,其他進程都是通過fork()系統(tǒng)調(diào)用建立的。使用fork()的進程為父進程,通過fork()創(chuàng)建的新進程為子進程。使用fork()系統(tǒng)調(diào)用后,對父進程返回子進程的進程號,對子進程返回零。3.4進程控制的實現(xiàn)舉例利用fork()系統(tǒng)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 泌外主治醫(yī)師試題及答案
- 2025年鶴壁黎陽中學招聘教師若干名模擬試卷附答案詳解(完整版)
- 2025昆明市盤龍區(qū)雙龍街道衛(wèi)生院招聘編外人員模擬試卷及答案詳解(奪冠系列)
- 2025北京市海淀區(qū)成志幼兒園招聘2人模擬試卷附答案詳解(完整版)
- 2025湖南張家界市永定區(qū)發(fā)展和改革局招聘公益性崗位工作人員考前自測高頻考點模擬試題及完整答案詳解
- 2025福建廈門市集美實驗學校非在編教師招聘1人考前自測高頻考點模擬試題及完整答案詳解一套
- 大體積混凝土知識培訓課件
- 公司玻璃制品熱加工工技能操作考核試卷及答案
- 公司附著升降腳手架安裝拆卸工測試考核試卷及答案
- 公司內(nèi)燃機車鉗工崗前考核試卷及答案
- 《電動自行車停放充電場所消防技術(shù)規(guī)范》(DB 32-T 3904-2020)
- 2024年廢舊船舶拆解合同范本
- 川教版2024-2025學年五年級上冊信息技術(shù)全冊教案
- 清潔間歇性導尿的護理
- 哈工大課件教學課件
- 森林防火智能預(yù)警監(jiān)測系統(tǒng)方案
- 2024~2025學年中考數(shù)學重難創(chuàng)新題 二次函數(shù)性質(zhì)綜合題含答案
- 《 大學生軍事理論教程》全套教學課件
- 1200噸黑水虻養(yǎng)殖項目可行性研究報告寫作模板-備案審批
- office辦公軟件試題
- 13《黃鶴樓》公開課課件
評論
0/150
提交評論