您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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內核有哪些模塊就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。