發(fā)布時(shí)間: 2017-06-16 13:44:33
1、進(jìn)程與線(xiàn)程的區(qū)別
(1) 粒度性分析:線(xiàn)程的粒度小于進(jìn)程;
(2) 調(diào)度性分析:進(jìn)程是資源擁有的基本單位,線(xiàn)程是獨(dú)立調(diào)度與獨(dú)立運(yùn)行的基本單位,出了寄存器,程序計(jì)數(shù)器等必要的資源外基本不擁有其他資源;
(3)系統(tǒng)開(kāi)銷(xiāo)分析:由于線(xiàn)程基本不擁有系統(tǒng)資源,所以在進(jìn)行切換時(shí),線(xiàn)程切換的開(kāi)銷(xiāo)遠(yuǎn)遠(yuǎn)小于進(jìn)程。
2、進(jìn)程同步與互斥的區(qū)別
互斥指某一資源同時(shí)只允許一個(gè)訪(fǎng)問(wèn)者對(duì)其進(jìn)行訪(fǎng)問(wèn),具有唯一性和排它性。但互斥無(wú)法限制訪(fǎng)問(wèn)者對(duì)資源的訪(fǎng)問(wèn)順序,即訪(fǎng)問(wèn)是無(wú)序的。
同步是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過(guò)其它機(jī)制實(shí)現(xiàn)訪(fǎng)問(wèn)者對(duì)資源的有序訪(fǎng)問(wèn)。在大多數(shù)情況下,同步已經(jīng)實(shí)現(xiàn)了互斥,特別是所有寫(xiě)入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個(gè)訪(fǎng)問(wèn)者同時(shí)訪(fǎng)問(wèn)資源。
簡(jiǎn)單地說(shuō):同步體現(xiàn)的是一種協(xié)作性,互斥體現(xiàn)的是一種排他性。
3、進(jìn)程間的通信方式有哪些?
(1) 管道( pipe )-管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng),而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系;
(2)有名管道 (named pipe) -有名管道也是半雙工的通信方式,但是它允許無(wú)親緣關(guān)系進(jìn)程間的通信;
(3)信號(hào)量( semophore ) -信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪(fǎng)問(wèn)。它常作為一種鎖機(jī)制,防止某進(jìn)程正在訪(fǎng)問(wèn)共享資源時(shí),其他進(jìn)程也訪(fǎng)問(wèn)該資源。因此,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線(xiàn)程之間的同步手段;
(4) 消息隊(duì)列( message queue )-消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。消息隊(duì)列克服了信號(hào)傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn);
(5)信號(hào) ( sinal )-信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生;(6)共享內(nèi)存(
shared memory
)-共享內(nèi)存就是映射一段能被其他進(jìn)程所訪(fǎng)問(wèn)的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪(fǎng)問(wèn)。共享內(nèi)存是最快的 IPC
方式,它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專(zhuān)門(mén)設(shè)計(jì)的。它往往與其他通信機(jī)制,如信號(hào)兩,配合使用,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信;
(7)套接字( socket )-套解口也是一種進(jìn)程間通信機(jī)制,與其他通信機(jī)制不同的是,它可用于不同及其間的進(jìn)程通信。
4、作業(yè)(或進(jìn)程)的調(diào)度算法有哪些?
(1)先來(lái)先服務(wù)(FCFS,F(xiàn)irst-Come-First-Served)-此算法的原則是按照作業(yè)到達(dá)后備作業(yè)隊(duì)列(或進(jìn)程進(jìn)入就緒隊(duì)列)的先后次序來(lái)選擇作業(yè)(或進(jìn)程);
(2)短作業(yè)優(yōu)先(SJF,Shortest Process Next)-這種調(diào)度算法主要用于作業(yè)調(diào)度,它從作業(yè)后備隊(duì)列中挑選所需運(yùn)行時(shí)間(估計(jì)值)最短的作業(yè)進(jìn)入主存運(yùn)行;
(3)時(shí)間片輪轉(zhuǎn)調(diào)度算法(RR,Round-Robin)-當(dāng)某個(gè)進(jìn)程執(zhí)行的時(shí)間片用完時(shí),調(diào)度程序便停止該進(jìn)程的執(zhí)行,并將它送就緒隊(duì)列的末尾,等待分配下一時(shí)間片再執(zhí)行。然后把處理機(jī)分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程,在一給定的時(shí)間內(nèi),均能獲得一時(shí)間片處理機(jī)執(zhí)行時(shí)間;
(4)高響應(yīng)比優(yōu)先(HRRN,Highest
Response Ratio Next)-按照高響應(yīng)比((已等待時(shí)間+要求運(yùn)行時(shí)間)/
要求運(yùn)行時(shí)間)優(yōu)先的原則,在每次選擇作業(yè)投入運(yùn)行時(shí),先計(jì)算此時(shí)后備作業(yè)隊(duì)列中每個(gè)作業(yè)的響應(yīng)比RP然后選擇其值較大的作業(yè)投入運(yùn)行;
(5)優(yōu)先權(quán)(Priority)調(diào)度算法-按照進(jìn)程的優(yōu)先權(quán)大小來(lái)調(diào)度,使高優(yōu)先權(quán)進(jìn)程得到優(yōu)先處理的調(diào)度策略稱(chēng)為優(yōu)先權(quán)調(diào)度算法。此處注意,優(yōu)先數(shù)越多,優(yōu)先權(quán)越小;
(6)多級(jí)隊(duì)列調(diào)度算法-多隊(duì)列調(diào)度是根據(jù)作業(yè)的性質(zhì)和類(lèi)型的不同,將就緒隊(duì)列再分為若干個(gè)子隊(duì)列,所有的作業(yè)(或進(jìn)程)按其性質(zhì)排入相應(yīng)的隊(duì)列中,而不同的就緒隊(duì)列采用不同的調(diào)度算法。
5、死鎖產(chǎn)生的原因,死鎖產(chǎn)生的必要條件是什么,如何預(yù)防死鎖,如何避免死鎖,死鎖定理?
死鎖產(chǎn)生的原因:
(1)競(jìng)爭(zhēng)資源;
(2)進(jìn)程推進(jìn)順序不當(dāng)。
死鎖產(chǎn)生的必要條件:
(1)互斥條件-一個(gè)資源一次只能被一個(gè)進(jìn)程所使用,即是排它性使用;
(2)不剝奪條件-一個(gè)資源僅能被占有它的進(jìn)程所釋放,而不能被別的進(jìn)程強(qiáng)占;
(3)請(qǐng)求與保持條件-進(jìn)程已經(jīng)保持了至少一個(gè)資源,但又提出了新的資源要求,而該資源又已被其它進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程阻塞,但又對(duì)已經(jīng)獲得的其它資源保持不放;
(4)環(huán)路等待條件-當(dāng)每類(lèi)資源只有一個(gè)時(shí),在發(fā)生死鎖時(shí)必然存在一個(gè)進(jìn)程-資源的環(huán)形鏈。
預(yù)防死鎖-破壞四個(gè)必要條件之一。
死鎖的避免-銀行家算法,該方法允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,系統(tǒng)在進(jìn)行資源分配之前,先計(jì)算資源分配的安全性。若此次分配不會(huì)導(dǎo)致系統(tǒng)從安全狀態(tài)向不安全狀態(tài)轉(zhuǎn)換,便可將資源分配給進(jìn)程;否則不分配資源,進(jìn)程必須阻塞等待。從而避免發(fā)生死鎖。
死鎖定理-S為死鎖狀態(tài)的充分條件是:尚且僅當(dāng)S狀態(tài)的資源分配圖是不可完全簡(jiǎn)化的,該充分條件稱(chēng)為死鎖定理。
死鎖的解除:
(1)方法1-強(qiáng)制性地從系統(tǒng)中撤消一個(gè)或多個(gè)死鎖的進(jìn)程以斷開(kāi)循環(huán)等待鏈,并收回分配給終止進(jìn)程的全部資源供剩下的進(jìn)程使用。
(2)方法2-使用一個(gè)有效的掛起和解除機(jī)構(gòu)來(lái)掛起一些死鎖的進(jìn)程,其實(shí)質(zhì)是從被掛起的進(jìn)程那里搶占資源以解除死鎖。
6、分段式存儲(chǔ)管理、分頁(yè)式存儲(chǔ)管理,兩個(gè)的區(qū)別?
分段式存儲(chǔ)管理-分頁(yè)存儲(chǔ)管理是將一個(gè)進(jìn)程的地址(邏輯地址空間)空間劃分成若干個(gè)大小相等的區(qū)域,稱(chēng)為頁(yè),相應(yīng)地,將內(nèi)存空間劃分成與頁(yè)相同大小(為了保證頁(yè)內(nèi)偏移一致)的若干個(gè)物理塊,稱(chēng)為塊或頁(yè)框(頁(yè)架)。在為進(jìn)程分配內(nèi)存時(shí),將進(jìn)程中的若干頁(yè)分別裝入多個(gè)不相鄰接的塊中。
分頁(yè)式存儲(chǔ)管理-在分段存儲(chǔ)管理方式中,作業(yè)的地址空間被劃分為若干個(gè)段,每個(gè)段是一組完整的邏輯信息,如有主程序段、子程序段、數(shù)據(jù)段及堆棧段等,每個(gè)段都有自己的名字,都是從零開(kāi)始編址的一段連續(xù)的地址空間,各段長(zhǎng)度是不等的。
兩者的區(qū)別:
1.頁(yè)是信息的物理單位,分頁(yè)是為了實(shí)現(xiàn)非連續(xù)的分配,以便解決內(nèi)存的碎片問(wèn)題,或者說(shuō)分頁(yè)是為了由于系統(tǒng)管理的需要;
2.頁(yè)的大小固定是由系統(tǒng)確定的,將邏輯地址劃分為頁(yè)號(hào)和頁(yè)內(nèi)地址是由機(jī)器硬件實(shí)現(xiàn)的。而段的長(zhǎng)度是不固定的,決定與用戶(hù)的程序長(zhǎng)度,通常由編譯程序進(jìn)行編譯時(shí)根據(jù)信息的性質(zhì)來(lái)劃分;
3.分頁(yè)式存儲(chǔ)管理的作業(yè)地址空間是一維的,分段式的存儲(chǔ)管理的作業(yè)管理地址空間是二維的。
7、頁(yè)面置換算法有哪些?
(1)最佳置換算法(Optimal)-即選擇那些永不使用的,或者是在最長(zhǎng)時(shí)間內(nèi)不再被訪(fǎng)問(wèn)的頁(yè)面置換出去。(它是一種理想化的算法,性能最好,但在實(shí)際上難于實(shí)現(xiàn));
(2)先進(jìn)先出置換算法FIFO-該算法總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面,即選擇在內(nèi)存中駐留時(shí)間最久的頁(yè)面予以淘汰;
(3)最近最久未使用置換算法LRU(Least Recently Used)-該算法是選擇最近最久未使用的頁(yè)面予以淘汰,系統(tǒng)在每個(gè)頁(yè)面設(shè)置一個(gè)訪(fǎng)問(wèn)字段,用以記錄這個(gè)頁(yè)面自上次被訪(fǎng)問(wèn)以來(lái)所經(jīng)歷的時(shí)間T,當(dāng)要淘汰一個(gè)頁(yè)面時(shí),選擇T較大的頁(yè)面;
(4)Clock置換算法-也叫最近未用算法NRU(Not
RecentlyUsed)。該算法為每個(gè)頁(yè)面設(shè)置一位訪(fǎng)問(wèn)位,將內(nèi)存中的所有頁(yè)面都通過(guò)鏈接指針鏈成一個(gè)循環(huán)隊(duì)列。當(dāng)某頁(yè)被訪(fǎng)問(wèn)時(shí),其訪(fǎng)問(wèn)位置“1”。在選擇一頁(yè)淘汰時(shí),就檢查其訪(fǎng)問(wèn)位,如果是“0”,就選擇該頁(yè)換出;若為“1”,則重新置為“0”,暫不換出該頁(yè),在循環(huán)隊(duì)列中檢查下一個(gè)頁(yè)面,直到訪(fǎng)問(wèn)位為“0”的頁(yè)面為止。由于該算法只有一位訪(fǎng)問(wèn)位,只能用它表示該頁(yè)是否已經(jīng)使用過(guò),而置換時(shí)是將未使用過(guò)的頁(yè)面換出去,所以把該算法稱(chēng)為最近未用算法;
(5)最少使用置換算法LFU-該算法選擇最近時(shí)期使用最少的頁(yè)面作為淘汰頁(yè)。