Linux内核初探3
?1.內核的任務
?內核:充當底層的驅動程序,應用程序只與內核有聯系,內核是應用程序的所知道的層次結構中最底層的,也是資源管理程序,也是一種庫,提供了一組面向系統的命令。
?2.實現策略
? 微內核(中央內核)
? 宏內核(構建系統內核的傳統方法)
3.內核的組成部分
? 用戶空間:應用程序,C庫,系統調用。
? 內核空間:核心內核與設備驅動程序,硬件
4.進程,進程切換與調度
? 各個進程都在CPU的虛擬內存中分配地址空間,互相并不干涉。
? 兩個創建進程的機制:fork()函數與exec( )函數。
fork()函數:可以創建當前進程的一個副本。將內存復制操作延遲到父進程或子進程向某個內存頁面寫入數據之前,在只讀訪問的情況下父進程可以共用一個內存頁。
例如(瀏覽器窗口的打開)
exec()函數:將一個新程序加載到當前進程的內存中打開執行,舊程序的內存頁將刷出,其內容將替換為新的數據,開始新的進程。
5.線程
? 進程并不是內核支持的唯一一種程序執行進程,有重量級進程和線程兩種,與主程序并行運行的程序函數或例程。
Linux中用CLone方法創建線程,類似于Fork,但是啟用了精確的檢查,來確認哪些資源與父進程共享,哪些資源為線程所獨立創建。這種細粒度的資源分配擴展了一搬的線程概念,在一定的程度上允許線程與進程的連續轉換。
6.命名空間
? 傳統的Linux使用許多全局量,例如進程ID。系統中的每一個進程都有一個唯一標識符(ID)啟用命名空間之后,以前的全局資源現在具有不同分組。每組命名空間可以包含一個特定的PID集合。
例如:虛擬主機供應商利用容器的命名空間來建立系統的多個示圖。從容器內部看來這是一個完整的Linux系統。
7.地址空間
? 空間地址的最大長度與實際可用的物理內存數量無關。因此被稱為虛擬地址空間,從系統中每個進程的角度來看,地址空間中只有自身一個進程而無法感知到其他進程的存在。
Linux將虛擬地址空間劃分為兩部分,分別稱為內核空間和用戶空間。
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
轉載于:https://www.cnblogs.com/zmrlinux/p/4921454.html
總結
以上是生活随笔為你收集整理的Linux内核初探3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【译】《Understanding EC
- 下一篇: 【转】linux之fsck命令