當前位置:首頁 » 操作系統 » linux內核的子系統

linux內核的子系統

發布時間: 2023-04-14 17:01:20

A. linux內核進程有幾個系統

Linux內核主要由五個子系統組成:進程調度,內存管理,虛擬文件系統,網路介面,進程間通信。
1.進程調度(SCHED):控制進程對CPU
訪問。當需要選擇下一個進程運行時,由調度程序選擇最值得運行的進程。可運行進程實際上是僅等待CPU資源的進程,如果某個進程在等待其它資源,則該進
程是不可運行進程。Linux使用了比較簡單的基於轎和簡優先順序的進程調度演算法選擇新的進程。
2.內存管理(MM)允許多個進程安全的
共享主內存區域。Linux
的內存管理支持虛擬內存,即在計算機中運行的程序,其代碼,數據,堆棧的總量可以超過實際內存的大閉褲小,操作系統只是把當前使用的程序塊保留在內存中,其餘
的程序塊則保留在磁碟中。必要時,操作系統負責在磁碟和內存間交換程序塊。內存管理從邏輯上分為硬體無關部分和硬體有關部分。硬體無關部分提供了進程的映
射和邏輯內存的對換;硬體相關的部分為內存管理硬體提供了虛擬介面。
3.虛擬文件系統
(Virtual File
System,VFS)隱藏了各種硬體的具體細節,為所有的設備提供了統一的介面,VFS提供了多達數十種不同的文件系統。虛擬文件系統可以分為邏輯文件
系統和設備驅動程序。邏輯文件系統指Linux所支持的文件系統,如ext2,fat等,設備驅動程序指為每一種硬體控制器所編寫的設備驅動程序模塊。
4.網路介面(NET)提供了對各種網路標準的存取棚世和各種網路硬體的支持。網路介面可分為網路協議和網路驅動程序。網路協議部分負責實現每一種可能的網路傳輸協議。網路設備驅動程序負責與硬體設備通訊,每一種可能的硬體設備都有相應的設備驅動程序。
5.進程間通訊(IPC) 支持進程間各種通信機制。

B. 內核分為哪四個子系統

進程管理系統、內宏渣存管理系統、I/O管理系統和文件管理系統。但是這些所謂的子系統是人為地劃分的,實際上Linux內核的本質就是一個二進制文件。有關理解Linux內核是什源岩么的內容,在黑馬程序員員社區都可以找蔽裂悄到,還有視頻講解,對話框就可以直接領取。

C. linux內核主要由哪幾個部分組成

一個完整的Linux內核一般由5部分組成,它們分別是內存管理、進程管理、進程間通信、虛擬文件系統和網路介面。

1、內存管理
內存管理主要完成的是如何合理有效地管理整個系統的物理內存,同時快速響應內核各個子系統對內存分配的請求。

Linux內存管理支持虛擬內存,而多餘出的這部分內存就是通過磁碟申請得到的,平時系統只把當前運行的程序塊保留在內存中,其他程序塊則保留在磁碟中。在內存緊缺時,內存管理負責在磁碟和內存間交換程序塊。

2、進程管理
進程管理主要控制系統進程對CPU的訪問。當需要某個進程運行時,由進程調度器根據基於優先順序的調度演算法啟動新的進程。:Linux支持多任務運行,那麼如何在一個單CPU上支持多任務呢?這個工作就是由進程調度管理來實現的。

在系統運行時,每個進程都會分得一定的時間片,然後進程調度器根據時間片的不同,選擇每個進程依次運行,例如當某個進程的時間片用完後,調度器會選擇一個新的進程繼續運行。

由於切換的時間和頻率都非常的快,由此用戶感覺是多個程序在同時運行,而實際上,CPU在同一時間內只有一個進程在運行,這一切都是進程調度管理的結果。

3、進程間通信
進程間通信主要用於控制不同進程之間在用戶空間的同步、數據共享和交換。由於不用的用戶進程擁有不同的進程空間,因此進程間的通信要藉助於內核的中轉來實現。

一般情況下,當一個進程等待硬體操作完成時,會被掛起。當硬體操作完成,進程被恢復執行,而協調這個過程的就是進程間的通信機制。

