閱讀屋>面試> 作業系統面試題及參考答案

作業系統面試題及參考答案

作業系統面試題及參考答案

作業系統常見面試題(答案僅供參考)

1.CPU在上電後,進入作業系統的main()之前必須做什麼?

加電後,會觸發CPU的reset訊號,導致CPU復位,然後CPU會跳到(arm下0x00000000,x86下0xfffffff0)執行指令.主 要是做CPU初始化,確定CPU的工作模式,mmu初始化。建立頁表段表,初始化中孤單控制器和中斷向量表,初始化輸入和輸出,初始化 nandflash,把OS的TEXT區載入到sdram,然後跳轉到sdram的main()

2.什麼是中斷?中斷時CPU做什麼工作?

中斷是指在計算機執行期間,系統內發生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執行的程式而轉去執行相應的事件處理程式。待處理完畢後又返回原來被中斷處繼續執行或排程新的程序執行的過程。

3.簡術ISO OSI的物理層Layer1,鏈路層Layer2,網路層Layer3的任務。

網路層:資料傳送的目的地定址,再選擇出傳送資料的最佳路線;

鏈路層:負責網路上資料封包如何傳送的方式;

物理層:在裝置與傳輸媒介之間建立及終止連線。參與通訊過程使得資源可以在共享的多使用者中有效分配,對訊號進行調製或轉換使得使用者裝置中的數字訊號定義能與通道上實際傳送的數字訊號相匹配

4.makefile檔案的作用是什麼?

一個工程中的原始檔不計數,其按型別、功能、模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後 編譯,哪些檔案需要重新編譯,甚至於進行更復雜的功能操作,因為 makefile就像一個Shell指令碼一樣,其中也可以執行作業系統的命令。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個 make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大 多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。

5.UNIX顯示資料夾中檔名的命令是什麼?能使檔案內容顯示在螢幕的命令是什麼?

ls cat

type tail

6.Linux檔案屬性有哪些?(共十位)

-rw-r--r—1

第一個屬性代表這個檔案是【目錄、檔案或連結檔案】,當為[ d ]則是目錄,為[ - ]則是檔案,若是[ l ]則表示為連結檔(link file);

若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置;

若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠。

接下來的屬性中,三個為一組,且均為【rwx】三個引數的組合,其中[r]代可讀、

[w]代表可寫、[x]代表可執行:

第一組為【擁有人的許可權】,

