一、程序排程模組
(推薦教學:)
Linux以程序作為系統資源分配的基本單位,並採用動態優先順序的程序高階演演算法,保證各個程序使用處理機的合理性。程序排程模組主要是對程序使用的處理機進行管理和控制。
【程序建立】:
在Linux環境程式設計時,一般採用fork()/vfork()函數(fork 是 建立一個子程序,並把父程序的記憶體資料copy到子程序中;vfork是 建立一個子程序,並和父程序的記憶體資料share一起用)來建立新的程序,當然,那是在使用者空間的函數,它會呼叫核心中的clone()系統呼叫,由clone()函數繼續呼叫do_fork()完成程序的建立。
fork()/vfork()/_clone--->clone()--->do_fork()--->copy_process()
【程序復原】:
程序終止後,需要通知核心以便核心釋放程序所擁有的資源,包括記憶體、開啟檔案以及其他資源,如號誌。程序終止的一般方式是呼叫exit()庫函數,該函數釋放C函數庫所分配的資源,執行程式設計者所註冊的每個函數,並結束從系統回收程序的那個系統呼叫。
【程序切換】:
程序切換又稱為工作切換、上下文切換。它是這樣一種行為,為了控制程序的執行,核心掛起當前在CPU上執行的程序,並恢復以前掛起的某個程序的執行。
在本質上,每個程序切換由兩部分組成:
切換頁全域性目錄以安裝一個新的地址空間;切換核心態堆疊和硬體上下文,因為硬體上下文提供了核心執行新程序所需要的所有資訊,包括CPU暫存器,主要有switch_to()函數完成。
【程序排程】:
現代的Linux中,排程演演算法可以在固定時間內(與可執行程序數量無關)選中要執行的程序。首先,我們必須知道程序可以分為實時程序與普通程序。每個LInux程序總是按照如下的排程型別被排程:先進先出的實時程序、時間片輪轉的實時程序、普通的分時程序。排程演演算法根據程序是普通程序還是實時程序而有很大不同。
二、程序間通訊模組
程序間通訊主要用於控制不同程序之間在使用者空間的同步、資料共用和交換。由於不同的使用者程序擁有不同的程序空間,因此程序間的通訊要藉助於核心的中轉來實現。一般情況下,當一個程序等待硬體操作完成時,會被掛起。當硬體操作完成,程序被恢復執行,而協調這個過程的就是程序間的通訊機制。
程序間通訊模組保證了Linux支援多種程序間通訊機制,包括管道、命名管道、訊息佇列、號誌和共用記憶體等。
三、記憶體管理模組
Linux的記憶體管理模組採用先進的虛擬儲存機制,實現對多程序的儲存管理。它提供了十分可靠的儲存保護措施,對程序賦予不同的許可權,使用者不能直接存取系統的程式和資料,保證了系統的安全性。同時,為每個使用者程序分配一個相互獨立的虛擬地址空間。
四、檔案系統模組
Linux 的檔案系統模組採用先進的虛擬檔案系統(VFS)技術,遮蔽了各種檔案系統的差別,為處理各種不同的檔案系統提供了統一的介面,支援多種不同的物理檔案系統達90多種。同時,Linux把各種硬體裝置看作一種特殊的檔案來處理,用管理檔案的方法管理裝置,非常方便、有效。
五、網路介面模組
Linux具有最強大的網路功能。網路介面模組通過通訊端(Socket)機制實現計算機之間的網路通訊,並採用網路層次模型提供對多種網路協定和網路硬體裝置的支援。
網路介面提供了對各種網路標準的實現和各種網路硬體的支援。網路介面一般分為網路協定和網路驅動程式。網路協定部分負責實現每一種可能的網路傳輸協定。網路裝置驅動程式則主要負責與硬體裝置進行通訊,每一種可能的網路硬體裝置都有相應的裝置驅動程式。
以上就是linux核心的五大模組分別是什麼的詳細內容,更多請關注TW511.COM其它相關文章!