天天看點

一道面試題:作業系統常見面試題總結

from:qitian0008(http://blog.csdn.net/qitian0008/article/details/7887168)

1什麼是程序process和線程thread有何差別

程序是具有一定獨立功能的程式關于某個資料集合上的一次運作活動程序是系統進行資源配置設定和排程的一個獨立機關。線程是程序的一個實體是cpu排程和分派的基本機關它是比程序更小的能獨立運作的基本機關。線程自己基本上不擁有系統資源隻擁有一點在運作中必不可少的資源如程式計數器一組寄存器和棧但是它可與同屬一個程序的其他的線程共享程序所擁有的全部資源。一個線程可以建立和撤銷另一個線程同一個程序中的多個線程之間可以并發執行。

程序與應用程式的差別在于應用程式作為一個靜态檔案存儲在計算機系統的硬碟等存儲空間中而程序則是處于動态條件下由作業系統維護的系統資源管理實體。

2windows下的記憶體是如何管理的

windows提供了3種方法來進行記憶體管理虛拟記憶體最适合用來管理大型對象或者結構數組記憶體映射檔案最适合用來管理大型資料流通常來自檔案以及在單個計算機上運作多個程序之間共享資料記憶體堆棧最适合用來管理大量的小對象。

windows操縱記憶體可以分兩個層面實體記憶體和虛拟記憶體。

其中實體記憶體由系統管理不允許應用程式直接通路應用程式可見的隻有一個2g位址空間而記憶體配置設定是通過堆進行的。對于每個程序都有自己的預設堆當一個堆建立後就通過虛拟記憶體操作保留了相應大小的位址塊不占有實際的記憶體系統消耗很小。當在堆上配置設定一塊記憶體時系統在堆的位址表裡找到一個空閑塊如果找不到且堆建立屬性是可擴充的則擴充堆大小為這個空閑塊所包含的所有記憶體頁送出實體對象在實體記憶體上或硬碟的交換檔案上這時就可以通路這部分位址。送出時系統将對所有程序的記憶體統一調配如果實體記憶體不夠系統試圖把一部分程序暫時不通路的頁放入交換檔案以騰出部分實體記憶體。釋放記憶體時隻在堆中将所在的頁解除送出相應的實體對象被解除繼續保留位址空間。

如果要知道某個位址是否被占用/可不可以通路隻要查詢此位址的虛拟記憶體狀态即可。如果是送出則可以通路。如果僅僅保留或沒保留則産生一個軟體異常。此外有些記憶體頁可以設定各種屬性。如果是隻讀向記憶體寫也會産生軟體異常。

3windows消息排程機制是?

a.指令隊列b.指令堆棧c.消息隊列d.消息堆棧

答案c

處理消息隊列的順序。首先windows絕對不是按隊列先進先出的次序來處理的而是有一定優先級的。優先級通過消息隊列的狀态标志來實作的。首先最高優先級的是别的線程發過來的消息通過sendmessage其次處理登記消息隊列消息再次處理qs_quit标志處理虛拟輸入隊列處理wm_paint最後是wm_timer。

4描述實時系統的基本特性

在特定時間内完成特定的任務實時性與可靠性。

所謂“實時作業系統”實際上是指作業系統工作時其各種資源可以根據需要随時進行動态配置設定。由于各種資源可以進行動态配置設定是以其處理事務的能力較強、速度較快。

5中斷和輪詢的特點

對i/o裝置的程式輪詢的方式是早期的計算機系統對i/o裝置的一種管理方式。它定時對各種裝置輪流詢問一遍有無處理要求。輪流詢問之後有要求的則加以處理。在處理i/o裝置的要求之後處理機傳回繼續工作。盡管輪詢需要時間但輪詢要比i/o裝置的速度要快得多是以一般不會發生不能及時處理的問題。當然再快的處理機能處理的輸入輸出裝置的數量也是有一定限度的。而且程式輪詢畢竟占據了cpu相當一部分處理時間是以程式輪詢是一種效率較低的方式在現代計算機系統中已很少應用。

程式中斷通常簡稱中斷是指cpu在正常運作程式的過程中由于預先安排或發生了各種随機的内部或外部事件使cpu中斷正在運作的程式而轉到為響應的服務程式去處理。

輪詢——效率低等待時間很長cpu使用率不高。

中斷——容易遺漏一些問題cpu使用率高。

6什麼是臨界區如何解決沖突

每個程序中通路臨界資源的那段程式稱為臨界區每次隻準許一個程序進入臨界區進入後不允許其他程序進入。

(1) 如果有若幹程序要求進入空閑的臨界區一次僅允許一個程序進入

(2) 任何時候處于臨界區内的程序不可多于一個。如已有程序進入自己的臨界區則其它所有試圖進入臨界區的程序必須等待

(3) 進入臨界區的程序要在有限時間内退出以便其它程序能及時進入自己的臨界區

(4) 如果程序不能進入自己的臨界區則應讓出cpu避免程序出現“忙等”現象。

7說說分段和分頁

頁是資訊的實體機關分頁是為實作離散配置設定方式以消減記憶體的外零頭提高記憶體的使用率或者說分頁僅僅是由于系統管理的需要而不是使用者的需要。

段是資訊的邏輯機關它含有一組其意義相對完整的資訊。分段的目的是為了能更好的滿足使用者的需要。

頁的大小固定且由系統确定把邏輯位址劃分為頁号和頁内位址兩部分是由機器硬體實作的因而一個系統隻能有一種大小的頁面。段的長度卻不固定決定于使用者所編寫的程式通常由編輯程式在對源程式進行編輯時根據資訊的性質來劃分。

分頁的作業位址空間是一維的即單一的線性空間程式員隻須利用一個記憶符即可表示一位址。分段的作業位址空間是二維的程式員在辨別一個位址時既需給出段名又需給出段内位址。

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

程序間同步的主要方法有原子操作、信号量機制、自旋鎖、管程、會合、分布式系統等。

9linux中常用到的指令

顯示檔案目錄指令ls        如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中

10linux檔案屬性有哪些共十位

-rw-r--r--那個是權限符号總共是- --- --- ---這幾個位。

第一個短橫處是檔案類型識别符-表示普通檔案c表示字元裝置characterb表示塊裝置blockd表示目錄directoryl表示連結檔案link後面第一個三個連續的短橫是使用者權限位user第二個三個連續短橫是組權限位group第三個三個連續短橫是其他權限位other。每個權限位有三個權限r讀權限w寫權限x執行權限。如果每個權限位都有權限存在那麼滿權限的情況就是-rwxrwxrwx權限為空的情況就是-

--- --- ---。

權限的設定可以用chmod指令其格式位chmod ugoa+/-/=rwx filename/directory。例如

一個檔案aaa具有完全空的權限- --- --- ---。

chmod u+rw aaa給使用者權限位設定讀寫權限其權限表示為- rw- --- ---

chmod g+r aaa(給組設定權限為可讀其權限表示為- --- r-- ---

chmod ugo+rw aaa給使用者組其它使用者或組設定權限為讀寫權限表示為- rw- rw- rw-)

如果aaa具有滿權限- rwx rwx rwx。

chmod u-x aaa去掉使用者可執行權限權限表示為- rw- rwx rwx

如果要給aaa賦予制定權限- rwx r-x r-x指令為

chmod u=rwx,go=rx aaa

11makefile檔案的作用是什麼

一個工程中的源檔案不計其數其按類型、功能、子產品分别放在若幹個目錄中。makefile定義了一系列的規則來指定哪些檔案需要先編譯哪些檔案需要後編譯哪些檔案需要重新編譯甚至于進行更複雜的功能操作。因為makefile就像一個shell腳本一樣其中也可以執行作業系統的指令。makefile帶來的好處就是——“自動化編譯”。一旦寫好隻需要一個make指令整個工程完全自動編譯極大地提高了軟體開發的效率。make是一個指令工具是一個解釋makefile中指令的指令工具。一般來說大多數的ide都有這個指令比如delphi的makevisual

c++的nmakelinux下gnu的make。可見makefile都成為了一種在工程方面的編譯方法。

12簡術osi的實體層layer1鍊路層layer2網絡層layer3的任務。

網絡層通過路由選擇算法為封包或分組通過通信子網選擇最适當的路徑。

鍊路層通過各種控制協定将有差錯的實體信道變為無差錯的、能可靠傳輸資料幀的資料鍊路。

實體層利用傳輸媒體為資料鍊路層提供實體連接配接實作比特流的透明傳輸。

13什麼是中斷中斷時cpu做什麼工作

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

14你知道作業系統的内容分為幾塊嗎什麼叫做虛拟記憶體他和主存的關系如何記憶體管理屬于作業系統的内容嗎

作業系統的主要組成部分程序和線程的管理存儲管理裝置管理檔案管理。虛拟記憶體是一些系統頁檔案存放在磁盤上每個系統頁檔案大小為4k實體記憶體也被分頁每個頁大小也為4k這樣虛拟頁檔案和實體記憶體頁就可以對應實際上虛拟記憶體就是用于實體記憶體的臨時存放的磁盤空間。頁檔案就是記憶體頁實體記憶體中每頁叫實體頁磁盤上的頁檔案叫虛拟頁實體頁+虛拟頁就是系統所有使用的頁檔案的總和。屬于。

15線程是否具有相同的堆棧dll是否有獨立的堆棧

每個線程有自己的堆棧。

dll是否有獨立的堆棧這個問題不好回答或者說這個問題本身是否有問題。因為dll中的代碼是被某些線程所執行隻有線程擁有堆棧。如果dll中的代碼是exe中的線程所調用那麼這個時候是不是說這個dll沒有獨立的堆棧如果dll中的代碼是由dll自己建立的線程所執行那麼是不是說dll有獨立的堆棧

以上講的是堆棧如果對于堆來說每個dll有自己的堆是以如果是從dll中動态配置設定的記憶體最好是從dll中删除如果你從dll中配置設定記憶體然後在exe中或者另外一個dll中删除很有可能導緻程式崩潰。

16什麼是緩沖區溢出有什麼危害其原因是什麼

緩沖區溢出是指當計算機向緩沖區内填充資料時超過了緩沖區本身的容量溢出的資料覆寫在合法資料上。

危害在目前網絡與分布式系統安全中被廣泛利用的50%以上都是緩沖區溢出其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區溢出中最為危險的是堆棧溢出因為入侵者可以利用堆棧溢出在函數傳回時改變傳回程式的位址讓其跳轉到任意位址帶來的危害一種是程式崩潰導緻拒絕服務另外一種就是跳轉并且執行一段惡意代碼比如得到shell然後為所欲為。通過往程式的緩沖區寫超出其長度的内容造成緩沖區的溢出進而破壞程式的堆棧使程式轉而執行其它指令以達到攻擊的目的。

造成緩沖區溢出的主原因是程式中沒有仔細檢查使用者輸入的參數。

17什麼是死鎖其條件是什麼怎樣避免死鎖

死鎖的概念在兩個或多個并發程序中如果每個程序持有某種資源而又都等待别的程序釋放它或它們現在保持着的資源在未改變這種狀态之前都不能向前推進稱這一組程序産生了死鎖。通俗地講就是兩個或多個程序被無限期地阻塞、互相等待的一種狀态。

死鎖産生的原因主要是 系統資源不足‚ 程序推進順序非法。

産生死鎖的必要條件

(1)互斥mutualexclusion一個資源每次隻能被一個程序使用

(2)不可搶占nopreemption程序已獲得的資源在未使用完之前不能強行剝奪

(3)占有并等待hold andwait一個程序因請求資源而阻塞時對已獲得的資源保持不放

(4)環形等待circularwait若幹程序之間形成一種首尾相接的循環等待資源關系。

這四個條件是死鎖的必要條件隻要系統發生死鎖這些條件必然成立而隻要上述條件之一不滿足就不會發生死鎖。

死鎖的解除與預防了解了死鎖的原因尤其是産生死鎖的四個必要條件就可以最大可能地避免、預防和解除死鎖。是以在系統設計、程序排程等方面注意如何不讓這四個必要條件成立如何确定資源的合理配置設定算法避免程序永久占據系統資源。此外也要防止程序在處于等待狀态的情況下占用資源。是以對資源的配置設定要給予合理的規劃。

死鎖的處理政策鴕鳥政策、預防政策、避免政策、檢測與恢複政策。

繼續閱讀