操作系統(tǒng)相關(guān)題目總結(jié)
題目一:進(jìn)程和線程區(qū)別?
1.進(jìn)程是資源分配的基本單位,也是調(diào)度運(yùn)行的基本單位;線程是調(diào)度的基本單位。
2.進(jìn)程有獨(dú)立的虛擬地址空間。父子進(jìn)程共享文件表,但不共享用戶地址空間。
*優(yōu)點(diǎn):一個(gè)進(jìn)程崩潰后不會對其他進(jìn)程產(chǎn)生影響。
*缺點(diǎn):進(jìn)程間共享數(shù)據(jù)變得困難,必須使用顯式的IPC機(jī)制。
*進(jìn)程虛擬地址空間包括:代碼段、堆棧段(臨時(shí)數(shù)據(jù):如函數(shù)參數(shù)、返回地址和局部變量)、數(shù)據(jù)段(包括全局變量)、堆(動態(tài)分配的內(nèi)存)等等。
3.線程運(yùn)行在進(jìn)程的上下文中,所有運(yùn)行在一個(gè)進(jìn)程內(nèi)的線程共享該進(jìn)程的整個(gè)虛擬地址空間:代碼、數(shù)據(jù)、堆、共享庫和打開文件。
*每個(gè)線程有自己的線程上下文:一個(gè)線程ID、棧、棧指針、程序計(jì)數(shù)器、通用目的的寄存器和條件嗎。
4.創(chuàng)建、切換和終止開銷小:線程的上下文比進(jìn)程的上下文小很多,所以線程的創(chuàng)建、上下文切換和終止要比進(jìn)程快很多。
*線程間共享數(shù)據(jù)容易,因?yàn)槎鄠€(gè)線程共享進(jìn)程地址空間,但需要同步。
5.補(bǔ)充程序和進(jìn)程區(qū)別(選自操作系統(tǒng)概念第7版):
*程序本身不是進(jìn)程,程序只是被動實(shí)體,如存儲在磁盤上的一系列指令的文件內(nèi)容(常被成為可執(zhí)行文件)
*進(jìn)程是活動實(shí)體,它有一個(gè)程序計(jì)數(shù)器來表示下一個(gè)要執(zhí)行的命令和相關(guān)資源集合。
*當(dāng)一個(gè)可執(zhí)行文件被裝入內(nèi)存時(shí),一個(gè)程序才成為進(jìn)程。
*雖然多個(gè)進(jìn)程可以與統(tǒng)一程序相關(guān),但是它們被當(dāng)做兩個(gè)獨(dú)立的執(zhí)行序列,都是獨(dú)立的進(jìn)程,雖然文本段相同,但是數(shù)據(jù)段、堆、堆棧段都不同。
題目二:進(jìn)程間通信方式?
1.管道
2.消息隊(duì)列
3.共享內(nèi)存
4.套接字
5.信號量
6.信號:異步通信方式,軟件層次上對中斷機(jī)制的一種模擬。
題目三:進(jìn)程的組成部分和狀態(tài)?
(一)進(jìn)程的組成部分:進(jìn)程控制塊、程序段和數(shù)據(jù)段。
(二)進(jìn)程的狀態(tài)(注意狀態(tài)之間切換條件):
1.三種基本狀態(tài):運(yùn)行態(tài)、就緒態(tài)、阻塞態(tài)。
2.掛起狀態(tài)(從內(nèi)存換出到磁盤):當(dāng)內(nèi)存中的所有進(jìn)程都處于阻塞態(tài),OS把被阻塞的進(jìn)程換出到磁盤中的“掛起隊(duì)列”(將進(jìn)程置于掛起態(tài),并將它轉(zhuǎn)移到磁盤),內(nèi)存中釋放的空間可被調(diào)入的另一個(gè)進(jìn)程使用。取哪個(gè)進(jìn)程到內(nèi)存執(zhí)行的選擇:新創(chuàng)建的進(jìn)程或調(diào)入一個(gè)以前被掛起的進(jìn)程(傾向于這個(gè),不會增加系統(tǒng)的負(fù)載)。
3.新建態(tài)和終止態(tài)。
題目四:死鎖的條件和預(yù)防?
一 死鎖的充分必要條件:
*互斥:一次只有一個(gè)進(jìn)程可以使用一個(gè)資源。
*占有且等待:當(dāng)一個(gè)進(jìn)程等待其他進(jìn)程時(shí),繼續(xù)占有已經(jīng)分配的資源。
*不可搶占:不能強(qiáng)行搶占進(jìn)程已占有的資源。
*環(huán)路等待:存在一個(gè)封閉的進(jìn)程鏈,使每個(gè)進(jìn)程至少占有此鏈中下一個(gè)進(jìn)程所需要的一個(gè)資源。
前三個(gè)是死鎖的必要條件,第四個(gè)是前三個(gè)條件的潛在結(jié)果。
二 處理死鎖的基本方法:
*死鎖預(yù)防:通過設(shè)置某些限制條件,去破壞死鎖的四個(gè)條件中的一個(gè)或幾個(gè)條件,來預(yù)防發(fā)生死鎖。但由于所施加的限制條件往往太嚴(yán)格,因而導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量降低。
*死鎖避免:允許前三個(gè)必要條件,但通過明智的選擇,確保永遠(yuǎn)不會到達(dá)死鎖點(diǎn),因此死鎖避免比死鎖預(yù)防允許更多的并發(fā)。(例如銀行家算法)。
*死鎖檢測:不須實(shí)現(xiàn)采取任何限制性措施,而是允許系統(tǒng)在運(yùn)行過程發(fā)生死鎖,但可通過系統(tǒng)設(shè)置的檢測機(jī)構(gòu)及時(shí)檢測出死鎖的發(fā)生,并精確地確定于死鎖相關(guān)的進(jìn)程和資源,然后采取適當(dāng)?shù)拇胧瑥南到y(tǒng)中將已發(fā)生的死鎖清除掉。
*死鎖解除:與死鎖檢測相配套的一種措施。當(dāng)檢測到系統(tǒng)中已發(fā)生死鎖,需將進(jìn)程從死鎖狀態(tài)中解脫出來。常用方法:撤銷或掛起一些進(jìn)程,以便回收一些資源,再將這些資源分配給已處于阻塞狀態(tài)的進(jìn)程。
題目五:內(nèi)存管理技術(shù)有哪些?
1.固定分區(qū)(連續(xù)分區(qū)):將內(nèi)存用戶空間劃分為多個(gè)固定大小的靜態(tài)分區(qū),進(jìn)程被裝入大于或等于自身大小的分區(qū)。
*分區(qū)的大小可以是長度都相等;或者不等,分為多個(gè)較小分區(qū)、適量中等分區(qū),少量較大分區(qū)。
*優(yōu)點(diǎn):實(shí)現(xiàn)簡單,開銷小。
*缺點(diǎn):有內(nèi)部碎片,內(nèi)存使用不充分;活動進(jìn)程的最大數(shù)目是固定的。
2.動態(tài)分區(qū)(連續(xù)分區(qū)):分區(qū)是動態(tài)創(chuàng)建的,每個(gè)進(jìn)程可以被裝入與自身大小相等的分區(qū)中。
*優(yōu)點(diǎn):沒有內(nèi)部碎片;可以充分使用內(nèi)存。
*缺點(diǎn):有外部碎片,由于需要壓縮外部碎片,處理器利用率低。
3.簡單分頁:內(nèi)存被劃分為許多大小相等的頁框;每個(gè)進(jìn)程被劃分成許多大小與頁框大小相等的頁;要裝入進(jìn)程,需要把進(jìn)程的所有頁都裝入內(nèi)存中不一定連續(xù)的某些頁框中。
*優(yōu)點(diǎn):沒有外部碎片。
*缺點(diǎn):有少量內(nèi)部碎片。
4.簡單分段(段的大小不固定):每個(gè)進(jìn)程被劃分成許多段;要裝入進(jìn)程需要把進(jìn)程包含的所有段都裝入內(nèi)存中不一定連續(xù)的某些動態(tài)分區(qū)中。
*優(yōu)點(diǎn):沒有內(nèi)部碎片,相對于動態(tài)分區(qū),提高了內(nèi)存利用率,減少了開銷。
*缺點(diǎn):存在外部碎片。
5.虛擬內(nèi)存分頁:除了不需要把進(jìn)程的所有頁都裝入內(nèi)存之外,與簡單分頁一樣;非駐留頁在以后需要時(shí)調(diào)入內(nèi)存。
*優(yōu)點(diǎn):沒有外部碎片;巨大的虛擬地址空間。
*缺點(diǎn):復(fù)雜的內(nèi)存管理開銷。
6.虛擬內(nèi)存分段:除了不需要把進(jìn)程的所有段都裝入內(nèi)存之外,與簡單分段一樣;非駐留段在以后需要時(shí)調(diào)入內(nèi)存。
*優(yōu)點(diǎn):沒有外部碎片;巨大的虛擬地址空間;支持共享和保護(hù)。
*缺點(diǎn):復(fù)雜的內(nèi)存管理開銷。
題目六:分頁與分段相同點(diǎn)和區(qū)別?
一 相同點(diǎn):兩者都采用離散分配方式,且都需要地址映射機(jī)構(gòu)來實(shí)現(xiàn)地址變換。
二 不同點(diǎn):
(1)頁時(shí)信息的物理單位,分頁是為實(shí)現(xiàn)離散分配方式,以消減內(nèi)存的外部碎片,提高內(nèi)存利用率,也就是說分頁僅僅是由于系統(tǒng)管理的需要而不是用戶的需要;段則是信息的邏輯單位,它含有一組其意義相對完整的信息,分段的目的是更好的滿足用戶的需要。
(2)頁的大小固定且由系統(tǒng)決定,在系統(tǒng)中只有一種大小的頁面;而段的長度不固定,決定于用戶編寫的程序,通常由編譯程序在對源程序進(jìn)行編譯時(shí),根據(jù)信息的性質(zhì)來劃分。
(3)段的優(yōu)點(diǎn):
*信息共享和信息保護(hù):信息共享和信息保護(hù)都是以信息的邏輯單位為基礎(chǔ)。
*等等。
題目七:頁面置換算法有哪幾種?
(1)最佳置換算法(OPT):選擇置換下次訪問距離當(dāng)前時(shí)間最長的那些頁。
*該算法導(dǎo)致最少的缺頁中斷,但由于無法預(yù)知一個(gè)進(jìn)程在內(nèi)存的若干個(gè)頁面哪個(gè)是未來最長時(shí)間不再被訪問的,因而該算法無法實(shí)現(xiàn),但是可以作為一種標(biāo)準(zhǔn)來衡量其他置換算法。
(2)最近最久未使用算法(LRU:Least Recently Used):置換內(nèi)存中上次使用距離當(dāng)前最遠(yuǎn)的頁。
*LRU策略性能接近于OPT,但比較難實(shí)現(xiàn)(需要系統(tǒng)較多硬件支持,需要大量開銷)。
(3)FIFO策略:淘汰最先進(jìn)入內(nèi)存的頁面,即選擇在內(nèi)存中駐留時(shí)間最久的頁面予以淘汰。
*該算法實(shí)現(xiàn)簡單,但性能相對較差。
(4)時(shí)鐘策略(Clock置換算法):
1.簡單的Clock置換算法(使用位):給每一個(gè)頁框關(guān)聯(lián)一個(gè)附加位,稱為使用位。當(dāng)某一頁首次裝入內(nèi)存中,將該頁框的使用位設(shè)為1;當(dāng)該頁隨后被訪問到時(shí),它的使用位也為1。頁面置換算法中,用于置換的候選頁框集合被看做一個(gè)循環(huán)緩沖區(qū),并且有一個(gè)指針與之關(guān)聯(lián)。
*過程:
~當(dāng)需要置換一頁時(shí),系統(tǒng)掃描緩沖區(qū),以查找使用位被置為0的一頁框。當(dāng)遇到使用位為1的頁框時(shí),操作系統(tǒng)就將該位重新設(shè)置為0。
~如果所有頁框使用位都為1時(shí),則指針在緩沖區(qū)中循環(huán)一周,把所有使用位都置0,并且停留在最初位置,置換該頁框中的頁。
2.改進(jìn)的Clock置換算法(使用位+修改位):將一個(gè)頁面換出時(shí),如果該頁已被修改過,便須將該頁重新寫回到磁盤上;如果該頁未被修改,則不必將它拷回磁盤。在改進(jìn)的的Clock置換算法中,除要考慮頁面的使用情況,還需考慮置換代價(jià)。選擇頁面換出時(shí),既要是未使用過的頁面,又要是未被修改過的頁面,把同時(shí)滿足這兩個(gè)條件的頁面作為首選淘汰頁面。