- 相關(guān)推薦
操作系統面試題準備
就只準備了進(jìn)程線(xiàn)程之類(lèi)的,再深了一時(shí)半會(huì )也搞不定了。
1.進(jìn)程
現在操作系統的特點(diǎn):保證安全前提下,程序并發(fā)執行,以及系統所擁有的資源被共享和用戶(hù)隨機使用系統。
進(jìn)程是一個(gè)程序對某個(gè)數據集的執行過(guò)程,是分配資源的基本單位。
進(jìn)程的靜態(tài)描述有:進(jìn)程由三部分組成:程序,數據集合和進(jìn)程控制塊(pCB)。
程序表示要完成的功能,數據集合表示程序運行時(shí)的數據部分和工作區。這二者是進(jìn)程的物質(zhì)基礎。
如果一個(gè)程序是多進(jìn)程同時(shí)共享執行,則為不可修改的部分,表現為純碼的形式,數據集合為為一個(gè)進(jìn)程獨用,為可以修改部分。
pCB進(jìn)程控制塊,表示了進(jìn)程的描述信息、控制信息和資源信息,是進(jìn)程動(dòng)態(tài)特性的集中反應。是系統感知進(jìn)程的唯一實(shí)體,一個(gè)進(jìn)程的pCB全部或者部分常駐內存。
pCB包含的控制信息中有進(jìn)程的當前狀態(tài)。
進(jìn)程的的狀態(tài)只有五種狀態(tài):初始態(tài),就緒態(tài),執行態(tài),等待狀態(tài)和終止狀態(tài)。
運行:進(jìn)程已經(jīng)分配到處理機,程序正由處理機執行。
等待:進(jìn)程因為等待某一事件而暫時(shí)不能運行的狀態(tài)。
就緒:進(jìn)程已具備執行條件,但是因為處理機已由其他進(jìn)程占用,所以暫時(shí)不能執行而等待分配處理機。
互斥和同步
互斥:一組并發(fā)進(jìn)程中的一個(gè)或者多個(gè)程序段,因共享某一公有資源而導致它們必須以一個(gè)不允許交叉執行的單位執行。不允許兩個(gè)及以上的共享該資源的并發(fā)進(jìn)程同時(shí)進(jìn)入臨界區。
臨界區:不允許多個(gè)并發(fā)進(jìn)程交叉執行的一段程序稱(chēng)為臨界區。
1、臨界區的鎖操作方法:給每個(gè)臨界區設置一把鎖,有兩個(gè)狀態(tài),打開(kāi)或者關(guān)閉。步驟如下:關(guān)鎖操作,如果鎖開(kāi)著(zhù)就關(guān)閉,如果鎖關(guān)閉則等待打開(kāi);執行臨界區程序;開(kāi)鎖操作,將鎖打開(kāi),退出臨界區。某個(gè)進(jìn)程進(jìn)入臨界區會(huì )檢測鎖是否打開(kāi),如果關(guān)閉則等待打開(kāi)。
上鎖實(shí)現互斥,缺點(diǎn):影響系統可靠性和效率,比如多并發(fā),每個(gè)進(jìn)程都要測試臨界區鎖狀態(tài),開(kāi)銷(xiāo)很大。存在cpu浪費和不公平現象。
2、“信號量”
信號量,sem為與臨界區內所使用的公用資源有關(guān)的信號量。
p表示sem-1,V則sem+1,多進(jìn)程并發(fā)時(shí),和上鎖不一樣,如果無(wú)法使用臨界區,不是再次檢測,而是進(jìn)入等待隊列。sem>=0,表示可供并發(fā)進(jìn)程使用的資源實(shí)體數;sem<0,等待使用臨界區的進(jìn)程數。
p:(1)sem=sem-1(2)sem>=0,p返回,進(jìn)程繼續執行(3)sem<0,進(jìn)程被阻塞后與該信號相對應的隊列中。
V:(1)sem=sem+1(2)sem>0,V停止執行,進(jìn)程返回調用處,繼續執行(3)sem<=0,從該信號的隊列中喚醒一等待進(jìn)程,然后再返回原進(jìn)程繼續執行或轉進(jìn)程調度。
pV操作對于每一個(gè)進(jìn)程來(lái)說(shuō),都只能進(jìn)行一次,而且必須成對使用。在pV原語(yǔ)執行期間不允許有中斷的發(fā)生。
pV實(shí)現互斥:(1)sem初始值為1(2)進(jìn)程p1進(jìn)入臨界區,執行p操作,sem=0,進(jìn)程進(jìn)入臨界區執行(3)進(jìn)程p2進(jìn)入臨界區,執行p操作,sem=-1,p2被阻塞,進(jìn)入信號對應等待隊列(4)p1執行V操縱,sem=0,喚醒p2進(jìn)入就緒隊列,進(jìn)行調度,進(jìn)入臨界區(5)p2執行V操作,sem=1,恢復初始狀態(tài)。
同步:把異步環(huán)境下的一組并發(fā)進(jìn)程,因直接制約而互相發(fā)送消息而進(jìn)行互相合作、互相等待,使得各進(jìn)程按一定的速度執行的過(guò)程稱(chēng)為進(jìn)程間的同步。
3.進(jìn)程,線(xiàn)程,作業(yè),程序。
作業(yè):是用戶(hù)需要計算機完成的某項任務(wù),而要求計算機所作工作的集合。
進(jìn)程:是一個(gè)程序對某個(gè)數據集的執行過(guò)程,是分配資源的基本單位。
程序:描述計算機所要完成的獨立功能,并在時(shí)間上嚴格得按照前后次序相機地進(jìn)行計算機操作序列集合,是一個(gè)靜態(tài)的概念。
線(xiàn)程:是在進(jìn)程內調度和占有處理機的基本單位。由于線(xiàn)程比進(jìn)程更小,基本上不擁有系統資源,故對它的調度所付出的開(kāi)銷(xiāo)就會(huì )小得多,能更高效的提高系統內多個(gè)程序間并發(fā)執行的程度。
進(jìn)程和程序:
進(jìn)程是程序的一次運行活動(dòng),是動(dòng)態(tài)的,程序是靜態(tài)指令;
一個(gè)進(jìn)程可以執行一個(gè)或者多個(gè)程序,同一程序也可由多個(gè)進(jìn)程執行;
程序作為資源長(cháng)期保留,進(jìn)程則是執行過(guò)程,是暫時(shí)的。
進(jìn)程和線(xiàn)程:
進(jìn)程是資源管理的基本單位;線(xiàn)程是處理機調度的基本單位。
以進(jìn)程為單位進(jìn)行處理機切換和調度,切換時(shí)間長(cháng),資源利用率低;線(xiàn)程為單位,不發(fā)生資源變化,切換實(shí)踐短,效率高。
進(jìn)程和作業(yè):
4.哲學(xué)家就餐:
有五個(gè)哲學(xué)家圍坐在一圓桌旁,桌中央有一盤(pán)通心粉,每人面前有一只空盤(pán)子,每?jì)扇酥g放一只筷子每個(gè)哲學(xué)家的行為是思考,感到饑餓,然后吃通心粉.為了吃通心粉,每個(gè)哲學(xué)家必須拿到兩只筷子,并且每個(gè)人只能直接從自己的左邊或右邊去取筷子,任一哲學(xué)家在自己未拿到兩支筷子吃飯前,絕不放下手中的筷子。
(1)保證不會(huì )出現兩個(gè)鄰座同時(shí)要求吃飯
思路:鄰座使用筷子時(shí)的進(jìn)程互斥,使用信號量。設定五個(gè)信號量,初始為1,表示對應編號的筷子,有人使用,信號量執行p操作,鄰座需要使用筷子時(shí),對兩側的筷子均執行p操作,進(jìn)入等待隊列。吃完后,執行V操作,鄰座進(jìn)入就緒狀態(tài),可以開(kāi)始就餐。
會(huì )出現問(wèn)題,就是每人都拿一個(gè)筷子,誰(shuí)也吃不上的死鎖。
(2)既沒(méi)有兩鄰座同時(shí)吃飯又沒(méi)人餓死
思路:奇數號的哲學(xué)家先取右手的筷子,偶數號的先取左手的。然后還是使用信號量實(shí)現互斥。
5.死鎖
若干進(jìn)程競爭使用資源,如果每個(gè)進(jìn)程都占有了一定資源,又申請使用已被另一進(jìn)程占用且不能搶占的資源,則所有的進(jìn)程將紛紛進(jìn)入等待狀態(tài),不能繼續運行。這種情況叫做死鎖。
產(chǎn)生死鎖的原因主要是:(1) 因為系統資源不足。(2) 進(jìn)程運行推進(jìn)的順序不合適。(3)資源分配不當等。根本原因在于系統提供的資源數小于并發(fā)進(jìn)程所要求的該類(lèi)資源數。
產(chǎn)生死鎖的四個(gè)必要條件:(1) 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。(2)部分分配:進(jìn)程每次申請它所需要的一部分資源,在等待新資源的同時(shí),繼續占用已分配到的資源。(3)不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強行剝奪。(4)環(huán)路條件:存在進(jìn)程循環(huán)鏈,鏈中每個(gè)進(jìn)程已獲得的資源同時(shí)被下一個(gè)進(jìn)程所請求。
解決死鎖:
預防:采用策略,是的四個(gè)必要條件在系統執行的任何時(shí)間均不滿(mǎn)足。
避免:動(dòng)態(tài)分配資源,避免死鎖。
恢復:檢測死鎖的位置和原因,通過(guò)外力破壞死鎖發(fā)生的必要條件。
【操作系統面試題準備】相關(guān)文章:
c面試題08-04
做家教的準備07-24
準備期末演講12-28
求職準備(著(zhù)裝)04-20
專(zhuān)題演講的準備04-17
考試準備作文09-01
星巴克面試題目07-18
軟件測試面試題及答案12-30
博彥科技測試面試題03-22