「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
「面試專欄」前端面試之操作系統(tǒng)篇
- 🎹序言
- 🎸一、思維導圖
- 🎺二、常見面試題
- 1、進程和線程以及它們的區(qū)別
- 2、進程間通信的幾種方式
- (1)管道(pipe)及命名管道(named pipe)
- (2)信號(signal)
- (3)消息隊列
- (4)共享內(nèi)存
- (5)信號量
- (6)套接字
- 3、線程同步的方式
- (1)互斥量 Synchronized/Lock
- (2)信號量 Semphare
- (3)事件(信號)Wait/Notify
- 4、什么是死鎖?死鎖產(chǎn)生的條件?
- (1)死鎖的概念
- (2)死鎖產(chǎn)生的四個必要條件
- (3)處理死鎖的基本策略和常用方法
- 5、進程有哪幾種狀態(tài)?
- 6、線程有幾種狀態(tài)?
- 7、段式存儲管理
- (1)段式存儲管理是什么?
- (2)段式管理的優(yōu)缺點
- (3)頁式存儲管理方案
- (4)頁式存儲管理的優(yōu)缺點
- 8、進程調(diào)度策略
- (1)FCFS(先來先服務(wù),隊列實現(xiàn),非搶占的)
- (2)SJF(最短作業(yè)優(yōu)先調(diào)度算法)
- (3)優(yōu)先級調(diào)度算法(可以是搶占的,也可以是非搶占的)
- (4)時間片輪轉(zhuǎn)調(diào)度算法(可搶占的)
- (5)多級隊列調(diào)度算法
- (6)多級反饋隊列調(diào)度算法
- 9、頁面調(diào)度算法
- 10、局部性原理
- 🎻三、結(jié)束語
- 🐣彩蛋 One More Thing
- 🏷?pdf內(nèi)容獲取
- 🏷?更新地址
- 🏷?番外篇
🎹序言
操作系統(tǒng)對于前端來說考察的內(nèi)容并不多,所以在今天的文章中將依據(jù)比較常考的知識點進行歸納總結(jié)。
下面開始本文的講解~
🎸一、思維導圖
我們先用一張思維導圖來梳理操作系統(tǒng)相關(guān)的面試題。具體如下👇
下面開始歸納操作系統(tǒng)常見的面試題。
🎺二、常見面試題
1、進程和線程以及它們的區(qū)別
- 進程是對程序運行時的封裝,是系統(tǒng)進行資源調(diào)度和分配的的基本單位,實現(xiàn)了操作系統(tǒng)的并發(fā);
- 線程是進程的子任務(wù),是CPU調(diào)度和分配的基本單位,用于保證程序的實時性,實現(xiàn)進程內(nèi)部的并發(fā);
- 一個程序至少有一個進程,一個進程至少有一個線程,線程依賴于進程而存在;
- 進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享進程的內(nèi)存。
2、進程間通信的幾種方式
(1)管道(pipe)及命名管道(named pipe)
- 管道可用于具有親緣關(guān)系的父子進程間的通信。
- 命名管道除了具有管道所具有的功能外,它還允許無親緣關(guān)系進程間的通信。
(2)信號(signal)
- 信號是一種比較復雜的通信方式,用于通知和接收某個已經(jīng)發(fā)生的進程事件。
(3)消息隊列
- 消息隊列是消息的鏈接表,它克服了以上兩種通信方式中信號量有限的缺點。
- 具有寫權(quán)限的進程可以按照一定的規(guī)則向消息隊列中添加新信息。
- 對消息隊列有讀權(quán)限的進程則可以從消息隊列中讀取信息。
(4)共享內(nèi)存
- 可以說這是最有用的進程間通信方式。
- 它使得多個進程可以訪問同一塊內(nèi)存空間,不同進程可以及時看到對方進程中對共享內(nèi)存中數(shù)據(jù)的更新。
- 這種方式需要依靠某種同步操作,如互斥鎖和信號量等。
(5)信號量
- 主要作為進程之間及同一種進程的不同線程之間的同步和互斥手段;
(6)套接字
- 這是一種更為一般的進程間通信機制,它可用于網(wǎng)絡(luò)中不同機器之間的進程間通信,應(yīng)用非常廣泛。
3、線程同步的方式
(1)互斥量 Synchronized/Lock
- 采用互斥對象機制,只有擁有互斥對象的線程才有訪問公共資源的權(quán)限。
- 因為互斥對象只有一個,所以可以保證公共資源不會被多個線程同時訪問。
(2)信號量 Semphare
- 它允許同一時刻多個線程訪問同一資源,但是需要控制同一時刻訪問此資源的最大線程數(shù)量。
(3)事件(信號)Wait/Notify
- 通過通知操作的方式來保持多線程同步,還可以方便的實現(xiàn)多線程優(yōu)先級的比較操作。
4、什么是死鎖?死鎖產(chǎn)生的條件?
(1)死鎖的概念
- 在兩個或者多個并發(fā)進程中,如果每個進程持有某種資源而又等待其它進程釋放它或它們現(xiàn)在保持著的資源,在未改變這種狀態(tài)之前都不能向前推進,稱這一組進程產(chǎn)生了死鎖。
- 通俗的講,就是兩個或多個進程無限期的阻塞、相互等待的一種狀態(tài)。
(2)死鎖產(chǎn)生的四個必要條件
- 互斥:至少有一個資源必須屬于非共享模式,即一次只能被一個進程使用;若其他申請使用該資源,那么申請進程必須等到該資源被釋放為止。
- 占有并等待:一個進程必須占有至少一個資源,并等待另一個資源,而該資源為其他進程所占有。
- 非搶占:進程不能被搶占,即資源只能被進程在完成任務(wù)后自愿釋放。
- 循環(huán)等待:若干進程之間形成一種頭尾相接的環(huán)形等待資源關(guān)系。
(3)處理死鎖的基本策略和常用方法
- 解決死鎖的基本方法主要有預防死鎖、避免死鎖、檢測死鎖、解除死鎖 、鴕鳥策略等。
5、進程有哪幾種狀態(tài)?
**(1)就緒狀態(tài):**進程已獲得除處理機以外的所需資源,等待分配處理機資源。
**(2)運行狀態(tài):**占用處理機資源運行,處于此狀態(tài)的進程數(shù)小于等于CPU數(shù)。
(3)阻塞狀態(tài): 進程等待某種條件,在條件未滿足之前無法執(zhí)行。
6、線程有幾種狀態(tài)?
在 Java虛擬機 中,線程從最初的創(chuàng)建到最終的消亡,要經(jīng)歷若干個狀態(tài):
- 創(chuàng)建 (new) 、就緒 (runnable/start) 、運行 (running) 、阻塞 (blocked) 、等待 (waiting) 、時間等待 (time waiting) 和 消亡 (dead/terminated) 。
- 在給定的時間點上,一個線程只能處于一種狀態(tài)。
7、段式存儲管理
(1)段式存儲管理是什么?
段式存儲管理是一種符合用戶視角的內(nèi)存分配管理方案。
在段式存儲管理中,將程序的地址空間劃分為若干段(segment),如代碼段、數(shù)據(jù)段、堆棧段;
這樣每個進程有一個二維地址空間,相互獨立,互不干擾。
(2)段式管理的優(yōu)缺點
- 優(yōu)點:沒有內(nèi)碎片(因為段大小可變,可通過改變段大小來消除內(nèi)碎片)。
- 缺點:但段換入換出時,會產(chǎn)生外碎片(比如 4k 的段換 5k 的段,會產(chǎn)生 1k 的外碎片)。
(3)頁式存儲管理方案
頁式存儲管理方案是一種用戶視角下內(nèi)存與物理內(nèi)存相分離的內(nèi)存分配管理方案。
在頁式存儲管理中,將程序的邏輯地址劃分為固定大小的頁 (page) ,而物理內(nèi)存劃分為同樣大小的幀,程序加載時,可以將任意一頁放入內(nèi)存中任意一個幀,這些幀不必連續(xù),從而實現(xiàn)了離散分離。
(4)頁式存儲管理的優(yōu)缺點
- 優(yōu)點:沒有外碎片(因為頁的大小固定)。
- 缺點:但會產(chǎn)生內(nèi)碎片(一個頁可能填充不滿)。
8、進程調(diào)度策略
(1)FCFS(先來先服務(wù),隊列實現(xiàn),非搶占的)
先請求 CPU 的進程先分配到 CPU 。
(2)SJF(最短作業(yè)優(yōu)先調(diào)度算法)
平均等待時間最短,但難以知道下一個 CPU 區(qū)間長度。
(3)優(yōu)先級調(diào)度算法(可以是搶占的,也可以是非搶占的)
優(yōu)先級越高越先分配到 CPU ,相同優(yōu)先級先到先服務(wù)。
存在的主要問題是:低優(yōu)先級進程無窮等待 CPU ,會導致無窮阻塞或饑餓。
解決方案:老化(即對超過一定時間還未使用的進程進行刪除)。
(4)時間片輪轉(zhuǎn)調(diào)度算法(可搶占的)
隊列中沒有進程被分配超過一個時間片的 CPU 時間,除非它是唯一可運行的進程。
如果進程的 CPU 區(qū)間超過了一個時間片,那么該進程就被搶占并放回就緒隊列。
(5)多級隊列調(diào)度算法
將就緒隊列分成多個獨立的隊列,每個隊列都有自己的調(diào)度算法,隊列之間采用固定優(yōu)先級搶占調(diào)度。
其中,一個進程根據(jù)自身屬性被永久地分配到一個隊列中。
(6)多級反饋隊列調(diào)度算法
與多級隊列調(diào)度算法相比,其允許進程在隊列之間移動:若進程使用過多 CPU 時間,那么它會被轉(zhuǎn)移到更低的優(yōu)先級隊列。
在較低優(yōu)先級隊列等待時間過長的進程會被轉(zhuǎn)移到更高優(yōu)先級隊列,以防止饑餓發(fā)生。
9、頁面調(diào)度算法
FIFO先進先出算法:在操作系統(tǒng)中經(jīng)常被用到,比如作業(yè)調(diào)度(主要實現(xiàn)簡單,很容易想到)。
LRU(Least recently use)最近最少使用算法:根據(jù)開始使用時間到現(xiàn)在為止的時間長短來判斷。
LFU(Least frequently use)最少使用次數(shù)算法:根據(jù)使用次數(shù)來判斷。
OPT(Optimal replacement)最優(yōu)置換算法:理論的最優(yōu),所謂理論,就是要保證置換出去的是不再被使用的頁,或者是在實際內(nèi)存中最晚使用的頁。
10、局部性原理
(1) 時間上的局部性:最近被訪問的頁在不久的將來還會被訪問。
(2)空間上的局部性:內(nèi)存中被訪問的頁周圍的頁也很可能被訪問。
🎻三、結(jié)束語
大家可以看到,對于操作系統(tǒng)的面試來說,基本上都在圍繞著進程和線程這兩個概念交談。所以在學習的過程中,可以以這兩個點來作為主線來對知識點進行擴充和歸納。
關(guān)于操作系統(tǒng)的面經(jīng)歸納到這里就結(jié)束啦!希望對大家有幫助~
🐣彩蛋 One More Thing
🏷?pdf內(nèi)容獲取
👉 微信關(guān)注公眾號 星期一研究室 ,回復關(guān)鍵字 操作系統(tǒng)面試pdf 即可獲取相關(guān) pdf 內(nèi)容~
👉 回復 面試大全pdf 可獲取全專欄內(nèi)容📂
🏷?更新地址
👉 offer來了面試專欄
🏷?番外篇
- 如果您覺得這篇文章有幫助到您的的話不妨點贊支持一下喲~~😉
- 以上就是本文的全部內(nèi)容!我們下期見!👋👋👋
總結(jié)
以上是生活随笔為你收集整理的「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓打游戏用什么手机好(安卓打游戏)
- 下一篇: 开源IMDG之GridGain