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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

多道批處理系統(tǒng)的一些具體概念單道程序多道程序作業(yè)批處理多道批處理系統(tǒng)的一些具體概念單道程序

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

在單道程序環(huán)境下,操作系統(tǒng)不需要考慮對處理機、存儲器、輸入/輸出設備的分配。它的主要工作是:在適當?shù)臅r候?qū)⑿枰獔?zhí)行的程序從輔助存儲器調(diào)到主存儲器中,安排編譯(或匯編)、連接及目標代碼的運行,接受輸入信息及傳送輸出信息管理工作相對簡單

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

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

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

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

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

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

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

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

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

多路性:系統(tǒng)同時支持多路終端的連接

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

及時性:終端都及時地得到系統(tǒng)的反應

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

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

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

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

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

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

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

UNIX操作系統(tǒng)

Linux操作系統(tǒng)

DOS操作系統(tǒng)

Windows操作系統(tǒng)

網(wǎng)絡操作系統(tǒng)操作系統(tǒng)的分類UNIX操作系統(tǒng)

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

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

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

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

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

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

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

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

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

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

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

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

指若干用戶在不感知其他用戶存在的情況下,在同一個時間范圍內(nèi)獨立地使用計算機系統(tǒng)。這是一個宏觀的概念,是通過操作系統(tǒng)對各部件微觀行為恰當?shù)姆峙浒才艁韺崿F(xiàn)的概述程序程序是適合于計算機處理的一系列的指令,按照一定的邏輯要求被劃分成多個相關模塊,這些模塊必須順序地執(zhí)行

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

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

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

并發(fā)程序的執(zhí)行和其產(chǎn)生的結(jié)果都與時間相關,也就是說它是時間的函數(shù)

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

并發(fā)性:并發(fā)程序在邏輯上是并行的,但微觀上這些程序是串行的,程序的并發(fā)性要求系統(tǒng)在任何不確定的因素下,都能夠產(chǎn)生唯一正確的結(jié)果

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

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

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

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

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

進程的定義進程的狀態(tài)及其轉(zhuǎn)換進程描述機構和進程實體進程及其狀態(tài)進程的定義比較典型的定義是:進程是并發(fā)程序的一次執(zhí)行過程;進程是一個具有一定獨立功能的程序關于某個數(shù)據(jù)集合的一次運行活動

進程的本質(zhì):※進程的存在必然需要程序的存在※進程是系統(tǒng)中獨立存在的實體

※并發(fā)特性通過對資源的競爭來體現(xiàn)動態(tài)特性通過狀態(tài)來描述

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

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

進程的邏輯形態(tài)和物理形態(tài)不同邏輯上進程只不過是一系列的說明信息物理上進程卻占據(jù)著系統(tǒng)的各種資源

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

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

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

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

進程及其狀態(tài)進程的狀態(tài)轉(zhuǎn)換

基本進程狀態(tài)的轉(zhuǎn)換

UNIX進程狀態(tài)及轉(zhuǎn)換

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

處于等待隊列之中的進程,如果其等待的條件被滿足,它的狀態(tài)就會變?yōu)榫途w狀態(tài),同時被制造條件的那個進程安排進入就緒隊列

運行狀態(tài)就緒狀態(tài)等待狀態(tài)時間片完畢條件滿足等待條件進程調(diào)度進程及其狀態(tài)UNIX進程狀態(tài)及轉(zhuǎn)換創(chuàng)建狀態(tài):進程剛被建立還沒有被激活內(nèi)存就緒:進程的數(shù)據(jù)區(qū)處于內(nèi)存并被激活

外存就緒:進程的數(shù)據(jù)區(qū)處于外存并被激活核心運行:從內(nèi)存就緒隊列中調(diào)度一進程運行,處理機運行系統(tǒng)程序用戶運行:當前運行的是用戶程序內(nèi)存睡眠:處于核心運行態(tài)的進程申請某種資源而不能獲得時,進程就變?yōu)閮?nèi)存睡眠狀態(tài)外存睡眠:進程處于睡眠狀態(tài)并且數(shù)據(jù)區(qū)處于外存

被搶先:進程正從核心運行態(tài)向用戶運行態(tài)轉(zhuǎn)換時發(fā)生進程調(diào)度,它將處于被搶先狀態(tài)僵死狀態(tài):進程完成了它的所有任務將被撤銷之前

外存睡眠內(nèi)存就緒核心運行用戶運行內(nèi)存睡眠被搶先創(chuàng)建僵死外存就緒喚醒搶先中斷,中斷返回喚醒換出返回中斷系統(tǒng)調(diào)用調(diào)度換入換出內(nèi)存不夠內(nèi)存充足返回用戶態(tài)退出睡眠進程及其狀態(tài)Linux進程狀態(tài)及轉(zhuǎn)換執(zhí)行和就緒兩種狀態(tài)通過進程是否占有CPU資源來區(qū)分,他們同時由R代表

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

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

進程控制塊

進程實體

PCB的組織

進程上下文

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

PID:進程內(nèi)部ID號。用來讓操作系統(tǒng)區(qū)分每一個進程UID:用戶標識號。進程的所有者通過運行命令導致進程的產(chǎn)生

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

NI:計算進程優(yōu)先數(shù)時所用的偏移值

TSIZE:進程對應代碼段大小

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

RSS:進程已經(jīng)駐留在內(nèi)存的內(nèi)容的大小STAT:進程的狀態(tài)

TIME:進程已經(jīng)使用的CPU時間

COMMAND:導致本進程產(chǎn)生的命令的名稱和所在的路徑

PPID:進程的父進程的ID號。父進程是本進程的創(chuàng)建者

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

PCB是進程存在的唯一標志

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

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

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

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

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

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

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

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

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

進程控制原語原語是執(zhí)行過程中不可中斷的、實現(xiàn)某種獨立功能的、可被其他程序調(diào)用的程序操作系統(tǒng)中的內(nèi)核部分的程序都是以原語的形式存在的

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

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

系統(tǒng)初啟的時候?qū)a(chǎn)生一個核心調(diào)度進程,其任務是生成始祖進程并管理CPU時間,實現(xiàn)進程就緒態(tài)到運行態(tài)的選擇及轉(zhuǎn)換

始祖進程為每一個運行終端創(chuàng)建一個管理進程

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

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

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

父進程在調(diào)用創(chuàng)建原語之前必須已經(jīng)準備好如下參數(shù):進程標識符、進程優(yōu)先級以及進程程序的起始地址

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

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

按照調(diào)度算法選中一個進程

該進程的PCB中就緒狀態(tài)變?yōu)檫\行狀態(tài)使其退出就緒隊列

恢復該進程的上下文,該進程便進入運行狀態(tài)

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

改變當前進程的PCB中的狀態(tài)入等待隊列轉(zhuǎn)進程調(diào)度原語運行狀態(tài)改變?yōu)榈却隣顟B(tài)根據(jù)等待條件將該進程插入到條件所對應的等待隊列之中由于沒有進程處于運行狀態(tài),就需要選擇新的進程來運行

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

當?shù)却栀Y源或者條件的進程有機會獲得所等待的資源或條件時,該進程就可以從等待狀態(tài)變?yōu)榫途w狀態(tài)這種狀態(tài)的改變需要其他進程的幫助具體做法是運行中的進程調(diào)用進程喚醒原語

喚醒原語找到對應條件的等待隊列從等待隊列中取下一個進程將進程狀態(tài)從等待狀態(tài)變?yōu)榫途w狀態(tài)插入到就緒隊列中直到所有的進程都被處理完畢調(diào)用喚醒原語的進程繼續(xù)執(zhí)行

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

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

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

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

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

每個進程的PCB用一個task_struct數(shù)據(jù)結(jié)構來表示,數(shù)組task包含指向系統(tǒng)中所有task_struct結(jié)構的指針

