OS- -操作系统常见问题总结
OS- -操作系統常見問題總結
文章目錄
- OS- -操作系統常見問題總結
- 1.解釋一下什么是操作系統
- 2.解釋一下操作系統的主要目的是什么
- 3.操作系統的種類有哪些
- 4.操作系統結構
- 單體系統
- 分層系統
- 微內核
- 客戶-服務器模式
- 5.什么是按需分頁
- 6.多處理系統的優勢
- 7.什么是內核
- 8.什么是實時系統
- 9.什么是虛擬內存
- 10.什么是進程和進程表
- 11.什么是線程,線程和進程的區別
- 12.使用多線程的好處是什么
- 13.什么是RR調度算法
- 14.導致系統出現死鎖的情況
- 15.RAID的不同級別
- 16.什么是DMA
- 17.多線程編程的好處是什么
- 18.什么是設備驅動程序
- 19.進程間的通信方式
- 通信概念
- 解決方案
- 20.進程間狀態模型
- 21.調度算法都有哪些
- 1.批處理中的調度
- 先來先服務
- 最短作業優先
- 最短剩余時間優先
- 2.交互式系統中的調度
- 輪詢調度(時間片)
- 優先級調度
- 最短進程優先
- 彩票調度
- 公平分享調度
- 22.頁面置換算法都有哪些
- 23.影響調度程序的指標是什么
- 24.什么是僵尸進程
1.解釋一下什么是操作系統
- 操作系統是運行在計算機上最重要的一種軟件,它管理計算機的資源和進程以及所有的硬件和軟件。 它為計算機硬件和軟件提供了一種中間層
通常情況下,計算機上會運行著許多應用程序,它們都需要對內存和CPU進行交互,操作系統的目的 就是為了保證這些訪問和交互能夠準確無誤的進行。
2.解釋一下操作系統的主要目的是什么
- 操作系統是一種軟件,它的主要目的有三種
- ?管理計算機資源,這些資源包括CPU、內存、磁盤驅動器、打印機等。
- ?提供一種圖形界面,就像我們前面描述的那樣,它提供了用戶和計算機之間的橋梁。
- ?為其他軟件提供服務,操作系統與軟件進行交互,以便為其分配運行所需的任何必要資源。
3.操作系統的種類有哪些
- 操作系統通常預裝在你購買計算機之前。大部分用戶都會使用默認的操作系統,但是你也可以升級甚至 更改操作系統。
- 但是一般常見的操作系統只有三種:Windowss /macOS/Linux。
4.操作系統結構
單體系統
- 在大多數系統中,整個系統在內核態以單一程序的方式運行。整個操作系統是以程序集合來編寫的,鏈 接在一塊形成一個大的二進制可執行程序,這種系統稱為單體系統。
- 在單體系統中構造實際目標程序時,會首先編譯所有單個過程(或包含這些過程的文件),然后使用系 統鏈接器將它們全部綁定到一個可執行文件中在單體系統中
- 對于每個系統調用都會有一個服務程序來保障和運行。需要一組實用程序來彌補服務程 序需要的功能,例如從用戶程序中獲取數據。可將各種過程劃分為一個三層模型
- 除了在計算機初啟動時所裝載的核心操作系統外,許多操作系統還支持額外的擴展。
- 比如I/O設備驅動 和文件系統。這些部件可以按需裝載。在UNIX中把它們叫做共享庫(shared library),在 Windows中則被稱為 動態鏈接庫(Dynamic Link Library,DLL)。他們的擴展名為.dll ,
- 在 C:\Windows\system32目錄下存在1000多個DLL文件,所以不要輕易刪除C盤文件,否則可能 就炸了哦😊。
分層系統
- 分層系統使用層來分隔不同的功能單元。每一層只與該層的上層和下層通信。每一層都使用下面的層來 執行其功能。層之間的通信通過預定義的固定接口通信。
微內核
- 為了實現高可靠性,將操作系統劃分成小的、層級之間能夠更好定義的模塊是很有必要的,只有一個模 塊微內核運行在內核態,其余模塊可以作為普通用戶進程運行。
- 由于把每個設備驅動和文件系 統分別作為普通用戶進程,這些模塊中的錯誤雖然會使這些模塊崩潰,但是不會使整個系統死機。
MINIX 3是微內核的代表作,它的具體結構如下
- 在內核的外部,系統的構造有三層,它們都在用戶態下運行,最底層是設備驅動器。
- 由于它們都在用戶 態下運行,所以不能物理的訪問I/O端口空間,也不能直接發出I/O命令。
- 相反,為了能夠對I/O設備 編程,驅動器構建一個結構,指明哪個參數值寫到哪個I/O端口,并聲稱一個內核調用,這樣就完成了 一次調用過程。
客戶-服務器模式
- 微內核思想的策略是把進程劃分為兩類:服務器,每個服務器用來提供服務;客戶端,使用這些服 務。這個模式就是所謂的 客戶-服務器模式。
- 客戶-服務器模式會有兩種載體,一種情況是一臺計算機既是客戶又是服務器,在這種方式下,操作系 統會有某種優化;
- 但是普遍情況下是客戶端和服務器在不同的機器上,它們通過局域網或廣域網連接。
- 客戶通過發送消息與服務器通信,客戶端并不需要知道這些消息是在本地機器上處理,還是通過網絡被 送到遠程機器上處理。
- 對于客戶端而言,這兩種情形是一樣的:都是發送請求并得到回應。
5.什么是按需分頁
在操作系統中,進程是以頁為單位加載到內存中的,按需分頁是一種虛擬內存的管理方式。在使用請 求分頁的系統中,只有在嘗試訪問頁面所在的磁盤并且該頁面尚未在內存中時,也就發生了缺頁異 常,操作系統才會將磁盤頁面復制到內存中。
6.多處理系統的優勢
隨著處理器的不斷增加,我們的計算機系統由單機系統變為了多處理系統,多處理系統的吞吐量比較 高,多處理系統擁有多個并行的處理器,這些處理器共享時鐘、內存、總線、外圍設備等。
多處理系統由于可以共享資源,因此可以開源節流,省錢。整個系統的可靠性也隨之提高。
7.什么是內核
在計算機中,內核是一個計算機程序,它是操作系統的核心,可以控制操作系統中所有的內容。內核通 常是在boot loader裝載程序之前加載的第一個程序。
- 這里還需要了解一下什么是boot loader
- boot loader又被稱為引導加載程序,它是一個程序,能夠將計算機的操作系統放入內存中。
- 在電源通電或者計算機重啟時,BIOS會執行一些初始測試,然后將控制權轉移到引導加載程序所在 的主引導記錄(MBR)。
8.什么是實時系統
實時操作系統對時間做出了嚴格的要求,實時操作系統分為兩種:硬實時和軟實時
硬實時操作系統規定某個動作必須在規定的時刻內完成或發生
- 比如汽車生產車間,焊接機器必須在某 —時刻內完成焊接,焊接的太早或者太晚都會對汽車造成永久性傷害。
軟實時操作系統雖然不希望偶爾違反最終的時限要求,但是仍然可以接受。并且不會引起任何永久性傷 害。
- 比如數字音頻、多媒體、手機都是屬于軟實時操作系統。
你可以簡單理解硬實時和軟實時的兩個指標:是否在時刻內必須完成以及是否造成嚴重損害。
9.什么是虛擬內存
虛擬內存是一種內存分配方案,是一項可以用來輔助內存分配的機制。
我們知道,應用程序是按頁裝載進內存中的。
但并不是所有的頁都會裝載到內存中,計算機中的硬件和軟件會將數據從RAM臨時傳輸到磁盤中來彌補內存的不足。
如果沒有虛擬內存的話,一旦你將計算機內存填滿后,計算機會對你說
- 不,對不起,您無法再加載任何應用程序,請關閉另一個應用程序以加載新的應用程序。
- 對于虛擬 內存,計算機可以執行操作是查看內存中最近未使用過的區域,然后將其復制到硬盤上。
- 虛擬內存通過 復制技術實現了妹子,你快來看哥哥能裝這么多程序的資本。
- 復制是自動進行的,你無法感知到它的 存在。
10.什么是進程和進程表
- 進程就是正在執行程序的實例,比如說Web程序就是一個進程,shell也是一個進程,文章編輯器 typora也是一個進程。
操作系統負責管理所有正在運行的進程,操作系統會為每個進程分配特定的時間來占用CPU,操作系 統還會為每個進程分配特定的資源。
操作系統為了跟蹤每個進程的活動狀態,維護了一個進程表。在進程表的內部,列出了每個進程的狀 態以及每個進程使用的資源等。
11.什么是線程,線程和進程的區別
這又是一道老生常談的問題了,從操作系統的角度來回答一下吧。
我們上面說到進程是正在運行的程序的實例,而線程其實就是進程中的單條流向,因為線程具有進程中 的某些屬性,所以線程又被稱為輕量級的進程。
瀏覽器如果是一個進程的話,那么瀏覽器下面的每個 tab頁可以看作是一個個的線程。
下面是線程和進程持有資源的區別:
創建線程的開銷要比進程小很多,因為創建線程僅僅需要堆棧指針和程序計數器就可以了,而創建進 程需要操作系統分配新的地址空間,數據資源等,這個開銷比較大。
12.使用多線程的好處是什么
多線程是程序員不得不知的基本素養之一,所以,下面我們給出一些多線程編程的好處
- ?能夠提高對用戶的響應順序
- ?在流程中的資源共享
- ?比較經濟適用
- ?能夠對多線程架構有深入的理解
13.什么是RR調度算法
RR(round-robin)調度算法主要針對分時系統,RR的調度算法會把時間片以相同的部分并循環的分 配給每個進程,RR調度算法沒有優先級的概念。
這種算法的實現比較簡單,而且每個線程都會占有時 間片,并不存在線程饑餓的問題。
14.導致系統出現死鎖的情況
死鎖的出現需要同時滿足下面四個條件
- ?互斥(Mutual Exclusion):一次只能有一個進程使用資源。如果另一個進程請求該資源,則必 須延遲請求進程,直到釋放該資源為止。
- ?保持并等待(Hold and Wait):必須存在一個進程,該進程至少持有一個資源,并且正在等待獲 取其他進程當前所持有的資源。
- ?無搶占(No Preemption):資源不能被搶占,也就是說,在進程完成其任務之后,只能由擁有它 的進程自動釋放資源。
- ?循環等待(Circular Wait):必須存在一組{pO, p1,……pn}的等待進程,使p0等待p1持有 的資源,p1等待由p2持有的資源,pn-1正在等待由pn持有的資源,而pn正在等待由p0持有 的資源。
15.RAID的不同級別
RAID稱為磁盤冗余陣列,簡稱磁盤陣列。利用虛擬化技術把多個硬盤結合在一起,成為一個或多個 磁盤陣列組,目的是提升性能或數據冗余。
RAID有不同的級別
- ?RAID 0-無容錯的條帶化磁盤陣列
- ?RAID 1 -鏡像和雙工
- ?RAID 2 -內存式糾錯碼
- ?RAID 3 -比特交錯奇偶校驗
- ?RAID 4 -塊交錯奇偶校驗
- ?RAID 5 -塊交錯分布式奇偶校驗
- ?RAID 6 - P + Q冗余
16.什么是DMA
DMA的中文名稱是直接內存訪問,它意味著CPU授予I/O模塊權限在不涉及CPU的情況下讀取或 寫入內存。也就是DMA可以不需要CPU的參與。這個過程由稱為DMA控制器(DMAC)的芯片管 理。
由于DMA設備可以直接在內存之間傳輸數據,而不是使用CPU作為中介,因此可以緩解總線上 的擁塞。DMA通過允許CPU執行任務,同時DMA系統通過系統和內存總線傳輸數據來提高系統并發 性。
17.多線程編程的好處是什么
- 對不起,我忍不住想偷笑
- 多 線程在某些情況下能夠使你程序運行的更快,這也是為什么多核CPU會出現,但是多核CPU的出現 會導致數據的一致性問題,不過這些問題程序員就能解決。
- 另一個角度來說,多線程編程能夠提高程序 員的編程能力和編程思維。
- 同時也能提高程序員的管理能力
- 最最最最大的優點是成功的把你的頭發‘編’少了👏👏👏👏👏👏👏👏
18.什么是設備驅動程序
在計算機中,設備驅動程序是一種計算機程序,它能夠控制或者操作連接到計算機的特定設備。驅動程 序提供了與硬件進行交互的軟件接口,使操作系統和其他計算機程序能夠訪問特定設備,不用需要了解 其硬件的具體構造。
19.進程間的通信方式
通信概念
進程間的通信方式比較多,首先你需要理解下面這幾個概念
- ?競態條件:即兩個或多個線程同時對一共享數據進行修改,從而影響程序運行的正確性時,這種就 被稱為 競態條件(race condition)。
- ?臨界區:包含臨界資源的一段代碼
不僅共享資源會造成競態條件,事實上共享文件、共享內存也會造成競態條件、那么該 如何避免呢?
或許一句話可以概括說明:禁止一個或多個進程在同一時刻對共享資源(包括共享內 存、共享文件等)進行讀寫。
換句話說,我們需要一種互斥(mutual exclusion)條件,這也 就是說,如果一個進程在某種方式下使用共享變量和文件的話,除該進程之外的其他進程就禁止做 這種事(訪問統一資源)。
一個好的解決方案,應該包含下面四種條件
- 1.任何時候兩個進程不能同時處于臨界區
- 2.不應對CPU的速度和數量做任何假設
- 3.位于臨界區外的進程不得阻塞其他進程
- 4.不能使任何進程無限等待進入臨界區
?忙等互斥:當一個進程在對資源進行修改時,其他進程必須進行等待,進程之間要具有互斥性
我 們討論的解決方案其實都是基于忙等互斥提出的。
解決方案
進程間的通信用專業一點的術語來表示就是Inter Process Communication, IPC ,它主要有下面 幾種通信方式:
- ?消息傳遞:消息傳遞是進程間實現通信和同步等待的機制,使用消息傳遞,進程間的交流不需要 共享變量,直接就可以進行通信;消息傳遞分為發送方和接收方
- ?先進先出隊列:先進先出隊列指的是兩個不相關聯進程間的通信,兩個進程之間可以彼此相互進 程通信,這是一種全雙工通信方式
- ?管道:管道用于兩個相關進程之間的通信,這是一種半雙工的通信方式,如果需要全雙工,需要 另外一個管道。
- ?直接通信:在這種進程通信的方式中,進程與進程之間只存在一條鏈接,進程間要明確通信雙方 的命名。
- ?間接通信:間接通信是通信雙方不會直接建立連接,而是找到一個中介者,這個中介者可能是個 對象等等,進程可以在其中放置消息,并且可以從中刪除消息,以此達到進程間通信的目的。
- ?消息隊列:消息隊列是內核中存儲消息的鏈表,它由消息隊列標識符進行標識,這種方式能夠在 不同的進程之間提供全雙工的通信連接。
- ?共享內存:共享內存是使用所有進程之間的內存來建立連接,這種類型需要同步進程訪問來相互 保護。
- ?信號機制
- ?socket
20.進程間狀態模型
cat chapter1 chapter2 chapter3 | grep tree- 第一個進程是cat ,將三個文件級聯并輸出。
- 第二個進程是grep ,它從輸入中選擇具有包含關鍵字 tree的內容,根據這兩個進程的相對速度(這取決于兩個程序的相對復雜度和各自所分配到的CPU 時間片),可能會發生下面這種情況,grep準備就緒開始運行,但是輸入進程還沒有完成,于是必 須阻塞grep進程,直到輸入完畢。
當一個進程開始運行時,它可能會經歷下面這幾種狀態
圖中會涉及三種狀態
- 1.運行態,運行態指的就是進程實際占用CPU時間片運行時
- 2.就緒態,就緒態指的是可運行,但因為其他進程正在運行而處于就緒狀態
- 3.阻塞態,除非某種外部事件發生,否則進程不能運行
邏輯上來說,運行態和就緒態是很相似的。這兩種情況下都表示進程可運行,但是第二種情況沒有獲 得CPU時間分片。第三種狀態與前兩種狀態不同的原因是這個進程不能運行,CPU空閑時也不能運 行。
- 三種狀態會涉及四種狀態間的切換,在操作系統發現進程不能繼續執行時會發生狀態1的輪轉,在某些 系統中進程執行系統調用,例如pause,來獲取一個阻塞的狀態。
- 在其他系統中包括UNIX,當進程 從管道或特殊文件(例如終端)中讀取沒有可用的輸入時,該進程會被自動終止。
- 轉換2和轉換3都是由進程調度程序(操作系統的一部分)引起的,進程本身不知道調度程序的存在。
- 轉換2的出現說明進程調度器認定當前進程已經運行了足夠長的時間,是時候讓其他進程運行CPU時間片了。
- 當所有其他進程都運行過后,這時候該是讓第一個進程重新獲得CPU時間片的時候 了,就會發生轉換3。
- 程序調度指的是,決定哪個進程優先被運行和運行多久,這是很重要的一點。已經設計出許多算 法來嘗試平衡系統整體效率與各個流程之間的競爭需求。
- 當進程等待的一個外部事件發生時(如從外部輸入一些數據后),則發生轉換4。
- 如果此時沒有其他進程在運行,則立刻觸發轉換3,該進程便開始運行,否則該進程會處于就緒階段,等待CPU空閑后再 輪到它運行。
21.調度算法都有哪些
調度算法分為三大類:批處理中的調度、交互系統中的調度、實時系統中的調度
1.批處理中的調度
先來先服務
可能最簡單的非搶占式調度算法的設計就是先來先服務(first-come,first-serverd)。
使用此算法,將按照請求順序為進程分配CPU。最基本的,會有一個就緒進程的等待隊 列。
當第一個任務從外部進入系統時,將會立即啟動并允許運行任意長的時間。它不會因為運行時間太 長而中斷。
當其他作業進入時,它們排到就緒隊列尾部。當正在運行的進程阻塞,處于等待隊列的第一 個進程就開始運行。
當一個阻塞的進程重新處于就緒態時,它會像一個新到達的任務,會排在隊列的末 尾,即排在所有進程最后。
這個算法的強大之處在于易于理解和編程,在這個算法中,一個單鏈表記錄了所有就緒進程。要選取一 個進程運行,只要從該隊列的頭部移走一個進程即可;要添加一個新的作業或者阻塞一個進程,只要把 這個作業或進程附加在隊列的末尾即可。這是很簡單的一種實現。
不過,先來先服務也是有缺點的,那就是沒有優先級的關系
試想一下,如果有100個I/O進程正在排 隊,第101個是一個CPU密集型進程,那豈不是需要等100個I/O進程運行完畢才會等到一個CPU 密集型進程運行
這在實際情況下根本不可能,所以需要優先級或者搶占式進程的出現來優先選擇重要 的進程運行。
最短作業優先
批處理中,第二種調度算法是最短作業優先(Shortest Job First)
我們假設運行時間已知。例如,一家保險公司,因為每天要做類似的工作,所以人們可以相當精確地預測處理1000個索賠的一批 作業需要多長時間。
當輸入隊列中有若干個同等重要的作業被啟動時,調度程序應使用最短優先作業算法
如上圖a所示,這里有4個作業A、B、C、D,運行時間分別為8、4、4、4分鐘。
若按圖中的次序 運行,則A的周轉時間為8分鐘,B為12分鐘,C為16分鐘,D為20分鐘,平均時間內為14分 鐘。
現在考慮使用最短作業優先算法運行4個作業,如上圖b所示,目前的周轉時間分別為4、8、12、 20,平均為11分鐘,可以證明最短作業優先是最優的。
考慮有4個作業的情況,其運行時間分別為 a、b、c、d。
第一個作業在時間a結束,第二個在時間a + b結束,以此類推,平均周轉時間為(4a + 3b + 2c + d)/4。
顯然a對平均值的影響最大,所以a應該是最短優先作業,其次是b,然后是c , 最后是d它就只能影響自己的周轉時間了。
需要注意的是,在所有的進程都可以運行的情況下,最短作業優先的算法才是最優的。
最短剩余時間優先
最短作業優先的搶占式版本被稱作為最短剩余時間優先(Shortest Remaining Time Next)算法。
使用這個算法,調度程序總是選擇剩余運行時間最短的那個進程運行。
當一個新作業到達時,其整個時 間同當前進程的剩余時間做比較。如果新的進程比當前運行進程需要更少的時間,當前進程就被掛起, 而運行新的進程。這種方式能夠使短期作業獲得良好的服務。
2.交互式系統中的調度
交互式系統中在個人計算機、服務器和其他系統中都是很常用的,所以有必要來探討一下交互式調度
輪詢調度(時間片)
一種最古老、最簡單、最公平并且最廣泛使用的算法就是 輪詢算法(round-robin)。每個進程都會被 分配一個時間段,稱為時間片(quantum),在這個時間片內允許進程運行。
如果時間片結束時進程還 在運行的話,則搶占一個CPU并將其分配給另一個進程。如果進程在時間片結束前阻塞或結束,則 CPU立即進行切換。
輪詢算法比較容易實現。調度程序所做的就是維護一個可運行進程的列表,就像 下圖中的a,當一個進程用完時間片后就被移到隊列的末尾,就像下圖的b
優先級調度
事實情況是不是所有的進程都是優先級相等的。
例如,在一所大學中的等級制度,首先是院長,然后是 教授、秘書、后勤人員,最后是學生。這種將外部情況考慮在內就實現了優先級調度(priority scheduling)
此刻你再想想你的家庭地位👏👏👏👏👏👏👏👏👏👏👏👏
它的基本思想很明確,每個進程都被賦予一個優先級,優先級高的進程優先運行。
但是也不意味著高優先級的進程能夠永遠一直運行下去,調度程序會在每個時鐘中斷期間降低當前運行 進程的優先級。
如果此操作導致其優先級降低到下一個最高進程的優先級以下,則會發生進程切換。
或 者,可以為每個進程分配允許運行的最大時間間隔。當時間間隔用完后,下一個高優先級的進程會得到 運行的機會。
最短進程優先
對于批處理系統而言,由于最短作業優先常常伴隨著最短響應時間,一種方式是根據進程過去的行為進 行推測,并執行估計運行時間最短的那一個。
假設每個終端上每條命令的預估運行時間為T0 ,現在假 設測量到其下一次運行時間為T1 ,可以用兩個值的加權來改進估計時間,即aT0+ (1- 1)T1 。
通 過選擇a的值,可以決定是盡快忘掉老的運行時間,還是在一段長時間內始終記住它們。
當a= 1/2 時,可以得到下面這個序列
可以看到,在三輪過后,TO在新的估計值中所占比重下降至1/8。
有時把這種通過當前測量值和先前估計值進行加權平均從而得到下一個估計值的技術稱作老化 (aging) ,這種方法會使用很多預測值基于當前值的情況。
彩票調度
有一種既可以給出預測結果而又有一種比較簡單的實現方式的算法,就是彩票調度(lottery scheduling)算法。
他的基本思想為進程提供各種系統資源的彩票。當做出一個調度決策的時候,就 隨機抽出一張彩票,擁有彩票的進程將獲得資源。比如在CPU進行調度時,系統可以每秒持有50次 抽獎,每個中獎進程會獲得額外運行時間的獎勵。
可以把彩票理解為buff,這個buff有15%的幾率能讓你產生 速度之靴 的效果。
公平分享調度
如果用戶1啟動了 9個進程,而用戶2啟動了一個進程,使用輪轉或相同優先級調度算法,那么用戶 1將得到90 %的CPU時間,而用戶2將之得到10 %的CPU時間。
為了阻止這種情況的出現,一些系統在調度前會把進程的擁有者考慮在內。在這種模型下,每個用戶都 會分配一些CPU時間,而調度程序會選擇進程并強制執行。
因此如果兩個用戶每個都會有50%的 CPU時間片保證,那么無論一個用戶有多少個進程,都將獲得相同的CPU份額。
22.頁面置換算法都有哪些
最優算法在當前頁面中置換最后要訪問的頁面。不幸的是,沒有辦法來判定哪個頁面是最后一個 要訪問的,因此實際上該算法不能使用。然而,它可以作為衡量其他算法的標準。
- ?NRU算法根據R位和M位的狀態將頁面分為四類。從編號最小的類別中隨機選擇一個頁面。NRU算法易于實現,但是性能不是很好。存在更好的算法。
- ?FIFO會跟蹤頁面加載進入內存中的順序,并把頁面放入一個鏈表中。有可能刪除存在時間最長 但是還在使用的頁面,因此這個算法也不是一個很好的選擇。
- ?第二次機會算法是對FIFO的一個修改,它會在刪除頁面之前檢查這個頁面是否仍在使用。如果 頁面正在使用,就會進行保留。這個改進大大提高了性能。
- ?時鐘算法是第二次機會算法的另外一種實現形式,時鐘算法和第二次算法的性能差不多,但是會 花費更少的時間來執行算法。
- ?LRU算法是一個非常優秀的算法,但是沒有特殊的硬件(TLB)很難實現。如果沒有硬件,就不 能使用LRU算法。
- ?NFU算法是一種近似于LRU的算法,它的性能不是非常好。
- ?老化算法是一種更接近LRU算法的實現,并且可以更好的實現,因此是一個很好的選擇
- ?最后兩種算法都使用了工作集算法。工作集算法提供了合理的性能開銷,但是它的實現比較復 雜。WSClock是另外一種變體,它不僅能夠提供良好的性能,而且可以高效地實現。
最好的算法是老化算法和WSCIockM法。他們分別是基于LRU和工作集算法。他們都具有良好的性能 并且能夠被有效的實現。還存在其他一些好的算法,但實際上這兩個可能是最重要的。
23.影響調度程序的指標是什么
會有下面幾個因素決定調度程序的好壞
- ? CPU使用率:CPU正在執行任務(即不處于空閑狀態)的時間百分比。
- ?等待時間:這是進程輪流執行的時間,也就是進程切換的時間
- ?吞吐量:單位時間內完成進程的數量
- ?響應時間:這是從提交流程到獲得有用輸出所經過的時間。
- ?周轉時間:從提交流程到完成流程所經過的時間。
24.什么是僵尸進程
僵尸進程是已完成且處于終止狀態,但在進程表中卻仍然存在的進程。僵尸進程通常發生在父子關系的 進程中,由于父進程沒有成功讀取其子進程的退出狀態所造成的。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的OS- -操作系统常见问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OS- -死锁(二)
- 下一篇: 缓存系统中的三座大山