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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

獨(dú)立性:多用戶各自獨(dú)立地使用計(jì)算機(jī)

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

交互性:通過終端直接與計(jì)算機(jī)進(jìn)行對話

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

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

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

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

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

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

UNIX操作系統(tǒng)

Linux操作系統(tǒng)

DOS操作系統(tǒng)

Windows操作系統(tǒng)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

進(jìn)程控制塊

進(jìn)程實(shí)體

PCB的組織

進(jìn)程上下文

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

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

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

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

TSIZE:進(jìn)程對應(yīng)代碼段大小

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

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

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

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

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

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

PCB是進(jìn)程存在的唯一標(biāo)志

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

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

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

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

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

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

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

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

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

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

在原語的設(shè)計(jì)上,它有著比普通程序更嚴(yán)格的要求

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

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

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

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

由于任務(wù)是可以分解的,每一個應(yīng)用進(jìn)程還可以建立自己的子進(jìn)程

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

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

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

進(jìn)程控制進(jìn)程調(diào)度當(dāng)占有CPU的進(jìn)程運(yùn)行完分配給它的時(shí)間片,或者因?yàn)樯暾埬骋环N條件得不到滿足時(shí),就需要放棄CPU。這時(shí)操作系統(tǒng)就要選取新的進(jìn)程到CPU上運(yùn)行,這正是進(jìn)程調(diào)度原語要完成如下工作:首先要找到就緒隊(duì)列的首指針

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

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

恢復(fù)該進(jìn)程的上下文,該進(jìn)程便進(jìn)入運(yùn)行狀態(tài)

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

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

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

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

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

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

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

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

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

前臺進(jìn)程:指運(yùn)行時(shí)在標(biāo)準(zhǔn)輸出設(shè)備上能看見其運(yùn)行結(jié)果的進(jìn)程,一般運(yùn)行單條命令時(shí),多采用前臺方式后臺進(jìn)程:指運(yùn)行時(shí)看不見運(yùn)行結(jié)果的進(jìn)程

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

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

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

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

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

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

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

當(dāng)用戶注銷時(shí),shell進(jìn)程也被撤消

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

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

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

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

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

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

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

一個進(jìn)程至少要有一個線程,這個線程被叫做主線程一個進(jìn)程的線程越多,該進(jìn)程獲得的CPU時(shí)間就越多,進(jìn)程的運(yùn)行時(shí)間就越快所有線程參與對CPU時(shí)間片的競爭線程運(yùn)行時(shí)共享其對應(yīng)進(jìn)程所擁有的資源

進(jìn)程同步進(jìn)程運(yùn)行關(guān)系串行

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

P1P5P2

P3P4P6P7P8進(jìn)程之間的關(guān)系既有串行也有并行,甚至串行中包含并行或者并行中包含串行調(diào)度時(shí)須在分清串行或者并行關(guān)系的基礎(chǔ)上采取對應(yīng)的方法

P1

P2P3

P4P5P6P7P8

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

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

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

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

互斥:若干進(jìn)程競爭進(jìn)入臨界段時(shí),相互之間所形成的排它性關(guān)系

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

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

K=3;L=4;

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

進(jìn)程A:

PUSHS;

PUSHS;

PUSHS;

PUSHS;進(jìn)程B:

POPS;

POPS;

POPS;

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論