一、進程調度模組
(推薦教程:linux教程)
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核心的五大模組分別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!