程式設計師面試 作業系統常見面試題

2021-10-14 01:25:11 字數 2507 閱讀 1536

在程式設計師的面試過程中,少不了要問關於作業系統的問題。這裡,我整理了面試過程中常見的一些問題和回答。

ps. 這些回答不一定準確,歡迎各位前來糾正

面試官最喜歡問的乙個經典問題,就是:

?說一說程序和執行緒之間的區別吧。

?回答:

從資源的角度說:

從包含關係的角度說:

追問1?執行緒之間,除了可以共享位址空間外,還共享那些程序資源?

這個追問,就是看你是否真的理解上面的回答了。我們可以嘗試的思考,到底執行緒之間共享了哪些程序資源,共享資源意味著什麼?共享資源這種機制是如何實現的?這個問題,其實我們可以換個角度回答,即:有哪些資源是執行緒私有的呢?

?回答:

大神已經幫我們回答好了:執行緒間到底共享了哪些程序資源?

追問2? 知道協程嗎?協程和執行緒的區別是什麼?

?回答:

協程,英文coroutines,是一種比執行緒更加輕量級的存在。和執行緒之間的區別和聯絡主要是:

這也解釋了,為什麼協程的切換比執行緒的切換要效率更高,即:

執行緒的狀態切換是由作業系統核心來執行的,要經歷使用者空間--系統空間--使用者空間,而協程的切換是在使用者態即可切換完成。

這也是乙個比較經典的問題了

? ​請你說說程序間有哪些通訊方式吧?

?回答:

我們先看看大神的回答:一文講懂程序間通訊的幾種方式

這裡,需要插一嘴。我們面試的優勢是什麼呢?對於這個問題,相信我們大家只需要背答案,都基本能回答這個問題了。但是,怎麼突出自己比別人更好呢?對這個普通的問題,我們可以回答的不普通。

比如,我們在回答這個問題的時候,可以說說這些通訊方式的優缺點、為什麼會有這樣的技術、舉例說明其應用場景等等。

追問1? ​程序有哪些排程演算法

?回答:

具體可以參考大神回答:我和面試官之間關於作業系統的一場對弈!寫了很久,看完你就可以盤面試官了

追問2? ​執行緒間的同步方式是什麼

?回答:

執行緒同步是兩個或多個共享關鍵資源的執行緒的併發執行。應該同步執行緒以避免關鍵的資源使用衝突。作業系統一般有下面三種執行緒同步的方式:

互斥量(mutex)訊號量(semphares)事件(event)? ​並行和併發的區別

?回答:

併發:是乙個處理器,可以邏輯上同時處理多個任務,但是同一時刻只能處理乙個任務。即,在處理多條指令任務時,(遇到i/o阻塞時,)可以進行快速的切換,這樣在時間上給人假象時同時執行的。

並行:有多個處理器,同一時刻可以,時間上同時處理多個任務,物理上也是同時發生的。

? ​什麼是死鎖,產生死鎖的原因有哪些?避免死鎖的方式有哪些?

?什麼是死鎖:

所謂死鎖,是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法再向前推進。

舉個例子:程序a現在有資源1,需要拿到資源2才能執行下去;程序b現在有資源2,但是要拿到資源1才能繼續執行下去。程序a和b都不放棄自己的資源,那麼這樣就會造成死鎖。

?產生死鎖的必要條件:

互斥條件:乙個資源每次只能被乙個程序使用,即在一段時間內某 資源僅為乙個程序所占有。此時若有其他程序請求該資源,則請求程序只能等待。

請求與保持條件:程序已經保持了至少乙個資源,但又提出了新的資源請求,而該資源 已被其他程序占有,此時請求程序被阻塞,但對自己已獲得的資源保持不放。

不可剝奪條件:程序所獲得的資源在未使用完畢之前,不能被其他程序強行奪走,即只能 由獲得該資源的程序自己來釋放(只能是主動釋放)。

迴圈等待條件: 若干程序間形成首尾相接迴圈等待資源的關係

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

?避免死鎖的方式:

死鎖避免

死鎖預防

死鎖檢測

? 說一說虛擬記憶體吧

?回答:

虛擬記憶體的基本思想是,每個程式都有自己的位址空間,這個位址空間被劃分為多個稱為頁面(page)的塊。每一頁都是連續的位址範圍。這些頁被對映到物理記憶體,但並不是所有的頁都必須在記憶體中才能執行程式。當程式引用到一部分在物理記憶體中的位址空間時,硬體會立刻執行必要的對映。當程式引用到一部分不在物理記憶體中的位址空間時,由作業系統負責將缺失的部分裝入物理記憶體並重新執行失敗的指令。

追問1? 有哪些頁面置換方法?說一說lru演算法吧

?回答:當發生缺頁中斷時,如果當前記憶體中並沒有空閒的頁面,作業系統就必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。用來選擇淘汰哪一頁的規則叫做頁面置換演算法,我們可以把頁面置換演算法看成是淘汰頁面的規則。

?lru演算法的實現

lru 演算法是非常重要的,在面試環節中,面試官很大概率會考察 lru 和 lfu 演算法的思想,甚至是要求你實現

作業系統常見面試題

作業系統學習之一 程序及其狀態和資料描述 作業系統學習記錄之二 程序的管理及切換 作業系統學習記錄之三 多執行緒技術 作業系統學習記錄之四 核心級執行緒和使用者級執行緒 作業系統學習記錄之五 多執行緒實現的混合策略 作業系統學習記錄之六 併發程式 作業系統學習記錄之七 臨界區 作業系統學習記錄之八 ...

作業系統常見面試題

未更新完畢 僅用來個人學習 程序 程序是乙個有特定功能的程式在某個資料集合上的一次執行。執行緒 執行緒是系統排程的最小單位,包含在程序之中。聯絡 程序可以有多個執行緒,最少包含乙個執行緒,即主線程。乙個執行緒只能屬於乙個程序。執行緒是程序執行的實體。區別 1 程序是資源分配的最小單位。程序擁有資源,...

常見面試題整理(作業系統)

一 請分別簡單說一說程序和執行緒以及它們的區別。如果你對程序或者執行緒不太熟悉,建議閱讀 程序與執行緒的乙個簡單解釋 二 執行緒同步的方式有哪些?經兩位大大的指正,現已刪除臨界區。感謝 真姬醬 安陽如果你對執行緒同步的方式不太熟悉,建議閱讀 執行緒同步的幾種方式 三 程序的通訊方式有哪些?主要分為 ...