JAVA 后台面試之操作系統問題集錦


1.進程和線程以及他們的區別

2.進程間通信的幾種方式

3.線程同步的方式

4.死鎖

5.分頁和分段有什么區別?(內存管理)

6.操作系統中進程調度的策略有哪幾種?

7.頁面置換算法:

8.系統顛簸

9.程序局部性原理

 

1.進程和線程以及他們的區別

*進程是對運行時程序的封裝,是系統進行資源調度和分配的基本單位,實現了操作系統的並發

*線程是進程的子任務,是CPU調度和分派的基本單位,用於保證程序的實時性,實現進程內部的並發

*一個程序至少一個進程,一個進程至少一個線程,線程依賴於進程而存在

*進程擁有獨立的內存單元,而線程共享進程的內存單元

 

2.進程間通信的幾種方式

*管道以及命名管道:管道用於具有父子關系的進程通信,有名管道無論兩個進程間有沒有關系,都可以通信

*信號:用於通知接收進程某個事情已經發生

*消息隊列:消息的鏈接表,克服了上面兩種方式中信號量有限的缺點,對消息隊列具有寫權限的進程可以按照一定的規則向消息隊列中添加消息,對消息隊列具有讀權限的進程可以從消息隊列中讀取信息

*共享內存:進程間最有用的通信方式,需要同步方式,比如互斥鎖和信號量等

*信號量:進程間或同一進程不同線程間同步和互斥的手段

*套接字:應用於網絡中的一般進程間的通信方式

 

3.線程同步的方式

1)互斥量(Synchronized/Lock):互斥對象機制

2)信號量:運行同一時刻同一線程訪問同一資源,但是要控制同一時刻訪問此資源的最大線程數量

3)時間(信號)(Wait/Notify):通過通知操作來保持多線程同步,還可以方便的實現多線程優先級的比較操作

 

4.死鎖

1)死鎖產生的四個必要條件

*互斥

*占用並等待

*非搶占:不能搶占,只能自願釋放

*循環等待

 

2)死鎖的基本處理策略

 

2.1)死鎖預防:打破死鎖四個必要條件中的一個就可以了

*打破互斥條件:允許進程同時訪問某些資源,但是某些資源因為自身屬性問題,不能被同時訪問,所以這種方法實用性不大

*打破占用並等待條件:可以實行資源先分配策略(進程在運行前一次性向系統申請它需要的全部資源,若所需全部資源得不到滿足,則不分配任何資源,此進程暫不運行,只有當系統能滿足當前線程所需全部資源時,才一次性將所需資源全部分配給該進程)或者只允許進程在沒有占用資源時間才允許申請資源(一個進程可以申請一些資源並使用他們,但是在當前進程申請更多資源之前,它必須全部釋放當前所占用的資源,但是這種策略也存在一些缺點:很多情況下,無法預知一個進程所需要的全部資源,因為進程是動態運行的,不可預知,同時會降低資源的利用效率,降低進程的並發性

*打破非搶占條件:允許某個進程在資源得不到滿足時強行從其他進程那里獲取資源,實現起來困難,會降低系統性能

*打破循環等待條件:實行資源有序分配策略,對所有資源排序編號,所有進程對資源的請求必須嚴格按照資源序號遞增的順序提出,即只有占用了小號資源才能占用大號資源,這樣就不產生回環路,預防死鎖

 

2.2)死鎖避免:動態的檢測資源分配狀態,以確保循環等待條件不成立,從而確保系統處於安全狀態

安全狀態:存在安全序列,使得系統處於安全狀態

比如銀行家算法和資源分配圖算法

 

2.3)死鎖解除:進程終止和資源搶占

所謂進程終止是指簡單的終止一個或者多個進程以打破循環等待,包括:終止所有死鎖進程和一次只終止一個進程直到死鎖消失

所謂資源搶占是指從一個或多個死鎖進程那里搶占一個或多個資源

這個時候必須考慮三個問題:

*選擇一個犧牲品

*回滾到安全狀態

*飢餓(在代價因素中加上回滾次數,回滾得越多則越不可能繼續作為犧牲品,避免一個進程總是被回滾)

 

5.分頁和分段有什么區別?(內存管理)

段式儲存管理是一種符合用戶視角的內存分配管理方案,在段式儲存管理中,將程序地址空間划分為若干段,比如代碼段,數據段,這樣每一個進程有一個二維空間地址空間,相互獨立,互不干擾,段式管理的優點是:沒有內存碎片(因為段大小可變,改變段來消除內碎片),但段換入換出時,會產生外碎片(比如4K的段換5K的段,會產生1K的外碎片)

頁式儲存管理方案用戶視角和物理內存相分離的內存分配管理方案,在頁式存儲中,將程序邏輯地址划分為固定大小的頁,而物理內存划分為同樣大小的幀,程序加載時,可以將任意一頁放入內存中任意一幀,這些幀不必連續,從而實現了離散分離,頁式存儲管理的優點是:沒有外碎片,因為頁的大小固定,但會產生內碎片(一個頁可能填充不滿)

兩者的不同點:

目的不同:分頁是由於系統管理的需要而不是用戶的需要,它是物理信息的單位,分段的目的是為了能夠更好的用戶的需要,它是信息的邏輯單位,它含有一組意義相對完整的信息

大小不同:頁的大小固定且由系統決定,段的長度不固定,大小由其功能決定

地址空間不同:段向用戶提供二維地址空間,頁向用戶提供一維地址空間

信息共享:段是信息的邏輯單位,便於儲存保護和信息共享,頁的信息保護和共享收到限制

內存碎片:頁式沒有外碎片,但是有內碎片,段式有內碎片,但是沒有外碎片

 

6.操作系統中進程調度的策略有哪幾種?

1)FCFS(先來先服務,隊列實現,非搶占):先請求CPU的進程先分配CPU

2)SJF(最短作業優先調度算法):平均等待時間最短的優先

3)優先級調度算法(可以是搶占的,也可以是非搶占的):優先級越高越先分配到CPU,相同優先級先到先服務,存在的主要問題:低優先級進程無窮等待CPU,會導致無窮阻塞或飢餓,解決方案:老化

4)時間片輪轉調度算法(可搶占)

5)多級隊列調度算法:將就緒隊列分成多個獨立隊列,每個隊列都有自己的調度算法,隊列之間采用固定優先級搶占調度,其中,一個進程根據自身屬性被永久的分配到一個隊列中

6)多級反饋隊列調度算法:與多級隊列調度算法相比,其允許進程在隊列之間移動,若進程過多使用CPU時間,那么它會被轉移到更低優先級的隊列,在較低優先級隊列等待時間過長的進程會被轉移到更高的優先級,以防止飢餓發生

 

7.頁面置換算法:

1)FIFO(先進先出算法)

2)LRU(最近最少使用算法)

3)LFU(最少使用次數算法)

4)OPT(最優置換算法):理論的最優,理論:保證被置換出去等待是不再被使用的頁,或者是在實際內存中使用最晚的頁

 

8.系統顛簸:頻繁的頁面調度行為,因為不斷產生缺頁中斷,導致不斷要調入頁調出頁

解決方案:

1)替換合適的頁面調度算法

2)因為運行的程度太多,造成程序無法同時將所有頻繁訪問的頁面調入內存,則要降低多道程序的數量

3)終止該進程或者增加物理內存容量

 

9.程序局部性原理

空間上的局部性:內存中被訪問的頁的周圍的頁頁很有可能被訪問

時間上的局部性:最近被訪問的頁在不久的將來還會被訪問

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM