《計算機操作系統》 課件全套 第1-7章 概述、處理機管理-操作系統的整體設計_第1頁
《計算機操作系統》 課件全套 第1-7章 概述、處理機管理-操作系統的整體設計_第2頁
《計算機操作系統》 課件全套 第1-7章 概述、處理機管理-操作系統的整體設計_第3頁
《計算機操作系統》 課件全套 第1-7章 概述、處理機管理-操作系統的整體設計_第4頁
《計算機操作系統》 課件全套 第1-7章 概述、處理機管理-操作系統的整體設計_第5頁
已閱讀5頁,還剩521頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章操作系統概述學習要點計算機與操作系統操作系統的功能操作系統的分類操作系統的觀點計算機與操作系統計算機系統實用操作系統計算機系統硬件系統軟件系統中央處理器(CPU)存儲器輸入設備輸出設備內存儲器外存儲器控制器運算器只讀存儲器(ROM)隨機存儲器(RAM)系統軟件應用軟件操作系統程序設計語言系統服務程序各種應用程序用戶為特殊用途設計的各種程序實用操作系統對于個人機用戶來說,最常見的情況是,打開計算機的電源后,等待熒光屏上閃爍的文字圖像逐漸的穩定下來。穩定以后我們看到了Windowsxp所展示的任務桌面實用操作系統如果想看看自己的計算機里到底裝了什么軟件,可以點擊我的電腦中的“本地磁盤”;如果想了解設備的設置情況,可以點擊“開始→設置→控制面板”;如果想看看系統在怎樣運作,想知道系統的一些動態狀況,可以點擊“開始→控制面板→管理工具→性能→系統監視器”實用操作系統IBMSystem/360操作系統MULTICS(MULTiplexedInformationandComputingService)操作系統Unix操作系統MSDOS操作系統MACOSWindows操作系統Linux操作系統其他操作系統實用操作系統IBMSystem/360操作系統

1964年IBM推出,一個巨大的志在解決所有問題的通用操作系統。數千名程序員寫的數百萬行匯編語言代碼,數百萬行匯編代碼中有成千上萬處錯誤,IBM不斷發行新的版本試圖更正這些錯誤,如此往復直到發現錯誤的數量大致保持不變。

實用操作系統MULTICS(MULTiplexedInformationandComputingService)操作系統1965年MIT、貝爾實驗室和通用電氣公司開始共同研究,但由于長期研制工作達不到預期目標,貝爾實驗室和通用電氣公司相繼退出,只有MIT堅持下來,使之成功運行,成為商業產品,該系統在九十年代中陸續被關閉,2000年壽終正寢。

實用操作系統Unix操作系統美國電報電話公司的貝爾實驗室于1969年開發成功,1973年用出C語言改寫,1978年的Unix第7版,可以看作當今Unix的祖先,該版為Unix走進商界奠定了基礎。Unix是目前唯一可以安裝和運行在從微型機、工作站直到大型機和巨型機上的操作系統。目前Unix已不是指一個具體操作系統,許多公司和大學都推出了自己的Unix系統,如AT&T的SVR,SUN的Solaris,Berkeley的UnixBSD,DEC的DigitalUnix,HP的HPUX,SGI的Irix,CMU的Mach,SCO公司的SCOUnixWare,IBM的AIX等。UNIX用C語言編寫,具有可移植的,是一個良好的、通用的、多用戶、多任務、分時的操作系統。其運行時的安全性、可靠性以及強大的計算能力贏得廣大用戶的信賴

實用操作系統MSDOS操作系統和它的名字一樣(DiskOperatingSystem),其特點在于優良的文件系統,是一個單用戶單任務操作系統。MSDOS系統開銷小,運行效率高,適用于微型機,但無法發揮硬件能力,缺乏對數據庫、網絡通信的支持,沒有通用的應用程序接口,用戶界面不友善,最后一個版本6.22在1994年推出后便不再后續

實用操作系統MACOS由美國Apple公司1984推出,運行在Macintosh計算機上的操作系統。MAC是全圖形化界面和操作方式的鼻祖,擁有全新的窗口系統、強有力的多媒體開發工具和操作簡便的網絡結構而風光一時。正是Mac先進的圖形界面操作系統技術,超前PC機若干年,造就了一批蘋果的忠實追隨者

實用操作系統Windows操作系統1985年Windows1.0正式上市。Windows操作系統發展至今,已成為普及最廣的多任務操作系統,即插即用和電源管理,新的圖形界面,更加高級的多媒體支持,不斷更新的版本和功能,預示著強大的發展后勁。本書選Windowsxp作為講解實例便是基于這些考慮

實用操作系統Linux操作系統由芬蘭藉科學家LinusTorvalds于1991年編寫完成的一個操作系統內核,當時他還是芬蘭赫爾辛基大學計算機系的學生,在學習操作系統課程中,自己動手編寫了一個操作系統原型,并把這個系統放在Internet上,允許自由下載,許多人對這個系統進行改進、擴充、完善,Linux由最初一個人寫的原型變化成在Internet上由無數志同道合的程序高手參與的一場運動。Linux繼承了Unix的優點,又有了許多更好的改進,由于其開放的源代碼,有利于發展各種操作系統,它符合Unix的POSIX標準,各種應用可方便地移植。它是本書將要講解的另一個操作系統實例

實用操作系統許多計算機用戶可以通過該系統連接在一起,共享計算機的資源,還能夠進行相互交流與協作用戶之間可以相互發信息。一方要向另一方發送信息,只要使用指令writeusername,然后跟上要發送的內容就能將信息傳給接收方。實用操作系統采用廣播的方式如果要將信息發給所有人,還可以采用廣播的方式。你只要在指令wall的后面跟上要發的信息,就能使所有登陸主機的用戶看到你的信息

實用操作系統其他操作系統有線電視機頂盒領域PowerTV掌上計算機領域PalmOS數字影像領域Digita手機Symbian,SmartPhone,PalmOS嵌入式Linux:uClinux,MontaVistaLinux,LynxOS

操作系統的功能操作系統的定義操作系統的功能操作系統的設計原則操作系統的發展操作系統的定義操作系統的特點:操作系統是程序的集合操作系統管理和控制系統資源操作系統提供了方便用戶使用計算機的用戶界面操作系統優化系統功能操作系統協調計算機的各種動作操作系統定義:對計算機系統資源進行直接控制和管理,協調計算機的各種動作,為用戶提供便于操作的人—機界面,存在于計算機軟件系統最底層核心位置的程序的集合。操作系統的功能主要功能:處理機管理存儲器管理作業管理信息管理設備管理標準的技術處理:標準輸入/輸出中斷處理錯誤處理操作系統的功能處理機管理處理機是計算機中的核心資源,所有程序的運行都要靠它來實現。具體地說處理機管理要做如下事情:對處理機的時間進行分配對不同程序的運行進行記錄和調度實現用戶和程序之間的相互聯系解決不同程序在運行時相互發生的沖突處理機管理是操作系統的最核心部分,它的管理方法決定了整個系統的運行能力和質量,代表著操作系統設計者的設計觀念。

操作系統的功能存儲器管理存儲器越大,存放的數據越多,硬件制造者不斷地擴大存儲器的容量,還是無法跟上用戶對存儲器容量的需求,在眾多用戶或者程序共用一個存儲器的時候,自然而然會帶來許多管理上的要求,這就是存儲器管理要做的。存儲器管理要進行如下工作:以最合適的方案為不同的用戶和不同的任務劃分出分離的存儲器區域,保障各存儲器區域不受別的程序的干擾;在主存儲器區域不夠大的情況下,使用硬盤等其他輔助存儲器來替代主存儲器的空間,自行對存儲器空間進行整理等。

操作系統的功能作業管理作業管理擔負著兩方面的工作:向計算機通知用戶的到來,對用戶要求計算機完成的任務進行記錄和安排;向用戶提供操作計算機的界面和對應的提示信息,接受用戶輸入的程序、數據及要求,同時將計算機運行的結果反饋給用戶。

作業管理要提供:安全的用戶登錄方法方便的用戶使用界面直觀的用戶信息記錄形式公平的作業調度策略等操作系統的功能信息管理計算機中存放的、處理的、流動的都是信息。信息有不同的表現形態:可以是數據項、記錄、文件、文件的集合等;有不同的存儲方式:可以連續存放也可以分開存放;還有不同的存儲位置:可以存放在主存儲器上,也可以存放在輔助存儲器上,甚至可以停留在某些設備上。信息管理要做的事情:對這些文件進行分類,如何保障不同信息之間的安全,如何將各種信息與用戶進行聯系,如何使信息不同的邏輯結構與輔助存儲器上的存儲結構進行對應。

操作系統的功能設備管理設備管理的任務:為用戶提供設備的獨立性,使用戶不管是通過程序還是命令來操作設備時都不需要了解設備的具體參數和工作方式,用戶只需要簡單的使用一個設備名就可以了;在幕后實現對設備的具體操作,設備管理在接到用戶的要求以后,將用戶提供的設備名與具體的物理設備進行連接,再將用戶要處理的數據送到物理設備上;對各種設備信息的記錄、修改;對設備行為的控制。

操作系統的功能標準輸入/輸出如果不指定鍵盤為標準輸入設備及顯示器為標準輸出設備,我們是無法直接通過這兩種設備進行輸入/輸出的。當系統開始運行的時候,操作系統已指定了標準的輸入/輸出設備。操作系統提供了這種功能:它幫助用戶將指定設備的名稱與具體的設備進行連接,然后自動地從標準輸入設備上讀取信息再將結果輸出到標準輸出設備上。

操作系統的功能中斷處理在系統的運行過程中可能發生各種各樣的異常情況,這些異常一旦發生都會影響系統的運行,因此操作系統必須對這些異常先有所準備,這就是中斷處理的任務。中斷處理功能針對可預見的異常配備好了中斷處理程序及調用路徑,當中斷發生時暫停正在運行的程序而轉去處理中斷處理程序。對當前程序的現場進行保護執行中斷處理程序在返回當前程序之前進行現場恢復直到當前程序再次運行。

操作系統的功能錯誤處理當用戶程序在運行過程中發生錯誤的時候,操作系統的錯誤處理功能既要保證錯誤不影響整個系統的運行,又要向用戶提示發現錯誤的信息。錯誤處理功能首先將可能出現的錯誤進行分類,并配備對應的錯誤處理程序一旦錯誤發生,它就自動實現自己的糾錯功能。錯誤處理一方面找出問題所在,另一方面又自動保障系統的安全,正是有了錯誤處理功能,系統才表現出一定的堅固性。操作系統設計原則盡可能高的系統效率這里指的效率包括:處理機時間的最大利用,存儲器空間的合理安排,輸入/輸出設備的均衡使用盡可能大的系統吞吐能力這對于系統的負荷能力是一種考驗,因此,系統吞吐量是操作系統設計的一個質量標志。吞吐量的好壞直接影響系統的穩定性,大的吞吐量使系統能流暢地工作,小的吞吐量可導致系統在高負載下癱瘓。盡可能快的系統響應時間響應時間指系統對用戶的輸入作出反應的時間。通常情況是,用戶數目越多需要的響應時間越快,并且對每一個用戶來說響應時間應該是平均的,因此,系統必須提供一個用戶能夠承受的系統響應時間的下限。操作系統的發展計算機系統發展初期多道批處理系統聯機多道程序系統操作系統的發展計算機系統發展初期世界上第一臺計算機ENIAC于1946年問世,它的依據是JohnvonNeumann描述的計算機概念,包括主要的部件有:運算器、存儲器、控制器、輸入/輸出設備和與之相關的操作員

輸入設備存貯器M運算器ALU控制器V輸出設備指令操作系統的發展計算機系統發展初期為了減少人的參與,操作員對要送到計算機上運行的程序進行組織。Step1:凡是運行步驟大致相同的程序組織成為一批,Step2:由操作員通過輸入機輸入到磁帶機上,Step3:再將磁帶機連接到計算機主機上準備運行,Step4:余下的控制工作交由稱為監督程序的程序來控制完成。Step5:完成后操作員將存有輸出結果的磁帶機取下,Step6:再連接到輸出設備上逐一地輸出不同程序的輸出結果,最后交給用戶。這時的計算機系統稱為脫機批處理系統,輸入/輸出設備與主機之間不再有直接的聯系,主機只與磁帶機打交道。

操作員的一部分工作被監督程序替代監督程序模擬操作員的工作:將磁帶機上的程序調入存儲器,安排程序運行,將運行結果輸出到磁帶機上,然后安排下一個程序的運行,如此周而復始直到這一批程序全部處理完畢。作業1輸入設備衛星機磁帶主機(監督程序)磁帶衛星機輸出設備操作系統的發展多道批處理系統當主存儲器中存放著不止一批的作業,處理機在調用一批作業運行時,如發現輸入/輸出所產生的等待,監督程序就引導處理機去執行另外的程序,這樣就使處理機總是處于工作狀態。

這時的監督程序變得更為復雜,它不但要管理某一批程序的運行與中斷,還要對不同批次的程序進行處理機時間的分配。從理論上講,存儲器上存放的程序批次越多,處理機的利用率就越高。為了提高計算機的利用率,多道批處理系統不允許用戶的干預。

操作系統的發展聯機多道程序系統聯機多道系統靠程序來控制計算機設備和用戶終端,它要面對多個用戶,要進行處理機時間的安排,進行內存空間的劃分,安排用戶分享能夠共享的輸入/輸出設備,協調用戶在運行程序時發生的各種沖突等等,這種程序有一個新的名字,稱為操作系統。

主機終端1終端2終端N操作系統的分類多道批處理系統分時系統實時系統幾種操作系統的比較典型操作系統介紹操作系統的分類多道批處理系統多道批處理系統按用戶作業的類型不同分成若干批次,將不同批次的作業都存放于存儲器中,每一批次作業順序處理。如果需要輸入/輸出,就調用另一批次的作業運行,從而實現資源的充分利用。

多道批處理系統的一些具體概念單道程序多道程序作業批處理多道批處理系統的一些具體概念單道程序

在主存儲器中只存放著一批程序(或者一個程序),當CPU運行該程序發生某種條件等待時,CPU暫停當前程序的運行,在等待的條件被滿足以前,CPU將一直處于閑置狀態。

在單道程序環境下,操作系統不需要考慮對處理機、存儲器、輸入/輸出設備的分配。它的主要工作是:在適當的時候將需要執行的程序從輔助存儲器調到主存儲器中,安排編譯(或匯編)、連接及目標代碼的運行,接受輸入信息及傳送輸出信息管理工作相對簡單

多道批處理系統的一些具體概念多道程序在主存儲器中存放著不止一批的程序(或者多個程序),當CPU運行某一個程序發生條件等待時,可以轉向執行另外的程序。因此,多道程序方案可以減少CPU的閑置時間。由于內存中存放了大量的程序,并且由于多道程序分享著CPU的時間,那么,多道系統就必須考慮CPU時間的分配、主存儲器空間的分配、安全及共享、輸入/輸出設備中斷系統的實現等從操作系統方面來說,管理多道程序比管理單道程序更為復雜。多道批處理系統的一些具體概念作業是用戶交給計算機執行的具有獨立功能的任務

在用戶要求計算機執行任務時,首先用一種表達方式將任務進行描述作業的執行步驟往往代表著一個具體的子功能,它被稱為作業步。作業步的執行順序是:前一個作業步的輸出是后一個作業步的輸入,后一個作業步必須在前一個是作業步執行完畢后執行。作業的描述方法有多種,可以通過專用的作業控制語言、高級語言、鍵盤命令等來對作業進行說明RunLinkComplerEditJobA作業步1作業步N作業步2結果作業描述作業運行多道批處理系統的一些具體概念批處理將作業組織成批,并一次將該批作業的所有描述信息和作業內容輸入計算機,計算機將按照作業和作業步進入的先后順序依次自動執行,在一個批次范圍內用戶不得對程序的運行進行任何干預批處理系統是一個脫機處理系統,由于沒有用戶的介入,它圍繞著提高系統的效率而開展工作

批處理系統不足之處:由于批處理系統采用的是脫機工作方式,因此基本不考慮用戶的聯機要求;又由于系統的設計目標是盡可能提高系統的運行性能和效率,從作業委托到作業完成之間的時間可能比較長。操作系統的分類分時系統除了多道批處理以外,對于普通用戶來說,更多的是希望參與計算機資源的使用,大大小小的團體和組織,也需要利用計算機來相互溝通,分時系統正是滿足這種需要的系統

分時系統的一些具體概念分時時間片響應時間多用戶分時系統安全性分時系統的特征分時系統設計目標及用途分時系統的一些具體概念分時是指將具有運行能力的資源的時間劃分成很小的片段,稱為時間片。這些時間片按照一定的規則被分配給需要它的程序,或者說是若干程序以時間片的方式共享資源的運行時間。一般涉及到分時概念的計算機部件有:處理機、輸入/輸出設備等。

分時系統的一些具體概念時間片時間片是程序一次運行的最小時間單元。在劃分時間片的時候,要根據系統的總體設計框架來考慮通常說來,在一個時間片內,至少應該能夠完成一次輸入/輸出中斷處理和現場的保護和恢復過程,以及一個程序原子過程(原子過程在運行期間不可中斷)的一次執行用戶要求的響應時間越短,系統一次容納的用戶數目越多,時間片就必然越短

分時系統的一些具體概念響應時間響應時間分為用戶響應時間和系統響應時間系統響應時間是計算機對用戶的輸入作出的反應時間。用戶響應時間是指單個用戶所感受到的系統對他的響應。響應時間可以和時間片聯合起來考慮,一般情況是:時間片越短,響應時間越快。

分時系統的一些具體概念多用戶分時系統是多用戶同時使用的操作系統,用戶通過不同的終端同時連接到主機,主機分時地對用戶終端程序進行反應,要求產生的結果是:每一個用戶都感覺自己在獨立地在使用著計算機,用戶的行為并不會相互影響。

分時系統的一些具體概念分時系統安全性為了保證系統及各個用戶程序的安全,系統必須采取一定的安全措施,并且必須能夠區分不同的用戶,分別完成不同用戶的作業。最常見的安全方法是用戶登錄方式

當用戶登錄系統時,須提供用戶名和用戶密碼。操作系統將從輸入端獲取的用戶名和用戶密碼與系統庫存的用戶信息進行比較,只有在用戶輸入正確時才能夠正常登錄,否則用戶將被拒絕對系統的使用。登錄后操作系統將用戶按其所屬權限及類型引導至用戶可以操作的目錄下,以此來限定用戶的工作區域分時系統的一些具體概念分時系統的特征

多路性:系統同時支持多路終端的連接

獨立性:多用戶各自獨立地使用計算機

及時性:終端都及時地得到系統的反應

交互性:通過終端直接與計算機進行對話

分時系統的一些具體概念分時系統設計目標及用途分時系統的設計目標要充分考慮到滿足用戶的需求,用戶最大的要求是聯機交互和及時響應雖然分時系統具有及時性,但其響應時間只是在一個平常用戶認可的范圍內,可是有許多特殊的領域對計算機的響應要求更為嚴格。這已經超出了分時系統的服務范圍,需要選擇新的系統來對計算機進行管理。操作系統的分類實時系統實時系統是為了滿足特殊用戶的需要,在響應時間上有著特殊要求、利用中斷驅動、執行專門的處理程序、具有高可靠性的系統。這類系統廣泛地應用于軍事、工業控制、金融證券、交通及運輸等領域

實時系統的一些具體概念專門系統立即響應事件驅動高可靠性實時系統的一些具體概念專門系統實時系統一般說來都是定制系統,它針對某一個特殊的需要,由設計者設計相應的硬件并配合編制出對應的管理系統。實時系統在各領域之間不能通用,甚至同一領域內由于用途的細微差別也不可能照搬同一個實時系統。因此,系統的設計費用無法均攤,專門系統比普通的分時系統價格要高得多。

實時系統的一些具體概念立即響應立即響應要求從事件發生到計算機做出反應之間的時間非常短,通常在微秒數量級范圍。不同的系統其反應時間的要求也不同,這種反應時間必須保證被控制設備能夠做出正確的動作,任何時間延遲都會導致系統的錯誤。

實時系統的一些具體概念事件驅動實時系統是針對某一種特殊需要而設計的,因此,它為每一種可能發生的情況都編制好了對應的處理程序,這些程序被稱為事件處理程序或者中斷處理程序,并且在系統啟動時就被存放在主存儲器上。只有當事件發生了,事件處理程序才會被運行,因此說事件處理程序是靠事件來驅動的。在事件沒有發生的情況下,實時系統一般處于等待狀態。

實時系統的一些具體概念高可靠性保證系統高可靠性的方法可以有:多存儲器系統或者存儲器鏡像系統可將同樣的數據重復保存在不同的存儲位置上,以保證存儲的數據在意外情況發生時還能夠被恢復。多處理機系統可采用主處理機和后備處理機處理同樣的事件,如果主處理機發生意外,則啟用后備處理機的處理結果。多主機系統多套處理機及存儲器組合,以此來避免任何意外所導致的不安全性。