4、虛擬文件系統
Linux內核譽衫鉛中的虛擬文件系統用一個通用的文件模型表示了各種不同的文件系統,這個文件模型屏蔽了很多具體文件系統的差異,使Linux內核支持很多不同的文件系統。

這個文件系統可以分為邏輯文件系統和設備驅動程序:邏輯文件系統指Linux所支持的文件系統,例如ext2、ext3和fat等;設備驅動程序指為每一種硬體控制器所編寫的設備驅動程序模塊。

5、網路介面
網路介面提供了對各種網路標準的實現和各種網路硬體的支持。網路介面一般分為網路協議慶好和網路驅動程序。網路協議部分負責實現每一種可能的網路傳輸協議。

網路設備驅動程序則主要負責與硬體設備進行通信,每一種可能的網路硬體設備都有相應的設備驅動程序。

(3)linux內核的子系統擴展閱讀

Linux 操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:UNIX操作系統、MINIX操作系統、GNU計劃、POSIX標准和Internet 網路。

1981 年IBM公司推出微型計算機IBM PC。

1991年,GNU計劃已經開發出了許多工具軟體,最受期盼的GNU C編譯器已經出現,GNU的操作系統核心HURD一直處於實驗階段,沒有任何可用性,實質上也沒能開發出完整的GNU操作系統,但是GNU奠定了Linux用戶基礎和開發環境。

1991年初,林納斯·托瓦茲開始在一台386sx兼容微機上學習minix操作系統。1991年4月,林納斯·托瓦茲開始醞釀並著手編制自己的操作系統。

1991 年4 月13 日在comp.os.minix 上發布說自己已經成功地將bash 移植到了minix 上,而且已經愛不釋手、不能離開這個shell軟體了。

1993年,大約有100餘名程序員參與了Linux內核代碼編寫/修改工作,其中核心組由5人組成,此時Linux 0.99的代碼大約有十萬行,用戶大約有10萬左右。

1994年3月,Linux1.0發布,代碼量17萬行,當時是按照完全自由免費的協議發布,隨後正式採用GPL協議。

1995年1月,Bob Young創辦了RedHat(小紅帽),以GNU/Linux為核心,集成了400多個源代碼開放的程序模塊,搞出了一種冠以品牌的Linux,即RedHat Linux,稱為Linux"發行版",在市場上出售。這在經營模式上是一種創舉。

2001年1月,Linux 2.4發布,它進一步地提升了SMP系統的擴展性,同時它也集成了很多用於支持桌面系統的特性:USB,PC卡(PCMCIA)的支持,內置的即插即用,等等功能。

2003年12月,Linux 2.6版內核發布,相對於2.4版內核2.6在對系統的支持都有很大的變化。

2004年的第1月,SuSE嫁到了Novell,SCO繼續頂著罵名四處強行「塌棚化緣」, Asianux, MandrakeSoft也在五年中首次宣布季度贏利。3月,SGI宣布成功實現了Linux操作系統支持256個Itanium 2處理器。

D. linux內核分為哪四個子系統

應該是五個子系統:進程調度,內存管理螞悔野,虛擬文件系統,網路介面,進程間通信。

E. 最詳盡教程完整介紹-Windows 的 Linux 子系統-WSL1&WSL2

必須啟用「適用於 Linux 的 Windows 子系統」可選功能並重啟,然後才能在 Windows 上運行 Linux 發行版。

以管理員運行Powershell(開啟WSL,如已開啟可跳過)

WSL 1 和 WSL 2 之間的主要區別在於,在託管 VM 內使用實際的 Linux 內核、支持完整的系統調用兼容性以及跨 Linux 和 Windows 操作系統的性能。

WSL2相比WSL1來說可以完美支持Docker。與WSL1的模擬Linux API不同的是,WSL2採用在Hyper-V虛擬機中運行的方案。可以說WSL2和原汁原味的Linux已經十分接近

不支持Docker的守護進程,但您可以使用 Docker CLI 連接到通過 Docker for Windows 或您創建的任何其他VM 運行的遠程Docker守護進程

