操作系統和類型 (2007-8-15 22:17) 1、操作系統概念 是電腦系統的一種系統軟體,由它統一管理電腦系統的資源和控製程序的執行。 2、分類 (1) 批處理操作系統 何問起 hovertree.com 作業——把用戶要求電腦系統進行處理的一個計算問題稱為一個作業。 批處理操作系統—— ...
操作系統和類型
(2007-8-15 22:17)
1、操作系統概念 是電腦系統的一種系統軟體,由它統一管理電腦系統的資源和控製程序的執行。 2、分類 (1) 批處理操作系統 何問起 hovertree.com 作業——把用戶要求電腦系統進行處理的一個計算問題稱為一個作業。 批處理操作系統——用戶為作業準備好程式和數據後,再寫一份控製作業執行的說明書。然後把作業說明書、相應的程式和數據一起交給操作員。操作員將收到的一批作業的有關信息輸入到電腦系統中等待處理,由操作系統選擇作業並按其作業說明書的要求自動控製作業的執行。採用這種批量化處理作業的操作系統稱為“批處理操作系統”。 批處理系統按照預先寫好的作業說明書控製作業的執行。因此,作業執行時無需人工干預,實現了電腦操作的自動化。 批處理操作系統可分為批處理單道系統和批處理多道系統。 “單道”的意思是指一次只有一個作業裝入電腦系統的主存儲器運行。 多道程式設計的硬體支持:中斷和通道。 批處理多道系統能極大地提高電腦系統的工作效率,具體表現為(理由): 1)多道作業並行工作,減少了處理器的空閑時間,即提高了處理器的利用率。 2)作業調度可以按照一定的組合選擇裝入主存儲器的作業,只要搭配合理,則可充分利用電腦系統的資源。 3)作業執行過程中,不再訪問低速的設備,而是直接在高速的磁碟上存取信息,從而縮短了作業執行時間,使單位時間內的處理能力得到提高。 4)作業成批輸入、自動選擇和控製作業執行,減少了人工操作時間和作業交接時間,有利於提高系統的吞吐率。 批處理系統的缺點是在作業執行時用戶不能直接干預作業的執行。http://hovertree.com/hovertreescj/ (2)分時操作系統 分時操作系統——能使用戶通過與電腦相連的終端來使用電腦系統,允許多個用戶與電腦系統進行一系列的交互,並使得每個用戶感到好像自己獨占一臺支持自己請求服務的電腦系統。具有這種功能的操作系統稱為“分時操作系統”,簡稱為“分時系統”。 在分時系統中,為了使一個電腦系統能同時為多個終端用戶服務,系統採用了分時技術。 分時技術:把CPU時間劃分成許多時間片,每個終端用戶每次可以使用一個由時間片規定的CPU時間。這樣,多個終端用戶就輪流地使用CPU時間。如果某個用戶在規定的一個時間片內沒有完成工作,這時也要把CPU讓給其它用戶,等待下一輪再使用一個時間片的時間,迴圈輪轉,直至結束。 批處理多道系統是實現自動控制無需人工干預的系統,而分時系統是實現人機交互的系統。 分析系統的主要特點? 5) 同時性 允許多個終端用戶同時使用一個電腦系統。 6) 獨立性 用戶在各自的終端上請求系統服務,彼此獨立,互不幹擾。好像每個用戶只有自己在單獨使用電腦系統,而實際上電腦系統在被多用戶分享。 7)及時性 對用戶的請求能在較短時間內給出應答。使用戶覺得系統及時相應了他的請求而得到滿意。 8)交互性 採用人-機對話的方式工作。用戶在終端上可以直接輸入、調試和運行自己的程式,能及時修改程式中的錯誤且直接獲得結果。 分時系統適合於短小作業,對於一些需要處理較長時間才有結果且不需要交互的大型作業來說,比較適合於用批處理系統。因此,有些操作系統既有批處理能力,又提供分時交互的能力。 前臺作業——由分時系統控制的作業稱為前臺作業。 後臺作業——由批處理系統控制的作業稱為後臺作業。 (3)實時操作系統 實時操作系統——能使電腦系統接收到外部信號後及時進行處理,併在嚴格的規定時間內處理結束,再給出反饋的操作系統稱為“實時操作系統”,簡稱為“實時系統”。 實時系統是較少有人為干預的監督和控制系統,僅當電腦系統識別到了違反系統規定的限制或本身發生故障時,才需要人為干預。 設計實時操作系統時有兩點必須特別註意: 1)要及時響應、快速處理。何問起 hovertree.com 2)要求有高可靠性、不強求系統資源的利用率。 (4)網路操作系統 網路操作系統——為電腦網路配置的操作系統稱為“網路操作系統”。網路操作系統把電腦網路中的各台電腦有機地聯合起來,實現各台電腦之間的通信及網路中各種資源的共用。用戶可以藉助通信系統使用網路中其它電腦的資源、實現相互間的信息交換,從而大大擴展了電腦的應用範圍。 (5)分散式操作系統 為分散式電腦系統配置的操作系統稱為“分散式操作系統”,分散式操作系統能使系統中若幹台電腦相互協作完成一個共同的任務,在分散式操作系統控制下,使各台電腦組成了一個完整的、功能強大的電腦系統。 分散式電腦系統——是由多台電腦組成的一種特殊的電腦網路。網路中的各台電腦沒有主次之分;網路中任意兩台電腦可以通過通信交換信息;網路中的資源供各用戶共用。 3、操作系統的功能 從資源管理的觀點出發,操作系統的功能可分為:處理器管理、存儲管理、文件管理、設備管理和作業管理等五大功能。 十、處理器管理 1、多道程式設計 多道程式設計——讓多個計算問題同時裝入一個電腦系統的主存儲器並行執行,這種設計技術稱為“多道程式設計”,這種電腦系統稱為“多道程式設計系統”或簡稱“多道系統”。 在多道程式設計的系統中,應採用“存儲保護”的方法保證各道程式互不侵犯。 程式浮動——在多道程式設計的系統中,要求編製的程式存放在主存的任何區域都能正確執行。甚至在執行過程中,當程式被改變了存放區域,其執行仍不受影響,也就是說,程式可以隨機地從主存的一個區域移動到另一個區域,程式被移動後絲毫不影響它的執行,這種技術稱為“程式浮動 採用多道程式設計的技術後,可有效地提高系統中資源的利用率,增加單位時間內算題量,從而提高了系統吞吐量。具體表現為: 1)提高了處理機的利用率。 2)充分利用外圍設備資源。 只要將使用不同設備的程式搭配在一起,同時裝入主存儲器,那麼,系統中的各種外圍設備都經常會處於忙碌狀態,使系統中的設備資源被充分利用。 3)發揮了處理器與外圍設備以及外圍設備之間的並行工作能力。 2、進程概念和屬性 進程——把一個程式在一個數據集合上的一次執行稱為一個進程。進程是操作系統中可以並行工作的基本單位,也是核心調度及資源分配的最小單位,它由程式、數據還有進程式控制制塊PCB組成,它與程式的重要區別之一是:進程是有狀態的,而程式沒有,程式是靜態的。進程與程式並非是一一對應的。一個程式運行在不同的數據集上就構成不同的進程,能得到不同的結果。。在SMP系統中,操作系統還提供了線程機制,它是處理器分配的最小單位。 進程的5個基本特征: 動態性: 進程是進程實體的執行過程,進程由創建而產生、由調度而執行,因得不到資源而暫停執行,並且隨著撤消而消亡,有一定的生命期; 併發性: 多個進程實體存在於記憶體中,能在一段時間內同時運行。引入進程的目的就是為了使其程式與其他進程的程式併發執行,而程式不能併發執行。 獨立性: 進程實體是能獨立運行的基本單位,同時也是系統中獨立獲得資源和獨立調度的基本單位。 非同步性: 進程實體按各自獨立的、不可預知的速度向前推進; 結構特征: 進程是由程式段、數據段和進程式控制制塊三部分組成。在操作系統中,進程是進行系統資源分配、調度和管理的最小單位。 例題: ___1___是操作系統中可以並行工作的基本單位,也是核心調度及資源分配的最小單位,它由___2___組成,它與程式的重要區別之一是:___3___。在SMP系統中,操作系統還提供了___4___制,它是___5___的最小單位。 1: A. 作業 B. 過程 C. 函數 D. 進程 2: A. 程式、數據和標識符 B. 程式、數據和PCB C. 程式、標識符和PCB D. 數據、標識符和PCB 3:A. 程式可占用資源,而它不可 B. 程式有狀態,而它沒有 C. 它有狀態,而程式沒有 D. 它能占有資源,而程式不能 4: A. 約束 B. 線程 C. 共用 D. 分時 5: A. 存儲器分配 B. 資源分配 C. 處理器分配 D. 網路結點分配 解答:1.D 2.B 3.C 4.B 5.C 3、進程的狀態和轉換 進程在執行過程中狀態會不斷地變化,每個進程在任何時刻總是處於三種基本狀態(運行態、就緒態、阻塞態)的某一種基本狀態。三種狀態之間的轉換關係為: 運行態→阻塞態(等待):往往是由於等待外設,等待主存等資源分配或等待人工干預而引起的。 阻塞態→就緒態:則是等待的條件已滿足,只需要分配到處理器後就能運行。 運行態→就緒態:不是由於自身原因,而是由於外界原因使運行狀態的進程讓出處理器,這時候就變成就緒態。 就緒態→運行態:系統按某種策略選中就緒隊列中的一個進程占用處理器,此時就變成了運行態。 在不少系統中,還增加了兩種基本狀態: 新狀態:一個進程剛剛建立,但還未將它送入就緒隊列時的狀態。 終止狀態:當一個進程已經正常結束或異常結束,系統已將它從就緒隊列中移出,但尚未將它撤消時的狀態。 4、進程調度演算法 常用的進程調度演算法有先來先服務、優先數、時間片輪轉及分級調度等演算法。 (1)先來先服務調度演算法 先來先服務進程調度演算法——這種調度演算法是按進程進入就緒隊列的先後次序選擇可以占用處理器的進程。當有進程就緒時,把該進程排入就緒隊列的末尾,而進程調度總是把處理器分配給就緒隊列中的第一個進程。一旦一個進程占有了處理器,它就一直運行下去,直到因等待某個事件或進程完成了工作才讓出CPU 特點分析: 優點:演算法簡單 缺點:有時會使進程等待分配處理器的平均時間較長。 例:就緒隊列中依次有A、B、C三個進程,它們的處理時間分別為3ms、3ms、24ms。按先來先服務的順序,進程A先占用CPU,則它們的平均等待時間為(0+3+6)/3=3ms。 如果進程是按C,B,A的次序進入隊列,則這三個進程的平均等待時間為(27+24+0)/3=17ms。 可見,當運行時間較長的進程先就緒時,先來先服務演算法使系統效率受到影響。 (2)優先數調度演算法 優先數進程調度演算法——對每個進程確定一個優先數,進程調度總是讓具有最高優先數的進程先使用處理器。如果進程具有相同的優先數,則對這些有相同優先數的進程再按先來先服務的次序分配處理器。 為了調度方便,就緒隊列中進程可按優先數從大到小排列。 一般,讓系統進程的優先數大於用戶進程的優先數,重要計算問題的進程優先數大於一般計算問題的進程優先數,互動式作業進程的優先數大於批處理作業進程的優先數。 進程被創建時系統為其確定一個優先數,進程的優先數可以是固定的,也可以是動態變化的。例如:提高進程使用外圍設備的進程的優先數,有利於處理器與外圍設備的處理能力;提高較長時間未使用處理器的就緒進程的優先數,以縮短等待處理器的平均時間。 一個高優先數的進程占用處理器後,系統可有兩種方式對待它。一種是“非搶占式”,一種是“搶占式”。搶占式進程調度演算法適合於實時系統。 (3)時間片輪轉調度演算法 (4)分級調度演算法 分級調度演算法——分級調度演算法由系統設置多個就緒隊列,每個就緒隊列中的進程按時間片輪轉法占用處理器。具體的調度原則是:當有進程就緒時,排入第一級就緒隊列的末尾;當某就緒隊列的一個進程獲得處理器並用完規定的時間片後,它的工作尚未結束,則排入下一級就緒隊列的末尾;當最後一級中的進程占用處理器運行一個規定的時間片後,它的工作尚未完成,則仍排入本隊列的末尾;當占用處理器的進程在規定的時間片內運行時出現等待事件,則排入等待隊列,等待結束後成為就緒狀態排入第一級就緒隊列;第一級就緒隊列的優先順序最高,每次總是先選擇第一級就緒隊列中的進程,僅當該隊列為空時,才從第二級就緒隊列中選進程。若仍為空,則再從下一級就緒隊列中選,依次類推。 對不同就緒隊列中的進程,可規定使用不同長度的時間片。一般來說,第一級就緒隊列中的時間片短一些,以後各級就緒隊列的時間片逐級增長,有利於提高系統吞吐率。但也存在問題,當需要運行時間長的進程進入了低級就緒隊列之後,有可能長時間得不到處理器。 1、線程的基本概念和屬性 線程是進程中可獨立執行的子任務,一個進程中可有一個或多個線程,每個線程都有唯一的一個標識符。 線程有如下屬性: 1)每個線程有唯一的一個標識符和一張線程描述表,線程描述表記錄了線程執行時的寄存器和棧等現場狀態; 2)不同的線程可以執行相同的程式,即同一個服務程式被不同的用戶調用時操作系統為它們創建成不同的線程; 3)同一個進程中的各個線程共用分配給進程的主存空間; 4)線程是處理器的獨立調度單位,多個線程是可以併發執行的。 5)一個線程被創建後便開始了它的生命周期,直至終止。線程的生命周期內會經歷等待態、就緒態和運行態等各種狀態變化。 線程與進程有許多相似之處,為此線程也稱為輕型進程。 在採用線程的操作系統中,線程與進程的根本區別在於進程是資源分配單位,而線程是調度和執行的單位。 在採用進程技術的操作系統中,進程既是資源分配單位又是調度和執行的單位。其缺點主要表現在: 1) 每個進程要占用一個進程式控制制塊和一個私有的主存空間,開銷較大; 2) 進程之間的通信必須要由通信機制來完成,速度較慢; 3)進程增多會給調度和控制帶來複雜性,增加了死鎖的機會。 因此,應儘量避免設計過多的進程。 多線程技術具有明顯的優越性: 1)建線程不需分配資源,因此創建線程比創建進程速度快,且系統開銷少; 2)線程間的通信在同一地址空間中進行,故不需要額外的通信機制,使通信更簡便,信息傳送速度也快; 3)線程能獨立執行,能充分利用和發揮處理器與外圍設備並行工作的能力。 十一、死 鎖 1、死鎖概念 若系統中存在一組進程,它們中的每個進程都占用了某種資源,而又都在等待其中另一個進程所占用的資源,這種等待永遠不能結束,則說明系統出現了死鎖。 2、死鎖形成原因 系統中形成死鎖的原因有兩種: 一是操作系統對資源的管理不當所引起的; 當若幹進程需求資源的總數大於系統能提供的資源數時,進程間就會出現競爭資源的現象,如果對進程競爭資源管理或分配不當就會引起死鎖。 二是沒有顧及進程併發執行時可能出現的情況,與併發進程的執行速度有關。例:5個哲學家吃通心麵問題。 3、系統出現死鎖的四個必要條件 1)互斥使用資源 每個資源每次只允許一個進程使用。 2)占有並等待資源 進程占有某些資源後又申請資源而得不到滿足,處於等待資源狀態且不釋放已經占有得資源。 3)不可強占資源 任何進程不能搶奪其它進程占用的資源,即已被占用的資源只能由占用資源的進程自己來釋放。 4)迴圈等待資源 存在一組進程,其中每個進程都在等待另一個進程占用的資源。 註意,系統出現死鎖的以上四個條件是必要條件而不是充分條件,只要破壞其中任何一個條件就可以防止死鎖。 4、死鎖的防止 死鎖的防止方法:如果有死鎖形成,則4個必要條件一定同時成立,於是,只要採用的資源分配策略能使其中之一不成立,則就能防止死鎖的發生。 (1)互斥條件 要使互斥使用資源的條件不成立,唯一的資源分配策略是允許進程共用資源。 如“只讀文件”是一種很好的共用資源。 要破壞“互斥使用資源”的條件經常是行不通的。如:印表機不能被多個進程共用。對可共用的磁碟來說,任何時刻也只允許一個進程啟動它。 (2)占有並等待條件 要是占有並等待資源的條件不成立,經常使用兩種資源分配策略:靜態分配資源和釋放已占資源。 靜態分配資源策略(也稱為預分配資源)——要求每個進程在開始執行前就申請它所需要的全部資源,僅當系統能滿足進程的資源申請要求且把資源分配給進程後,該進程才能開始執行。 特點:靜態分配資源的策略實現簡單,但降低了資源的利用率。 釋放已占資源策略——這種分配策略是僅當進程沒有占有資源時才允許它去申請資源。如果進程已占用了某些資源而又要再申請資源,則它應先歸還所占的資源後再申請新資源。 特點:仍會使進程處於等待資源狀態,但不會出現占有了部分資源再等待其它資源的現象。 (3)可搶奪條件 搶占式資源分配策略:要使不可搶占其它進程占有的資源不成立,可以約定如下:如果一個進程已經占有了某些資源又要申請新資源,而新資源不能滿足必須等待時,系統可以搶奪該進程已有的資源。具體做法如下: 一個進程申請的資源尚未被占用,則系統可把資源分配給該進程。 若進程A申請的資源R已被進程B占用,則查看進程B的狀態。如果進程B處於等待另一個資源的狀態,那麼就搶奪進程B已占的資源R並把R分配給進程A;如果進程B不是處於等待資源狀態,則讓進程A處於等待資源R的狀態。 一個等待資源的進程只有再得到自己申請的新資源和所有被搶奪的老資源後才能繼續執行。 這種可搶奪的資源分配策略不是對所有資源都適用的,它只適合於主存和處理器。 例如:對印表機、磁帶機等就不能採用搶奪的方式,否則會造成混亂。 (4)迴圈等待條件 按序分配資源——要使迴圈等待條件不成立可採用按序分配的資源分配策略。具體做法是把系統中所有資源排序,對每個資源確定一個編號,規定任何一個進程申請兩個以上的資源時,總是先申請編號最小的資源,再申請編號大的資源。 2、死鎖的避免 死鎖的避免是解決死鎖問題的另一種方法,其思想是當估計到可能有死鎖發生時再設法避免死鎖。它不同於死鎖的防止。 (1)安全狀態 如果操作系統能保證所有進程在有限的時間能得到需要的全部資源,則稱系統處於安全狀態,否則說系統是不安全的。 不安全狀態並不一定會發生死鎖,但它隱含著將發生死鎖。只要系統能保持安全狀態就可以避免死鎖的發生。 例:設系統共有12個同類資源,三個進程。 1)某一時刻進程占有資源的情況如下:進程 | 已占資源數 | 還需要資源數 | 最大需求數 |
P1 | 2 | 7 | 9 |
P2 | 5 | 5 | 10 |
P3 | 2 | 2 | 4 |
進程 | 已占資源數 | 還需要資源數 | 最大需求數 |
P1 | 3 | 7 | 9 |
P2 | 5 | 5 | 10 |
P3 | 2 | 2 | 4 |
資源 進程 | 最大需求量 R1 R2 R3 | 已分配資源數 R1 R2 R3 |
P1 P2 P3 P4 P5 | 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 | 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 |
資源 進程 | 最大需求量 R1 R2 R3 | 還需要的資源量 R1 R2 R3 | 已分配資源數 R1 R2 R3 |
P1 P2 P3 P4 P5 | 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 | 7 4 3 1 2 2 6 0 0 0 1 1 4 3 1 | 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 |
頁號 | 物理塊號 |
0 | 3 |
1 | 7 |
2 | 11 |
3 | 8 |
0 1 | 主存塊號 | 磁碟上的位置 | 標誌 |
頁號 | 塊號 | 改變位 | 引用位 | 標誌位 | 磁碟上的位置 |
1 | 1 | 1 | 4 | 4 | 4 | 5 | 5 | 5 | 5 | 5 | 5 |
2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 3 | 3 | 3 | |
3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 4 | 4 |
3 | 4 | 1 | 2 | 5 | 1 | 2 | 3 | 4 | 5 | ||
2 | 2 | 3 | 4 | 1 | 2 | 5 | 1 | 2 | 3 | 4 | |
1 | 1 | 1 | 2 | 3 | 4 | 1 | 2 | 5 | 1 | 2 | 3 |