當前位置:範文城>職場範本>面試>

操作系統面試題準備

面試 閲讀(2.75W)

就只准備了進程線程之類的,再深了一時半會也搞不定了。

操作系統面試題準備

1.進程

現在操作系統的特點:保證安全前提下,程序併發執行,以及系統所擁有的資源被共享和用户隨機使用系統。

進程是一個程序對某個數據集的執行過程,是分配資源的基本單位。

進程的靜態描述有:進程由三部分組成:程序,數據集合和進程控制塊(pCB)。

程序表示要完成的功能,數據集合表示程序運行時的數據部分和工作區。這二者是進程的物質基礎。

如果一個程序是多進程同時共享執行,則為不可修改的部分,表現為純碼的形式,數據集合為為一個進程獨用,為可以修改部分。

pCB進程控制塊,表示了進程的描述信息、控制信息和資源信息,是進程動態特性的集中反應。是系統感知進程的唯一實體,一個進程的pCB全部或者部分常駐內存。

pCB包含的控制信息中有進程的當前狀態。

進程的的狀態只有五種狀態:初始態,就緒態,執行態,等待狀態和終止狀態。

運行:進程已經分配到處理機,程序正由處理機執行。

等待:進程因為等待某一事件而暫時不能運行的狀態。

就緒:進程已具備執行條件,但是因為處理機已由其他進程佔用,所以暫時不能執行而等待分配處理機。

互斥和同步

互斥:一組併發進程中的一個或者多個程序段,因共享某一公有資源而導致它們必須以一個不允許交叉執行的單位執行。不允許兩個及以上的共享該資源的併發進程同時進入臨界區。

臨界區:不允許多個併發進程交叉執行的一段程序稱為臨界區。

1、臨界區的鎖操作方法:給每個臨界區設置一把鎖,有兩個狀態,打開或者關閉。步驟如下:關鎖操作,如果鎖開着就關閉,如果鎖關閉則等待打開;執行臨界區程序;開鎖操作,將鎖打開,退出臨界區。某個進程進入臨界區會檢測鎖是否打開,如果關閉則等待打開。

上鎖實現互斥,缺點:影響系統可靠性和效率,比如多併發,每個進程都要測試臨界區鎖狀態,開銷很大。存在cpu浪費和不公平現象。

2、“信號量”

信號量,sem為與臨界區內所使用的公用資源有關的信號量。

p表示sem-1,V則sem+1,多進程併發時,和上鎖不一樣,如果無法使用臨界區,不是再次檢測,而是進入等待隊列。sem>=0,表示可供併發進程使用的資源實體數;sem<0,等待使用臨界區的進程數。

p:(1)sem=sem-1(2)sem>=0,p返回,進程繼續執行(3)sem<0,進程被阻塞後與該信號相對應的隊列中。

V:(1)sem=sem+1(2)sem>0,V停止執行,進程返回調用處,繼續執行(3)sem<=0,從該信號的隊列中喚醒一等待進程,然後再返回原進程繼續執行或轉進程調度。

pV操作對於每一個進程來説,都只能進行一次,而且必須成對使用。在pV原語執行期間不允許有中斷的發生。

pV實現互斥:(1)sem初始值為1(2)進程p1進入臨界區,執行p操作,sem=0,進程進入臨界區執行(3)進程p2進入臨界區,執行p操作,sem=-1,p2被阻塞,進入信號對應等待隊列(4)p1執行V操縱,sem=0,喚醒p2進入就緒隊列,進行調度,進入臨界區(5)p2執行V操作,sem=1,恢復初始狀態。

同步:把異步環境下的一組併發進程,因直接制約而互相發送消息而進行互相合作、互相等待,使得各進程按一定的速度執行的過程稱為進程間的同步。

3.進程,線程,作業,程序。

作業:是用户需要計算機完成的`某項任務,而要求計算機所作工作的集合。

進程:是一個程序對某個數據集的執行過程,是分配資源的基本單位。

程序:描述計算機所要完成的獨立功能,並在時間上嚴格得按照前後次序相機地進行計算機操作序列集合,是一個靜態的概念。

線程:是在進程內調度和佔有處理機的基本單位。由於線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間併發執行的程度。

進程和程序:

進程是程序的一次運行活動,是動態的,程序是靜態指令;

一個進程可以執行一個或者多個程序,同一程序也可由多個進程執行;

程序作為資源長期保留,進程則是執行過程,是暫時的。

進程和線程:

進程是資源管理的基本單位;線程是處理機調度的基本單位。

以進程為單位進行處理機切換和調度,切換時間長,資源利用率低;線程為單位,不發生資源變化,切換實踐短,效率高。

進程和作業:

4.哲學家就餐:

有五個哲學家圍坐在一圓桌旁,桌中央有一盤通心粉,每人面前有一隻空盤子,每兩人之間放一隻筷子每個哲學家的行為是思考,感到飢餓,然後吃通心粉.為了吃通心粉,每個哲學家必須拿到兩隻筷子,並且每個人只能直接從自己的左邊或右邊去取筷子,任一哲學家在自己未拿到兩支筷子吃飯前,絕不放下手中的筷子。

(1)保證不會出現兩個鄰座同時要求吃飯

思路:鄰座使用筷子時的進程互斥,使用信號量。設定五個信號量,初始為1,表示對應編號的筷子,有人使用,信號量執行p操作,鄰座需要使用筷子時,對兩側的筷子均執行p操作,進入等待隊列。吃完後,執行V操作,鄰座進入就緒狀態,可以開始就餐。

會出現問題,就是每人都拿一個筷子,誰也吃不上的死鎖。

(2)既沒有兩鄰座同時吃飯又沒人餓死

思路:奇數號的哲學家先取右手的筷子,偶數號的先取左手的。然後還是使用信號量實現互斥。

5.死鎖

若干進程競爭使用資源,如果每個進程都佔有了一定資源,又申請使用已被另一進程佔用且不能搶佔的資源,則所有的進程將紛紛進入等待狀態,不能繼續運行。這種情況叫做死鎖。

產生死鎖的原因主要是:(1) 因為系統資源不足。(2) 進程運行推進的順序不合適。(3)資源分配不當等。根本原因在於系統提供的資源數小於併發進程所要求的該類資源數。

產生死鎖的四個必要條件:(1) 互斥條件:一個資源每次只能被一個進程使用。(2)部分分配:進程每次申請它所需要的一部分資源,在等待新資源的同時,繼續佔用已分配到的資源。(3)不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。(4)環路條件:存在進程循環鏈,鏈中每個進程已獲得的資源同時被下一個進程所請求。

解決死鎖:

預防:採用策略,是的四個必要條件在系統執行的任何時間均不滿足。

避免:動態分配資源,避免死鎖。

恢復:檢測死鎖的位置和原因,通過外力破壞死鎖發生的必要條件。