前端面試必備的作業系統知識
(1)程序是資源分配和保護的基本單位,執行緒是處理器排程和分派的基本單位,程式執行的最小單元。
(2)同一個程序中可以包含多個執行緒,並且執行緒共享整個程序的資源(暫存器、堆疊、上下文),一個程序至少包含一個執行緒。
(3)程序結束後,它所有的執行緒都將銷燬,而執行緒的結束不會影響同個程序中其他執行緒的結束。
(4)執行緒是輕量級的程序,它的建立和銷燬所需時間和空間都比程序小很多,所有作業系統的執行功能都是建立執行緒去完成的。
(5)執行緒有自己的私有屬性TCB,執行緒id,暫存器、硬體上下文,而程序也有自己的私有屬性程序控制塊PCB,這些私有屬性是不被共享的,用來標示一個程序或一個執行緒的標誌
2.程序的幾種狀態
(1)執行狀態:程序正在處理機上執行
(2)就緒狀態:程序已經獲得了除處理機之外的一切所需資源
(3)阻塞狀態:程序正在等待某一事件而暫停執行
(4)建立狀態:程序正在被建立,尚未轉到就緒狀態。
(5)結束狀態:程序正在從系統中消失,分為正常結束和異常退出。
3.程序通訊的幾種方式
(1)共享儲存:
低階方式:基於資料結構的共享
高階方式:基於儲存區的共享
(2)訊息傳遞:
直接通訊方式:直接把訊息掛到接收程序的訊息佇列。
間接通訊方式:掛到某個中間實體,接收程序找實體接收訊息,類似電子郵件。
(3)管道通訊:利用一種特殊的pipe檔案連線兩個程序
4.核心態和使用者態
根據執行程式對資源和機器指令的使用許可權可以將處理器的狀態分為核心態和使用者態。
核心是一組程式模組,運行於核心態,具有直接訪問硬體裝置和所有記憶體空間的許可權,是僅有的能夠執行特權指令的程式。
一般而言,核心具有以下功能:中斷處理、時鐘管理、原語、系統控制的資料結構及處理(程序管理、儲存管理、裝置管理)。
三種情況會發生使用者態向核心態轉換:(其實這三種情況都算是通過中斷機制發生)
(1)系統呼叫(軟中斷)
(2)中斷(外中斷)
(3)異常(內中斷)
4.什麼是中斷?
中斷是指處理器接收到了來自硬體或者軟體的訊號,提示發生了某個事件,應該被注意,這種情況就稱為中斷。
中斷分為內中斷和外中斷:
(1)外中斷,也稱中斷,指來自CPU執行指令以外的事件的發生,如I/O結束中斷、時鐘中斷。
(2)內中斷,又稱異常,指源自CPU執行指令內部的事件,如程式的非法操作碼、地址越界、算術溢位、虛存系統的缺頁以及專門的陷入指令等引起的事件。
5.死鎖?死鎖產生的原因,死鎖的必要條件?怎麼預防?怎麼處理死鎖?
死鎖:相互等待資源而產生的一種僵持狀態,如果沒有外力的干預將一直持續這個狀態。
產生原因:系統資源不足、相互競爭資源、資源請求順序不當。
產生死鎖的必要條件:
互斥條件:指程序對所分配到的資源進行排它性使用,即在一段時間內某資源只由一個程序佔用。如果此時還有其它程序請求資源,則請求者只能等待,直至佔有資源的程序用畢釋放。
請求與保持條件:指程序已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它程序佔有,此時請求程序阻塞,但又對自己已獲得的其它資源保持不 不剝奪條件:指程序已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。
迴圈與等待條件:存在一個迴圈鏈,互相等待資源的釋放 預防死鎖:破壞三個條件之一就可以,常見的方法有有序資源分配法、銀行家演算法。
處理死鎖:因為互斥是不可改變的,所以只能破壞其他三個條件中的一個來解除死鎖,方法:剝奪資源、殺死其中一個執行緒
6. 什麼是虛擬記憶體。
基於區域性性原理,我們可以把程式的一部分裝到記憶體,而將其餘部分留在外存,就可以啟動程式執行。
當所訪問的資訊不存在時,作業系統就將所需部分調入記憶體。
此外,作業系統會將記憶體中暫不需要的部份換出到外存中,從而騰出空間存放將要調入記憶體的資訊。
這樣系統好像為使用者提供了一個比實際記憶體大得多的儲存器,稱為虛擬儲存器。