系統(tǒng)中的最大進程數(shù)目受task數(shù)組大小的限制,缺省值一般為512創(chuàng)建新進程時,Linux將從系統(tǒng)內(nèi)存中分配一個task_struct結(jié)構并將其加入task數(shù)組當前運行進程的結(jié)構用current指針來指示

系統(tǒng)中所有進程都用一個雙向鏈表連接起來,而它們的根是init進程的task_struct數(shù)據(jù)結(jié)構

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

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

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

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

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

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

如:發(fā)送消息的進程,當消息發(fā)送完畢,該進程也隨之死亡進程控制Linux中的調(diào)用實例#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()函數(shù)常用來控制父進程與子進程的同步。父進程必須等待子進程終止后才能終止。在父進程中調(diào)用wait()函數(shù),則父進程被阻塞。進入等待隊列,等待子進程結(jié)束。當子進程結(jié)束時,會產(chǎn)生一個終止狀態(tài)字,系統(tǒng)會向父進程發(fā)出SIGCHLD信號。當接到信號后,父進程提取子進程的終止狀態(tài)字,從wait()返回繼續(xù)執(zhí)行原程序

在正常終止時,exit()函數(shù)返回進程結(jié)束狀態(tài)。在子進程調(diào)用exit()后,子進程的結(jié)束狀態(tài)會返回給系統(tǒng)內(nèi)核,由內(nèi)核根據(jù)狀態(tài)字生成終止狀態(tài),供父進程在wait()中讀取數(shù)據(jù)。等父進程讀取信息后,系統(tǒng)才徹底釋放子進程的進程控制塊

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

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

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

進程控制進程和線程的區(qū)別和聯(lián)系進程是擁有應用程序所有資源的對象;線程是進程中一個獨立的執(zhí)行路徑

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

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

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

P1P5P2

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

P1

P2P3

P4P5P6P7P8

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

進程同步進程相互之間的關系,統(tǒng)稱為同步

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

臨界段(criticalsection):是使用臨界資源的程序段進程一旦進入臨界段,就必須能夠?qū)崿F(xiàn)對資源的獨占使用

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

對臨界段的設計有如下原則:(1)每次至多只允許一個進程處于臨界段中。(2)對于請求進入臨界段的多個進程,在有限時間內(nèi)只讓一個進入。(3)進程只應在臨界段中停留有限時間。要實現(xiàn)臨界段,就是要尋找某一種手段來實現(xiàn)臨界段的三條設計原則進程同步互斥關系進程A和進程B在各自的執(zhí)行過程中,都需要使用變量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的調(diào)度是隨機的,因此進程A和進程B的執(zhí)行順序可以是多種多樣的:進程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錯誤只有保證程序段執(zhí)行的完整性,就可以獲得預期的結(jié)果;如果不保障此程序段連續(xù)執(zhí)行,則運行的結(jié)果不可預測臨界區(qū)中程序的執(zhí)行必須遵守臨界區(qū)的設計原則。只有在兩個程序段互斥運行的情況下,才可以保證獲得正確的運行結(jié)果進程同步同步關系進程A和進程B共用堆棧S的情況目標:由進程A將數(shù)據(jù)順序壓入堆棧,再由進程B將數(shù)據(jù)反向彈出堆棧

進程A:

PUSHS;

PUSHS;

PUSHS;

PUSHS;進程B:

POPS;

POPS;

POPS;

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

臨界區(qū)入口手段;臨界區(qū);

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

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

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

turn=1,臨界區(qū)內(nèi)有進程

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

當它從臨界區(qū)退出后,需調(diào)用leave_region函數(shù),允許其它進程進入臨界區(qū)兩函數(shù)的參數(shù)i均為進程號

enter_region(i);臨界區(qū);leave_region(i);非臨界區(qū);#defineFALSE0#defineTRUE1#defineN2/*進程的個數(shù)*/intturn; /*輪到誰?*/intinterested[N]; /*想進入臨界區(qū)數(shù)組,初始值均為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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論