操作系統的分類幾種操作系統的比較多道批處理系統分時系統實時系統CPU時間分配作業運行時獨占時間段分時事件發生時立即分配內存同時存放多批作業同時存放多道程序存放預置的事件處理程序響應時間運行期間不響應及時響應立即響應特殊要求極大的資源利用率公平面向多用戶高可靠性面向用戶群委托用戶普通用戶定向用戶操作系統的分類典型操作系統介紹

UNIX操作系統

Linux操作系統

DOS操作系統

Windows操作系統

網絡操作系統操作系統的分類UNIX操作系統

是一個目前為止壽命最長的系統,它是在小型機上運行的、面向多用戶的分時系統。它具有良好的安全性能,文件管理和設備管理獨具特色,系統程序之間調用關系靈活,具有良好的可移植性,系統規模比較小。

硬件層電子通信應用程序信息管理文本處理程序設計用戶程序庫函數Shell用戶層系統調用文件子系統進程控制子系統設備驅動程序硬件控制內核層操作系統的分類Linux操作系統是一個很成功的UNIX系統的改裝系統,用于在個人計算機上運行。Linux最大的特點是其源代碼完全公開,任何人都可以對該系統進行修改或添加功能,使其適應自己的需要。任何能在UNIX上運行的軟件都能在Linux上運行,它具有UNIX系統的很多優點,同時在用戶界面方面有很大的改善。對硬件的要求就不高,幾乎可用于所有386以上的PC機。現在在許多實體中,它開始占據主導位置或者與其他系統并存。操作系統的分類DOS操作系統DOS是一個個人機系統文件系統采用UNIX系統的文件結構,并曾經被廣泛用于各種PC機上。通過鍵盤命令方式進行操作,用戶需要熟記所有的命令代碼及格式,普通用戶要使用它還需經過一定的培訓。雖然其磁盤格式依然被其他系統兼容,DOS系統逐漸被窗口操作系統所替代操作系統的分類Windows操作系統是一個面向傻瓜用戶的系統發展方向是開發更親切易用的界面,增加更多的用戶功能,對用戶的行為更寬容。其內部的設計與其他操作系統并沒有什么兩樣包含了用于個人機的的多任務分時操作系統WindowsxpProfessional和用于網絡的網絡操作系統WindowsxpServer

用戶模式核心模式對象管理器微內核Microkernel硬件抽象層(HAL)POSIX應用程序POSIX子系統Win32子系統OS/2子系統安全子系統注冊過程Os/2應用程序Win32應用程序Win32Windows管理器和GDI硬件設備驅動程序I/O管理虛擬內存管理器本地過程調用工具進程管理器安全引用監視器圖形設備驅動程序硬件操作系統的分類網絡操作系統曾經流行了一段時間的Novell系統,由于它采用了對DOS系統的仿真,用戶一度非常歡迎。WindowsNT采用和其他Windows系統一樣的圖形界面,網絡功能方面與其他網絡操作系統相差不多

Linux系統也是一個網絡操作系統,用該系統來構建網絡非常容易。網絡操作系統是在普通操作系統的基礎上增加了通信和共享功能,這種通信受協議的制約,而協議是大家共同遵守的規則。為了能夠通信,人們必須遵守公認的標準用戶與操作系統的關系普通用戶使用操作系統界面,根據圖標或命令的提示使用應用軟件如游戲、管理程序、各種多媒體程序等一般程序愛好者用高級語言編寫應用程序,在操作系統界面平臺上通過高級語言和操作系統核心間接聯系

高級程序員設計大型支持軟件,使用操作系統提供的系統調用和計算機硬件及其他系統資源打交道

設計操作系統的人面臨最大的挑戰,他需要了解計算機系統的所有知識,用低級和中級語言直接控制計算機的所有部分

操作系統的觀點對于系統設計人員來說,考慮的是如何使計算機各個部件正確動作,以實現各種系統功能;對于用戶來說,他要求系統提供最方便的使用方法,至于計算機內部如何運作卻沒有必要了解;對于專門研究程序和數據運動的人員來說,看到的是系統的動態特征。這些不同的觀點代表著操作系統的不同側面,只有將各個側面綜合起來,才能完整地說明操作系統。從三個方面進行闡述:資源管理觀點用戶管理觀點進程管理觀點操作系統的觀點資源管理觀點將計算機系統內的所有硬件、軟件、數據等看作資源,操作系統的任務就是對這些資源進行分配、釋放、相互配合、信息記錄和信息修改資源是靜態的,而操作系統是動態的動態的管理者不斷地調整資源的分配與釋放,實現用戶所要求的各種功能。

Windows系統中對所有資源的組織與管理由于資源有不同的種類,資源的打開方式和操作方式也是不同的,Windows將這些展示平臺集中在一起用戶可以自由選擇操作系統的觀點用戶管理觀點將系統中的所有行為都看作是對用戶任務的執行系統中存在著不同用戶的許多任務操作系統就是要對任務的產生、執行、停止進行安排

許多用戶正在同一個主機上執行他們的任務操作系統的工作就是用戶可以直接控制這些任務,用戶可以開始新的任務、結束舊的任務、或者將某個后臺任務轉變成前臺任務。操作系統的觀點進程管理觀點認為系統中存在著大量的動態行為:處理機在執行著程序,存儲器上面的頁面被不斷地換出、換進,設備上數據在流動,用戶在不停地命令計算機做事。這一切動態的行為都是以叫做進程的形式存在著,操作系統對進程進行管理,管理進程的建立、運行、撤消等

進程不是靜態的程序,而是程序運行起來才會存在的一個實體,進程是一個動態的概念本章小結對目前正在使用的實用操作系統進行了介紹當操作系統完成它的初期發展過程以后,設計者按不同的設計目標將系統分為三種基本類型:批處理系統、分時系統和實時系統操作系統的功能包括:處理機管理、存儲器管理、作業管理、文件管理、設備管理、標準輸入/輸出設備、中斷處理和錯誤處理

多道程序聯機系統在計算機資源的利用、方便用戶使用、綜合控制與管理上代表著操作系統的趨勢第二章處理機管理學習要點概述進程及其狀態進程控制進程同步進程通信死鎖實用系統中的進程本章小結概述在實用操作系統Windows和Linux中,除了沿用傳統的用戶、程序概念以外,還引用了描述系統動態行為的任務、進程的概念。通過了解這些概念的變化過程,我們將發現描述系統的最佳方式多用戶程序并發程序Linux中的描述概述多用戶多用戶是指多個用戶同時通過終端連接到計算機主機上,同時要求計算機處理希望實現的功能,同時使用主存儲器、輔助存儲器、輸入/輸出設備

事實上許多計算機資源是不可能同時使用的,他們的共享也只能是時間上的分割。從微觀上看,各用戶程序并沒有同時使用計算機的資源。這種宏觀上和微觀上的巨大差異,要求操作系統經過特殊處理,通過微觀上細致地分配與管理來達到宏觀上的效果

指若干用戶在不感知其他用戶存在的情況下,在同一個時間范圍內獨立地使用計算機系統。這是一個宏觀的概念,是通過操作系統對各部件微觀行為恰當的分配安排來實現的概述程序程序是適合于計算機處理的一系列的指令,按照一定的邏輯要求被劃分成多個相關模塊,這些模塊必須順序地執行

程序的運行是順序的:指令N必須在指令(N-1)執行完畢以后才能執行程序運行是封閉的:程序一旦開始運行,就必然獨占所有的系統資源,系統狀態完全取決于程序本身程序的運行過程可以再現:只要給定相同的初始條件和輸入數據,在任何機器上,在任何時間,以任何速度來運行,程序的執行過程和運行結果都是唯一的

由于程序具有以上這三個特點,因而稱程序是靜態的,而程序概念剛剛產生時期的外部環境,也支持程序的靜態特征在多用戶系統中,每一個用戶都通過執行他的程序來爭奪系統資源,而系統資源是有限的,這就可能產生沖突

概述并發程序并發程序在邏輯上并行,而在物理上串行CPU串行地執行著一定大小的程序片斷,這就是物理上的串行從宏觀上看,在一個時間范圍內,每一個程序都獲得了運行,這就是邏輯上的并行

并發程序的執行和其產生的結果都與時間相關,也就是說它是時間的函數

并發程序三個特點:動態性:并發程序的外部環境在不斷地發生著變化。程序運行是由聯機用戶決定的,其運行時間和順序是不可預測的,這要看當時系統的情況制約性:并發程序共享著系統的資源,而這些資源當時的狀態可能影響程序的執行結果

并發性:并發程序在邏輯上是并行的,但微觀上這些程序是串行的,程序的并發性要求系統在任何不確定的因素下,都能夠產生唯一正確的結果

概述Linux中的描述以Linux為例,說明實用系統中是如何描述程序的運行的。任務:Linux是一個多任務系統,程序的并行就是任務的并行,任務作為一個實體具有申請、占有、釋放和搶占資源的資格

進程:進程之間有一種隸屬關系,除隸屬關系外它們又是相互獨立的,可以產生,也可以消亡

任務具有名稱且對應著特定的用戶,它具有使用CPU時間的資格和不同的狀態并存放在存儲器中指定的位置,還可以在內存與外存之間交換

由于任務是動態的,因此內容隨時都可能發生變化。使用按鈕RefreshNow可以刷新任務所對應的信息系統為每一個終端機建立終端進程。當用戶通過終端訪問主機時,系統在這個終端進程的控制下運行的。用戶通過命令或者其他形式要求計算機完成一定的工作,終端進程就將這些命令生成一些新的子進程讓其獨立并發地運行,運行完畢后又被終端進程撤銷

通過PID指出進程的內部標識號,通過SIZE指出程序的大小。另外還有一些其他參數,如進程的用戶名、優先級、進程的狀態、進程的大小、進程所占有的CPU的時間、進程所占有的存儲器位置、進程所對應的設備等進程及其狀態并發程序的存在是進程產生的直接原因,因此,進程必然具有并發程序的特征,即動態性、制約性、并發性。一般情況它存在于多道程序環境中,是操作系統直接處理的實體

進程的定義進程的狀態及其轉換進程描述機構和進程實體進程及其狀態進程的定義比較典型的定義是:進程是并發程序的一次執行過程;進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動

進程的本質:※進程的存在必然需要程序的存在※進程是系統中獨立存在的實體

※并發特性通過對資源的競爭來體現動態特性通過狀態來描述

※進程和數據相關程序是進程的一個組成部分當程序處于靜止狀態時,它并不對應于任何進程;當程序被處理機執行時,它一定屬于某一個或者多個進程。屬于進程的程序可以是一個也可以是多個,調用程序的進程也可以是一個或者多個,進程和程序不是一一對應的

對應特殊的描述結構并有申請、使用、釋放資源的資格。由于系統中存在著多個進程,而資源有限,必然存在著進程對資源的競爭。作為一個獨立實體的進程,它既可以被調用,也可以調用別的進程。同時它還存在一種隸屬關系,既可以被生成,也可以生成別的進程

進程的邏輯形態和物理形態不同邏輯上進程只不過是一系列的說明信息物理上進程卻占據著系統的各種資源

但它不是數據在它的存在過程中要對數據進行處理若干進程可以處理同一組數據一個進程也可以處理若干組數據進程及其狀態進程的基本狀態運行狀態(run):如果CPU的時間正好被分配給該進程,也就是說該進程正被CPU運行著,那么這個進程就處于運行狀態。就緒狀態(ready):當進程被調入到主存儲器中,所有的運行條件也都滿足,只是因為調度沒有將CPU的時間分配給該進程,這時的進程處于就緒狀態。等待狀態(wait):因等待其他的原因或條件,使進程根本不可能被運行,這樣的進程處于等待狀態

當系統里只有一個CPU,處于運行狀態的進程也就只有一個,如果是多處理機系統,就可能有多個進程處于運行狀態如果將操作系統的運行也看作進程,則在CPU時間軸上的任何時刻,都有一個進程在運行。當進程處于運行態時,它所擁有的程序必然被運行。

處于就緒狀態的進程可以有多個所有能夠運行而沒有被運行的進程都處于就緒狀態。

進程不能運行的原因包括:CPU沒有調度該進程,或是因等待其他的原因或條件,使進程根本不可能被運行造成等待的條件是各種各樣的處于等待狀態的進程也按不同的等待條件處于不同的等待隊列之中,數量或多或少

進程及其狀態進程的狀態轉換

基本進程狀態的轉換

UNIX進程狀態及轉換

Linux進程狀態及轉換進程及其狀態基本進程狀態的轉換處于就緒狀態的進程構成就緒隊列從就緒隊列中取出一進程送CPU執行運行狀態進程時間片用完重新轉入就緒狀態,并進入就緒隊列為保證CPU不空閑,從就緒隊列中取一進程送CPU執行運行狀態進程由于某一條件不滿足,該進程轉入等待狀態,并進入對應的等待隊列之中

處于等待隊列之中的進程,如果其等待的條件被滿足,它的狀態就會變為就緒狀態,同時被制造條件的那個進程安排進入就緒隊列

運行狀態就緒狀態等待狀態時間片完畢條件滿足等待條件進程調度進程及其狀態UNIX進程狀態及轉換創建狀態:進程剛被建立還沒有被激活內存就緒:進程的數據區處于內存并被激活

外存就緒:進程的數據區處于外存并被激活核心運行:從內存就緒隊列中調度一進程運行,處理機運行系統程序用戶運行:當前運行的是用戶程序內存睡眠:處于核心運行態的進程申請某種資源而不能獲得時,進程就變為內存睡眠狀態外存睡眠:進程處于睡眠狀態并且數據區處于外存

被搶先:進程正從核心運行態向用戶運行態轉換時發生進程調度,它將處于被搶先狀態僵死狀態:進程完成了它的所有任務將被撤銷之前

外存睡眠內存就緒核心運行用戶運行內存睡眠被搶先創建僵死外存就緒喚醒搶先中斷,中斷返回喚醒換出返回中斷系統調用調度換入換出內存不夠內存充足返回用戶態退出睡眠進程及其狀態Linux進程狀態及轉換執行和就緒兩種狀態通過進程是否占有CPU資源來區分,他們同時由R代表

等待狀態分為可中斷的休眠S和不可中斷的休眠D兩種,他們都是等待某個事件或某個資源處于暫停狀態的進程用T表示,一般都是由運行狀態轉換而來,等待某種特殊處理

由于某些原因進程被終止,這個進程所擁有的內存、文件等資源全部釋放之后,還保存著PCB信息,這種占有PCB但已經無法運行的進程就處于僵死狀態運行R就緒R時間片完畢特定喚醒等待硬件資源進程調度結束跟蹤跟蹤退出進程創建不可中斷休眠D信號喚醒進程消亡休眠S暫停T等待條件處于可中斷休眠的進程可以被信號喚醒而進入就緒狀態等待調度不可中斷休眠的進程是因為硬件資源無法滿足,不能被信號喚醒,必須等到所等待的資源得到之后由特定的方式喚醒。如:處于調試跟蹤的程序,每執行到一個斷點,就轉入暫停狀態,等待新的輸入信號進程及其狀態進程描述機構和進程實體

進程控制塊

進程實體

PCB的組織

進程上下文

進程虛空間進程及其狀態進程控制塊(PCB)進程作為一個實體存在,同時也為了區分與別的實體的不同操作系統需要安排特殊的數據結構來對其進行描述描述參數包括區分信息、動態信息、資源信息等

PID:進程內部ID號。用來讓操作系統區分每一個進程UID:用戶標識號。進程的所有者通過運行命令導致進程的產生

TTY:對本進程有控制能力的設備。通過這一設備可以建立或者撤消本進程PRI:進程運行的優先數。進程的優先數越大,表示進程的優先級越低

NI:計算進程優先數時所用的偏移值

TSIZE:進程對應代碼段大小

DSIZE:進程對應數據段和棧段的大小SIZE:進程的虛空間大小。包括進程的程序區、數據區、進程描述區、進程所需要的工作區等所有空間

RSS:進程已經駐留在內存的內容的大小STAT:進程的狀態

TIME:進程已經使用的CPU時間

COMMAND:導致本進程產生的命令的名稱和所在的路徑

PPID:進程的父進程的ID號。父進程是本進程的創建者

我們將描述進程的數據結構稱為進程控制塊PCB(ProcessControlBlock)。它描述了一個進程和其它進程以及系統資源的關系,記錄了進程在各個不同時期所處的狀態進程及其狀態通過對各種實用系統的分析與歸納,PCB至少含有如下基本信息:·進程ID:用來唯一地標識每一個進程。·進程優先級:處于就緒隊列的進程被選為運行進程的優先指標。·用戶名:要求建立該進程的用戶。·設備名:建立該用戶進程的終端進程所處的位置。·進程狀態:對進程狀態的說明。·程序指針:進程所對應的程序的內存地址。·程序大小:完成該進程功能的程序需要的存儲空間數。·數據區指針:進程要處理的數據所在的內存地址。·數據區大小:進程要處理的數據所占的存儲空間數。·CPU時間:該進程已經使用的CPU時間。·等待時間:該進程從上一次放棄CPU到目前的時間。·家族:建立該進程的進程,也即進程的父進程;該進程所建立的子進程。通常情況是:父進程可以多次產生子進程,因此,它可以有多個子進程;子進程又可以產生多個子進程,但子進程只能有一個父進程。·資源信息:進程與各種資源的聯系信息。

PCB是進程存在的唯一標志

進程及其狀態進程實體進程實體:構成進程的基本部分進程實體由三部分構成:進程控制塊(PCB)程序段:進程需要運行的純代碼段,在運行期間程序段不會發生任何變化

數據段:進程需要處理的數據,在數據處理過程中可以寫入、修改、刪除等進程實體的三種表現形式:PCB數據程序PCB數據標準形式進程所需要運行的程序是在運行過程中會發生變化的程序,這種程序被合并進入數據段,以實現其運行過程中的變化要求

PCB程序這是一種極限情況,表示數據段的大小為0。其實數據也可以存在于程序段,程序段中數據在程序的運行期間只能讀取

進程及其狀態PCB的組織為了統一管理、控制和調度進程,操作系統往往將進程控制塊集中組織典型的形式:PCB表:系統中專門開辟依次存放所有進程的PCB的一個區域進程隊列:將不同狀態進程分別組成隊列的形式

PCB表的容量是有限的并固定的系統中最多可同時存在的進程個數也是有限的進程的PCB可以存放于任何內存位置在PCB中利用指針指向下一個進程PCB的起始地址不同隊列代表著進程的不同屬性,如就緒進程隊列、等待各種條件的隊列等

進程及其狀態Linux系統采用多種方式來組織處于各種狀態的進程系統中每創建一個新的進程,就給它分配一個進程控制塊(PCB)所有進程的PCB都直接存放在物理內存中使用一個保存所有PCB指針的task數組來管理系統中所有的進程系統中所有的進程還構成一個雙向循環隊列,整個隊列通過進程的PCB中的兩個指針next-task和prev-task鏈接為了方便進程的調度,系統把所有可運行的進程組織成一個可運行隊列,系統通過當前(current)指針指向運行態的進程可運行隊列是一個雙向循環隊列,隊列中指向前后接點的指針存放在PCB中,它們是next-run和prev-run系統的調度函數根據一定的規則,查找整個可運行隊列,在其中尋找最值得執行的進程來分配CPU

進程及其狀態進程上下文操作系統中把進程物理實體和支持進程運行的環境合稱為進程上下文進程上下文包括三個組成部分:用戶級上下文:由用戶程序段、用戶數據段(含共享數據塊)和用戶堆棧組成的進程地址空間。系統級上下文:包括靜態部分如PCB和資源表格,以及動態部分如核心棧、現場信息和控制信息、進程環境塊、以及系統堆棧等組成的進程地址空間。寄存器上下文:由程序狀態字寄存器和各類控制寄存器、地址寄存器、通用寄存器組成

進程及其狀態進程虛空間將進程的PCB、用戶堆棧、用戶私有地址空間、共享地址空間等內容組合在一個具有一定邏輯順序的空間中,就構成了進程的虛擬空間

進程控制進程從產生到消亡的整個過程都由操作系統來控制的,而操作系統只不過是一系列的能夠獨立運行、具有特定功能的程序操作系統擁有某些特權,它是被稱為系統調用或者原語的程序在操作系統中,和計算機硬件直接打交道的程序被組織在一起,稱為操作系統的內核內核是通過執行各種原語操作來實現各種控制和管理功能原語進程控制原語Linux中的進程控制Windows中的進程控制

進程控制原語原語是執行過程中不可中斷的、實現某種獨立功能的、可被其他程序調用的程序操作系統中的內核部分的程序都是以原語的形式存在的

在原語的設計上,它有著比普通程序更嚴格的要求

除操作系統外,原語還可以用于其他的軟件系統,承擔其中核心部分的工作進程控制進程控制原語進程控制原語用來對進程的行為進行控制最基本的進程控制原語有:進程建立進程調度進程等待進程喚醒進程撤消進程控制進程創建進程建立是實現進程從無到有的過程調用進程建立的原語者一定是被建立進程的父進程,被建立的進程稱為子進程所有的進程只能由父進程建立,不是自生自滅的運行的系統中必然存在一個進程家譜,我們稱之為進程樹

系統初啟的時候將產生一個核心調度進程,其任務是生成始祖進程并管理CPU時間,實現進程就緒態到運行態的選擇及轉換

始祖進程為每一個運行終端創建一個管理進程

終端上的用戶通過命令形式啟動自己的作業或任務,管理進程即為之建立相應的應用進程

由于任務是可以分解的,每一個應用進程還可以建立自己的子進程

進程控制進程創建※在進程控制塊表中獲取一個空的記錄※填入被建立進程的信息:該進程的程序段地址初始狀態(就緒狀態)該進程的數據區域的指針該進程的父進程名稱等※然后將新建立的進程插入到就緒狀態的進程隊列中進程建立并不影響調用者的狀態,調用者只是在執行自己的程序時,完成了一個調用命令,接著繼續進行后續的工作

父進程在調用創建原語之前必須已經準備好如下參數:進程標識符、進程優先級以及進程程序的起始地址

入口(進程標識)申請空PCB申請程序段、數據段空間創建失敗申請成功?PCB否是填入PCB值:進程標識號、程序段地址、數據段地址、就緒狀態┅PCB插入就緒隊列返回就緒隊列進程建立以后并不是立即投入運行,而是進入就緒隊列。這是因為被建立進程的父進程并沒有安排進程運行的資格。被建立進程的運行靠進程調度來實現

進程控制進程調度當占有CPU的進程運行完分配給它的時間片,或者因為申請某一種條件得不到滿足時,就需要放棄CPU。這時操作系統就要選取新的進程到CPU上運行,這正是進程調度原語要完成如下工作:首先要找到就緒隊列的首指針

按照調度算法選中一個進程

該進程的PCB中就緒狀態變為運行狀態使其退出就緒隊列

恢復該進程的上下文,該進程便進入運行狀態

入口(就緒隊列指針)調度算法選擇就緒隊列修改選中進程的PCB:狀態=運行態將選中進程從就緒隊列取出就緒隊列運行運行態進程控制進程的等待在進程的運行過程中,如果申請某一種條件而沒有被滿足,進程不得不中止當前的運行,進程等待原語就會被激活

改變當前進程的PCB中的狀態入等待隊列轉進程調度原語運行狀態改變為等待狀態根據等待條件將該進程插入到條件所對應的等待隊列之中由于沒有進程處于運行狀態,就需要選擇新的進程來運行

入口(進程標識、等待條件)修改PCB內容:狀態=等待狀態插入等待隊列等待隊列等待隊列進程調度原語進程控制進程的喚醒

當等待所需資源或者條件的進程有機會獲得所等待的資源或條件時,該進程就可以從等待狀態變為就緒狀態這種狀態的改變需要其他進程的幫助具體做法是運行中的進程調用進程喚醒原語

喚醒原語找到對應條件的等待隊列從等待隊列中取下一個進程將進程狀態從等待狀態變為就緒狀態插入到就緒隊列中直到所有的進程都被處理完畢調用喚醒原語的進程繼續執行

入口(等待條件)找到等待條件所對應的進程隊列等待隊列隊列空?否第一個進程退出等待隊列等待隊列進程狀態=就緒態插入就緒隊列就緒隊列是返回進程控制進程的撤消當進程執行完自己所有的功能之后,就需要撤消

進程撤消由兩部分構成首先子進程撤消:被撤消進程撤消自己所建立的子進程釋放自己所擁有的資源除了進程標識符以外清除所有內容通知父進程并進入等待撤銷的狀態其次父進程撤消:父進程調用撤消原語找到該子進程釋放子進程的進程控制塊修改自己的進程控制塊中與子進程有關的信息

子進程入口釋放資源撤消子進程通知父進程并進入死亡狀態進程調度父進程入口(子進程標識)釋放子進程的PCB修改父進程PCB:子進程數、資源共享數返回進程控制Linux中的進程控制提供許多系統調用函數,這些原語都可以在系統提供給用戶的界面shell上運行

提出前臺進程和后臺進程的概念,前臺進程和后臺進程之間可以相互轉換

前臺進程:指運行時在標準輸出設備上能看見其運行結果的進程,一般運行單條命令時,多采用前臺方式后臺進程:指運行時看不見運行結果的進程

每個進程的PCB用一個task_struct數據結構來表示,數組task包含指向系統中所有task_struct結構的指針

系統中的最大進程數目受task數組大小的限制,缺省值一般為512創建新進程時,Linux將從系統內存中分配一個task_struct結構并將其加入task數組當前運行進程的結構用current指針來指示

系統中所有進程都用一個雙向鏈表連接起來,而它們的根是init進程的task_struct數據結構

Linux核心利用這個鏈表用來尋找系統中所有進程,它對所有進程控制命令提供了支持創建一個新進程fork()函數;進程等待wait()函數;進程自我終止exit()函數;進程刪除kill()函數;信號signal()函數(可以用來終止進程);獲取進程的IDgetpid()函數,獲取進程之父進程IDgetppid()函數進程控制Linux中的進程控制所有進程部分時間運行于用戶模式,部分時間運行于系統模式,用戶模式的權限比系統模式下的小得多

系統啟動時總是處于核心模式,此時只有一個進程:初始化進程

在系統初始化的最后,初始化進程啟動一個核心進程(init)然后保留在idle狀態

用戶登錄到系統時,進程1為用戶創建一個shell進程,用戶在Shell下創建的進程都是Shell的子進程,shell是該用戶所有進程的父進程

當用戶注銷時,shell進程也被撤消

有一些由系統創建的貫穿某一特定過程的進程。這些進程是為特定的目的而創建的,而且當其目的達到后,他們也不再存在init核心進程是系統的第一個真正的進程,所以的標志符為1。它負責完成系統的一些初始化設置任務,以及執行系統初始化程序,系統中所有進程都是從init核心線程中派生出來

如:發送消息的進程,當消息發送完畢,該進程也隨之死亡進程控制Linux中的調用實例#include<stdio.h>main(){intpid;while((pid=fork())==-1);if(pid>0){kill(pid,17);wait(0);printf(“\nParentprocessiskilled!!\n”);exit(0);}else{printf(“\nThechildprocessiskilledbyparent!!\n”);exit(0);}}wait()函數常用來控制父進程與子進程的同步。父進程必須等待子進程終止后才能終止。在父進程中調用wait()函數,則父進程被阻塞。進入等待隊列,等待子進程結束。當子進程結束時,會產生一個終止狀態字,系統會向父進程發出SIGCHLD信號。當接到信號后,父進程提取子進程的終止狀態字,從wait()返回繼續執行原程序

在正常終止時,exit()函數返回進程結束狀態。在子進程調用exit()后,子進程的結束狀態會返回給系統內核,由內核根據狀態字生成終止狀態,供父進程在wait()中讀取數據。等父進程讀取信息后,系統才徹底釋放子進程的進程控制塊

運行結果如下:Childprocessiskilledbyparent!!Parentprocessiskilled!!進程控制Windows中的進程控制

Windows提供的系統調用稱為應用程序編程接口(API),它是應用程序用來請求和完成計算機操作系統執行的低級服務的一組例程除了進程概念外,Windows還引入了線程概念線程是進程中的邏輯小塊,它具有掛起自身和被掛起的能力,因此線程的狀態是可以變化的在Windows中由微內核來管理線程的執行微內核將CPU的時間劃分成小的時間片,當線程獲得一個時間片時就得以運行線程創建由CreateThread()實現,它為線程分配空間,指定線程的起始地址等線程掛起由SuspendThread()實現,線程恢復由ResumeThread()完成