不能完全兼容systemctl, systemd等等,IO速度相對原生Linux也是大打折扣,在編譯和解壓方面可以很深體會到。畢竟不是真正的Linux,而是掛在Windows NT內核之上的仿Linux 系統

由於WSL 還不是原生的Linux,所以需要藉助 Docker for Windows 來實現Docker(Docker for Windows 是基於Hyper-V 技術)

另外一種方式是,在WSL1中安裝docker 客戶端,連接 docker server, 來解決在WSL1上使用docker 的問題。(PS: Win10 的Linux 子系統是裝不了 docker (服務端)的,但是可以安裝客戶端)

參考

WSL2 是第二代 WSL,包含在2020年5月正式發布 Windows 10 v2004 版中。相比第一代,新的 WSL2 重新設計了架構,使用真正的 Linux 內核,幾乎具有 Linux 的所有完整功能。啟用WSL2的 Linux 系統啟動時間非常快,內存佔用很少,並且,WSL 2 還可以直接原生運行 Docker,VS Code 編輯器還有 Remote-WSL 插件,相對於完整的 linux 虛擬機只是不支持 systemctl、systemd,不能直接運行圖形桌面。Windows 也越來越向虛擬平台靠攏,Windows NT 內核和 Linux 內核都是運行在虛擬平台之上的,是平級的

如果發現VERSION為1,說明Ubuntu運行在WSL1下,可以升級到 WSL2。同樣,WSL2也可以降級到WSL1。
wsl -l -v #查看已安裝Linux版本和名稱,完整命令格式:wsl --list --verbose

具體步驟參考 : https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

安裝 WSL 2 之前,必須啟用「虛擬機平台」可選功能

wsl --set-version Ubuntu 2 #升級到WSL2,其中 Ubuntu 是已經安裝的Linux名稱,命令格式:wsl --set-version <Distro> <Version>

啟用WSL後,通過 wsl$ 可以訪問WSL文件

最初的WSL是在Windows之上模擬Linux內核,但是Windows和Linux之間存在如此基本的差異,以至於某些事情不可能以與本機Linux相同的行為實現,這意味著不可能直接在 WSL中運行 Docker Engine 和Kubernetes
在WSL1中,Docker Desktop通過Hyper-V虛擬機去運行docker環境的

升級到WSL2 之後, Docker Desktop 可以直接用 WSL2,直接運行在Linux 內核上了

通過如下設置,Docker Desktop就和WSL2分發版本進行了集成,無需在WSL中安裝docker; 當然,也可以選擇不與Docker Desktop集成,直接在WSL 中運行docker 容器。

啟用WSL後,docker運行數據都在WSL發行版中,文件位置都只能由WSL管理

安裝docker後,docker會自動創建2個發行版:

WSL發行版默認都是安裝在C盤,在%LOCALAPPDATA%/Docker/wsl目錄
docker的運行數據、鏡像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中

通過 WSL 2 集成,您仍然可以體驗到與 Windows 的無縫集成,但在 WSL 中運行的 Linux 程序也可以執行相同的操作。這對於從事面向 Linux 環境的項目或為 Linux 量身定製的構建過程的開發人員產生了巨大影響。不再需要維護 Linux 和 Windows 構建腳本!例如,Docker 的開發人員現在可以在 Windows 上的 Linux Docker 守護程序上工作,使用與 Linux 計算機上的開發人員相同的工具和腳本集:

註:WSL2 Docker最爽的地方是和宿主機Win10共享network,我們在宿主機Win10使用localhost加埠號就可以訪問Docker中對應container中的服務,十分方便

wsl #啟動
wsl --shutdown #關閉所有正在運行的 Linux 和 WSL 2

啟動 WSL2 之後,會在任務管理器中發現多了一個 虛擬機工作線程

訪問wsl 文件

卸載發行版
有時候某個Linux發行版不再使用,或者是環境被搞壞需要重裝,這時候我們可以卸載掉這個Linux發行版。方法如下。

F. linux系統內核數據

正如圖中看到的一樣,存在著兩種WiFi設備,具體是哪一類要看IEEE802.11標準的MLME如卜汪何實現。



如果直接通過硬體實現,那麼設備就是硬MAC(fullMAC)設備;如果通過軟體的方式實現,那麼設備就是軟MAC(softMAC)設備。現階段大部分無線設備都是軟體實現的軟MAC設備。


