範文齋

位置:首頁 > 職場範文 > 面試

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

面試8.37K

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

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

在上電後,進入操作系統的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的任務。

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

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

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

file文件的作用是什麼?

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

顯示文件夾中文件名的命令是什麼?能使文件內容顯示在屏幕的命令是什麼?

ls cat

type tail

x文件屬性有哪些?(共十位)

-rw-r--r—1

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

若是[ b ]則表示爲裝置文件裏面的可供儲存的接口設備;

若是[ c ]則表示爲裝置文件裏面的串行端口設備,例如鍵盤、鼠標。

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

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

第一組爲【擁有人的權限】,

第二組爲【同羣組的權限】;

第三組爲【其它非本羣組的權限】。

x中常用到的.命令

顯示文件目錄命令ls

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

建立子目錄mkdir mkdir xiong

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

刪除文件命令RM 如 rm /

文件複製命令cp 如 cp /ucdos/* /fox

獲取幫助信息命令man 如 man ls

顯示文件的內容less 如 less

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

8.進程通信有哪些方式?

管道通信、消息通信、內存共享

9.說說分段和分頁。

頁是信息的物理單位,分頁是爲實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。

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

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

10.什麼是進程和線程?有何區別?

線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.

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

ows下的內存是如何管理的?

Window操縱內存可以分兩個層面:物理內存和虛擬內存。

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

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

12.操作系統的內容分爲幾塊?什麼叫做虛擬內存?優點管理屬於操作系統的內容嗎?

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

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

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

進程間同步的主要方法有內存屏障,互斥鎖,信號量和鎖,管程,消息,管道

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

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

用戶程序的地址空間被劃分成若干固定大小的區域,稱爲“頁”,相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21.中斷和輪詢的特點。