線程的引入對系統的并行和提高效率帶來了極大的好處:省去了資源申請環節,創建一個新線程花費時間少由于線程上下文只包含和CPU相關的內容,兩個線程切換時花費時間少同一進程內的線程共享所有資源,之間相互通信無須調用內核CreateProcess():進程的初始化,建立進程與可執行文件之間的關系,標志進程狀態,配置進程的輸入輸出GetGuiResources():對進程GUI資源的查看,它返回打開的GUI對象的數目,也可返回指定進程中打開的USER對象的數目GetProcessVersion():進程版本查看SetProcessPriorityBoost():進程優先級提升ExitProcess()和TerninateProcess():兩個終止進程函數,前者先完成對進程資源的關閉,再調用后者實現進程本身的終止

進程控制進程和線程的區別和聯系進程是擁有應用程序所有資源的對象;線程是進程中一個獨立的執行路徑

一個進程至少要有一個線程,這個線程被叫做主線程一個進程的線程越多,該進程獲得的CPU時間就越多,進程的運行時間就越快所有線程參與對CPU時間片的競爭線程運行時共享其對應進程所擁有的資源

進程同步進程運行關系串行

并行串并行一般進程的執行有規定的先后順序在前后進程的交接點,須采取某一種協調措施來保證指定的執行順序P1P2P3P1P2P3進程在邏輯上可以同時運行,相互之間沒有任何關系,各自獨立運行在調度順序上也沒有特別的要求

P1P5P2

P3P4P6P7P8進程之間的關系既有串行也有并行,甚至串行中包含并行或者并行中包含串行調度時須在分清串行或者并行關系的基礎上采取對應的方法

P1

P2P3

P4P5P6P7P8

P9不再強行區分哪些地方是串行哪些地方是并行,只考慮進程相互之間的交接點只要對交接點處理正確,就可以保證正確的執行順序

進程同步進程相互之間的關系,統稱為同步

操作系統必須在CPU變換運行進程時,采取有效的控制手段,來實現進程的運行順序互斥關系同步關系臨界區實現方法用P、V操作實現互斥與同步進程同步互斥關系臨界資源(criticalresource):是一次只能被一個進程使用的資源

臨界段(criticalsection):是使用臨界資源的程序段進程一旦進入臨界段,就必須能夠實現對資源的獨占使用

互斥:若干進程競爭進入臨界段時,相互之間所形成的排它性關系

對臨界段的設計有如下原則:(1)每次至多只允許一個進程處于臨界段中。(2)對于請求進入臨界段的多個進程,在有限時間內只讓一個進入。(3)進程只應在臨界段中停留有限時間。要實現臨界段,就是要尋找某一種手段來實現臨界段的三條設計原則進程同步互斥關系進程A和進程B在各自的執行過程中,都需要使用變量M作為其中間變量

進程A:X=1;Y=2;M=X;X=Y;Y=M;printf("A:X=%d,Y=%d\n",X,Y);進程B:

K=3;L=4;

M=K;K=L;L=M;printf("B:K=%d,L=%d\n",K,L);由于CPU的調度是隨機的,因此進程A和進程B的執行順序可以是多種多樣的:進程A→進程B:A:X=2,Y=1B:K=4,L=3正確進程B→進程A:B:K=4,L=3A:X=2,Y=1正確兩個進程交替運行方案一:123456A:X=2,Y=1B:K=4,L=3正確兩個進程交替運行方案二:123456789101112A:X=2,Y=3B:K=4,L=3錯誤只有保證程序段執行的完整性,就可以獲得預期的結果;如果不保障此程序段連續執行,則運行的結果不可預測臨界區中程序的執行必須遵守臨界區的設計原則。只有在兩個程序段互斥運行的情況下,才可以保證獲得正確的運行結果進程同步同步關系進程A和進程B共用堆棧S的情況目標:由進程A將數據順序壓入堆棧,再由進程B將數據反向彈出堆棧

進程A:

PUSHS;

PUSHS;

PUSHS;

PUSHS;進程B:

POPS;

POPS;

POPS;

POPS;彈出結果:A進程執行完畢后B進程執行:正確A、B進程交錯執行:錯誤a0a1a2a3a3a2a1a0a0a1彈出結果:a1a0a2a3a3a2我們可以得到同步關系的定義:同步關系是指進程之間的一種協調配合關系,它表現在進程的執行順序的規定上互斥關系也是一種協調關系,從廣義上講它也屬于同步關系的范疇進程同步臨界區實現方法對于互斥,可以統一描述為:

臨界區入口手段;臨界區;

臨界區出口手段;臨界區本身無須改變,關鍵是設計出有效的出入口方案,來實現臨界區原則最簡單的軟件算法Dekker算法Peterson算法硬件指令“測試并設置(TS)”

中斷屏蔽方法進程同步最簡單的軟件算法intturn=0;

進程i:……while(turn!=0)do{}turn=1;臨界區(CSi);turn=0;…臨界區入口控制設置一個全局變量turn表示是否有進程處于臨界區turn=0,臨界區內無進程

turn=1,臨界區內有進程

初始狀態turn=0:臨界區內無進程第i個進程進入臨界區之前判斷turn值若turn=1表示臨界區內有一進程,則進程i進入循環等待狀態若turn=0則進程i可以準備進入臨界區將turn=1,表示進程i在臨界區內,其他進程將不能進入臨界區第i個進程執行臨界區內程序段臨界區出口控制將turn=0,表示進程i執行完臨界區內程序段并準備退出臨界區,其他進程可以準備進入臨界區該算法的問題:當臨界區內無進程時,如果正好有兩個或兩個以上進程同時通過while檢測時,都會檢知臨界區內無進程,導致多個進程同時進入臨界區進程同步Dekker算法EnumBoolean{false=0;true=1;};Booleanflag[2]={false,false};進程0:…flag[0]=true;While(flag[1])do{flag[0]=false;延遲;flag[0]=true;}臨界區;flag[0]=false;…進程1:…flag[1]=true;While(flag[0])do{flag[1]=false;延遲;flag[1]=true;}臨界區;flag[1]=false;…每一個進程對應一個flag標記當flag=1,該進程處于臨界區當flag=0,該進程不在臨界區進程同步Peterson算法當一個進程想進入臨界區,調用enter_region函數判斷是否能安全進入:能則進入,否則等待

當它從臨界區退出后,需調用leave_region函數,允許其它進程進入臨界區兩函數的參數i均為進程號

enter_region(i);臨界區;leave_region(i);非臨界區;#defineFALSE0#defineTRUE1#defineN2/*進程的個數*/intturn; /*輪到誰?*/intinterested[N]; /*想進入臨界區數組,初始值均為FALSE*/voidenter_region(intprocess) /*process=0或1*/{intother; /*另外一個進程的進程號*/other=1-process;interested[process]=TRUE;/*表明本進程感興趣*/turn=process; /*設置標志位*/while(turn==process&&interested[other]==TRUE);}voidleave_region(intprocess){intere

溫馨提示

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

評論

0/150

提交評論