通常我們把Linux內核無線子系統看成兩大塊:cfg80211和mac80211,它們連通內核其他模塊和用戶空間的應用程序。


特別指出,cfg80211在內核空間提供配置管理服務,內核與應用層通過nl80211實現配置管理介面。需要記住的是,


硬MAC設備和軟MAC設備都需要cfg80211才能工作。而mac80211隻是一個驅動API,它只支持軟體實現的軟MAC設備。


接下來,我們主要關注軟MAC設備。


Linux內核無線子系統統一各種WiFi設備,並處理OSI模型中最底層的MAC、PHY兩層。


若進一步劃分,MAC層可以分為MAC高層和MAC底層。前者負責管理MAC層無線網路的探測發現、身份認證、關聯等;


後者實現MAC層如ACK等緊急操作。大部分情況下,硬體(如無線適配器)處理大部分的PHY層以鍵弊型及MAC底層操作。Linux子系統實現大部分的MAC高層回調函數。


2模塊間介面


從圖一中我們可以看出,各個模塊之間分界線很清晰,並且模塊間相互透明不可見。模塊之間一般不會相互影響。


舉個例子,我們在WiFi設備驅動做修改(如,打補丁、添加新的WiFi驅動等),這些變更並不會影響到mac80211模塊,


所以我們根本不用改動mac80211的代碼。再如,昌平鎮北大青鳥建議添加一個新的網路協議理論上是不用修改套接字層以及設備無關層代碼。一般情況下,內核通過一系列的函數稿猜指針實現各層之間相互透明。


G. linux內核模塊不屬於linux的子系統

終端山檔管理。Linux是"單塊內核「(monolithic)的操作系返唯咐統是模塊化組成的,允許內核在運行時動態地向其中插入或從中刪除代碼,linux內核模塊終端管理漏純不屬於linux的子系統。

H. Linux內核分哪幾個子系統

Linux是一個一體化內核(monolithic kernel)系統。「內核」指的是一個提供硬體抽象層、磁碟及文件系統控制、多任務等功能的系統軟體。一個內核不是一套完整的操作系統。一套基於Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。設備驅動程序可以完全訪問硬體。Linux內的設備驅動程序可以方便地以模塊化(molarize)的形式設置,並在系統運行期間可直接裝載或卸載。

Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信,以及系統的初始化(引導)、系統調用等。
版本號
Linux內核使用三種不同的版本編號方式。
第一種方式用於1.0版本之前(包括1.0)。第一個版本是0.01,緊接著是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之後的1.0。
第二種方式用於1.0之後到2.6,數字由三部分「A.B.C」,A代表主版本號,B代表次主版本號,C代表較小的末版本號。只有在內核發生很大變化時(歷史上只發生過兩次,1994年的1.0,1996年的2.0),A才變化。可以通過數字B來判斷Linux是否穩定,偶數的B代表穩定版,奇數的B代表開發版。C代表一些bug修復,安全更新,新特性和驅動的次數。以版本2.4.0為例,2代表主版本號,4代表次版本號,0代表改動較小的末版本號。在版本號中,序號的第二位為偶數的版本表明這是一個可以使用的穩定版本,如2.2.5,而序號的第二位為奇數的版本一般有一些新的東西加入,是個不一定很穩定的測試版本,如2.3.1。這樣穩定版本來源於上一個測試版升級版本號,而一個穩定版本發展到完全成熟後就不再發展。
第三種方式從2004年2.6.0版本開始,使用一種「time-based」的方式。3.0版本之前,是一種「A.B.C.D」的格式。七年裡,前兩個數字A.B即「2.6」保持不變,C隨著新版本的發布而增加,D代表一些bug修復,安全更新,添加新特性和驅動的次數。3.0版本之後是「A.B.C」格式,B隨著新版本的發布而增加,C代表一些bug修復,安全更新,新特性和驅動的次數。第三種方式中不再使用偶數代表穩定版,奇數代表開發版這樣的命名方式。舉個例子:3.7.0代表的不是開發版,而是穩定版!

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:335
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:942
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:802
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:510
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371