- 相關推薦
操作系統面試題
不放過每一個知識點,尤其對容易混淆的東西要下更大工夫搞清楚,基礎要牢固,百分網小編整理了一些操作系統面試題給大家,希望對你有所幫助!

1. 進程和線程的區別。
進程(Process):是操作系統分配資源的單位
線程(Thread):是進程的一個實體,是CPU調度和分派的基本單位
進程在執行過程中擁有獨立的內存單元,而多個線程共享內存。
同一進程內的線程間切換比進程間的切換要快,尤其是用戶級線程間的切換。
2. 死鎖的必要條件,怎么處理死鎖。
死鎖的必要條件:
互斥條件。某個資源在一段時間內只能由一個進程占有,不能同時被兩個或兩個以上的進程占有。
不可搶占條件。進程所獲得的資源在未使用完畢之前,資源申請者不能強行地從資源占有者手中奪取資源,而只能由該資源的占有者進程自行釋放。
占有且申請條件。進程至少已經占有一個資源,但又申請新的資源;由于該資源已被另外進程占有,此時該進程阻塞;但是,它在等待新資源之時,仍繼續占用已占有的資源。
循環等待條件。存在一個進程等待序列{P1,P2,...,Pn},其中P1等待P2所占有的某一資源,P2等待P3所占有的某一源,......,而Pn等待P1所占有的的某一資源,形成一個進程循環等待環。
解決死鎖的方法:
死鎖的預防:基本思想是要求進程申請資源時遵循某種協議,從而打破產生死鎖的四個必要條件中的一個或幾個,保證系統不會進入死鎖狀態
死鎖的避免:不限制進程有關申請資源的命令,而是對進程所發出的每一個申請資源命令加以動態地檢查(是否有發生死鎖的可能性),并根據檢查結果決定是否進行資源分配。這種方法的關鍵是確定資源分配的安全性。(安全序列、銀行家算法、 雖然存在安全序列時一定不會有死鎖發生,但是系統進入不安全狀態(四個死鎖的必要條件同時發生)也未必會產生死鎖。當然,產生死鎖后,系統一定處于不安全狀態)。
死鎖的檢測與恢復
3. 內存管理方式:段存儲,頁存儲,段頁存儲。
頁存儲:用戶程序的地址空間被劃分成若干固定大小的區域,稱為“頁”,相應地,內存空間分成若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。
段存儲:將用戶程序地址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯信息。存儲分配時,以段為單位,段與段在內存中可以不相鄰接,也實現了離散分配。
段頁存儲:分段式和分頁式結合的存儲組織方法,這樣可充分利用分段管理和分頁管理的優點。(1) 用分段方法來分配和管理虛擬存儲器。程序的地址空間按邏輯單位分成基本獨立的段,而每一段有自己的段名,再把每段分成固定大小的若干頁。(2) 用分頁方法來分配和管理實存。即把整個主存分成與上述頁大小相等的存儲塊,可裝入作業的任何一頁。程序對內存的調入或調出是按頁進行的,但它又可按段實現共享和保護。
4. 進程的幾種狀態。
5. IPC幾種通信方式。
管道(pipe):管道包括三種:1)普通管道PIPE, 通常有種限制,一是半雙工,只能單向傳輸;二是只能在父子進程間使用. 2)流管道s_pipe: 去除了第一種限制,可以雙向傳輸. 3)命名管道:name_pipe, 去除了第二種限制,可以在許多并不相關的進程之間進行通訊.
信號量(semophore):信號量是一種計數器,可以控制進程間多個線程或者多個進程對資源的同步訪問,它常實現為一種鎖機制。實質上,信號量是一個被保護的變量,并且只能通過初始化和兩個標準的原子操作(P/V)來訪問。(P,V操作也常稱為wait(s),signal(s))
信號(Signal):信號是Unix系統中使用的最古老的進程間通信的方法之一。操作系統通過信號來通知某一進程發生了某一種預定好的事件;接收到信號的進程可以選擇不同的方式處理該信號,一是可以采用默認處理機制-進程中斷或退出,一是忽略該信號,還有就是自定義該信號的處理函數,執行相應的動作。內核為進程生產信號,來響應不同的事件,這些事件就是信號源。信號源可以是:異常,其他進程,終端的中斷(Ctrl-C,Ctrl+\等),作業的控制(前臺,后臺進程的管理等),分配額問題(cpu超時或文件過大等),內核通知(例如I/O就緒等),報警(計時器)。
消息隊列(Message Queue):消息隊列就是消息的一個鏈表,它允許一個或者多個進程向它寫消息,一個或多個進程向它讀消息。Linux維護了一個消息隊列向量表:msgque,來表示系統中所有的消息隊列。消息隊列克服了信號傳遞信息少,管道只能支持無格式字節流和緩沖區受限的缺點。
共享內存(shared memory):共享內存映射為一段可以被其他進程訪問的內存。該共享內存由一個進程所創建,然后其他進程可以掛載到該共享內存中。共享內存是最快的IPC機制,但由于linux本身不能實現對其同步控制,需要用戶程序進行并發訪問控制,因此它一般結合了其他通信機制實現了進程間的通信,例如信號量。
套接字(socket):socket也是一種進程間的通信機制,不過它與其他通信方式主要的區別是:它可以實現不同主機間的進程通信。一個套接口可以看做是進程間通信的端點(endpoint),每個套接口的名字是唯一的;其他進程可以訪問,連接和進行數據通信。
6. 什么是虛擬內存。
虛擬內存:邏輯上不分內外存,實現了邏輯上的“擴存”。
虛擬存儲器具有請求調入、 置換功能,當所需要的頁面不再內存中時,就要執行頁面的請求調入算法。
7. 虛擬地址、邏輯地址、線性地址、物理地址的區別。
邏輯地址(虛擬地址):由程序產生的與段相關的偏移地址部分
線性地址:段中的偏移地址,加上相應段的基地址就生成了一個線性地址。如果啟用了分頁機制,那么線性地址可以再經變換以產生一個物理地址。若沒有啟用分頁機制,那么線性地址直接就是物理地址。
物理地址:在CPU外部地址總線上的尋址物理內存的地址信號,是地址變換的最終結果地址
【操作系統面試題】相關文章:
國產操作系統典范:deepin操作系統08-21
操作系統的種類07-07
LINUX操作系統09-19
LINUX操作系統01-22
操作系統安裝09-12
操作系統原理09-10
操作系統大全10-02
國產的操作系統10-27
32位操作系統和64位操作系統的區別09-27