第二組為【同群組的`許可權】;

第三組為【其它非本群組的許可權】。

7.Linux中常用到的命令

顯示檔案目錄命令ls

改變當前目錄命令cd 如cd / /home

建立子目錄mkdir mkdir xiong

刪除子目錄命令rmdir 如 rmdir /mnt/cdrom

刪除檔案命令RM 如 rm /ucdos.bat

檔案複製命令cp 如 cp /ucdos/* /fox

獲取幫助資訊命令man 如 man ls

顯示檔案的內容less 如 less mwm.lx

重定向與管道type 如type readme>>direct,將檔案readme的內容追加到文direct中

8.程序通訊有哪些方式?

管道通訊、訊息通訊、記憶體共享

9.說說分段和分頁。

頁是資訊的物理單位,分頁是為實現離散分配方式,以消減記憶體的外零頭,提高記憶體的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是使用者的需要。

段是資訊的邏輯單位,它含有一組其意義相對完整的資訊。分段的目的是為了能更好的滿足使用者的需要。頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內 地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。 段的長度卻不固定,決定於使用者所編寫的程式,通常由編輯程式在對源程式進行編輯時,根據資訊的性質來劃分。

分頁的作業地址空間是維一的,即單一的線性空間,程式設計師只須利用一個記憶符,即可表示一地址。分段的作業地址空間是二維的,程式設計師在標識一個地址時,既需給出段名,又需給出段內地址

10.什麼是程序和執行緒?有何區別?

執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.

執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行.

11.Windows下的記憶體是如何管理的?

Window操縱記憶體可以分兩個層面:物理記憶體和虛擬記憶體。

其中物理記憶體由系統管理,不允許應用程式直接訪問,應用程式可見的只有一 個2G地址空間,而記憶體分配是透過堆進行的,對於每個程序都有自己的預設堆,當一個堆建立後,就透過虛擬記憶體操作保留了相應大小的地址塊(不佔有實際的內 存,系統消耗很小),當在堆上分配一塊記憶體時,系統在堆的地址表裡找到一個空閒塊(如果找不到,且堆建立屬性是可擴充的,則擴充堆大小)為這個空閒塊所包 含的所有記憶體頁提交物理物件(物理記憶體上或硬碟上的交換檔案上)。這時可以就訪問這部分地址了。提交時,系統將對所有程序的記憶體統一調配,如果物理記憶體不 夠,系統試圖把一部分程序暫時不訪問的頁放入交換檔案,以騰出部分物理記憶體。釋放記憶體時,只在堆中將所在的頁解除提交(相應的物理物件被解除),繼續保留 地址空間。

如果要知道某個地址是否被佔用/可不可以訪問,只要查詢此地址的虛擬記憶體狀VirtualQuery),如果是提交,則可以訪問。如果僅僅保留,或沒保留,則產生一 個 軟體異常。此外有些記憶體頁可以設定各種屬性。如果是隻讀,向內寫也會產生軟體異常

12.作業系統的內容分為幾塊?什麼叫做虛擬記憶體?優點管理屬於作業系統的內容嗎?

13.程序是一個比較重要的概念,那麼程序有哪幾種狀態?

基本狀態有3種,即ready(就緒),running(執行),wait(等待).

14.說出你所知道的保持程序同步的方法?

程序間同步的主要方法有記憶體屏障,互斥鎖,訊號量和鎖,管程,訊息,管道

15.OS中如何實現物理地址到邏輯志址的轉換?

16.解釋一下分頁式管理。

使用者程式的地址空間被劃分成若干固定大小的區域,稱為“頁”,相應地,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現了離散分配.

17.什麼是死鎖,其條件是什麼?怎麼避免死鎖?

死鎖是指,在兩個或多個併發程序中,如果每個程序持有某種資源而又都等待別的程序釋放它們現在保持著的資源,否則就不能向前推進.此時,每個程序都佔用了 一定的資源但是又不能向前推進,稱這一組程序產生了死鎖. 通俗的講,就是兩個或多個程序無止境的等候著永遠不會成立的條件的一種系統狀態. 其條件是為

1.互斥:存在這樣一種資源,它在某個時刻只能被分配給一個執行緒使用;

2.持有:當請求的資源已被佔用從而導致執行緒阻塞時,資源佔用者不但無需釋放該資源,而且還可以繼續請求更多資源;

3.不可剝奪:執行緒獲得到的互斥資源不可被強行剝奪,換句話說,只有資源佔用者自己才能釋放資源;

4.環形等待:若干執行緒以不同的次序獲取互斥資源,從而在由多個執行緒組成的環形鏈中,每個執行緒都在等待下一個執行緒釋放它持有的資源。

避免死鎖:按順序訪問,事務最小化

18.什麼是緩衝區溢位?有什麼危害?其原因是什麼?

緩衝區溢位是指當計算機向緩衝區內填充資料位數時超過了緩衝區本身的容量溢位的資料覆蓋在合法資料上,

危害:在當前網路與分散式系統安全中,被廣泛利用的50%以上都是緩衝區溢位,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩衝區溢位 中,最為危險的是堆疊溢位,因為入侵者可以利用堆疊溢位,在函式返回時改變返回程式的地址,讓其跳轉到任意地址,帶來的危害一種是程式崩潰導致拒絕服務, 另外一種就是跳轉並且執行一段惡意程式碼,比如得到shell,然後為所欲為。

透過往程式的緩衝區寫超出其長度的內容,造成緩衝區的溢位,從而破壞程式的堆疊,使程式轉而執行其它指令,以達到攻擊的目的。造成緩衝區溢位的原因是程式中沒有仔細檢查使用者輸入的引數

19.什麼是臨界區?如何解決衝突?

每個程序中訪問臨界資源的那段程式稱為臨界區,每次只准許一個程序進入臨界區,進入後不允許其他程序進入。

① 如果有若干程序要求進入空閒的臨界區,一次僅允許一個程序進入。

② 任何時候,處於臨界區內的程序不可多於一個。如已有程序進入自己的臨界區,則其它所有試圖進入臨界區的程序必須等待。

③ 進入臨界區的程序要在有限時間內退出,以便其它程序能及時進入自己的臨界區。

④ 如果程序不能進入自己的臨界區,則應讓出CPU,避免程序出現“忙等”現象。

20.解釋一下P操作與V操作。

P就是請求資源,V就是釋放資源

21.中斷和輪詢的特點。


【作業系統面試題及參考答案】相關文章: