導航:首頁 > 操作系統 > linux內核子系統

linux內核子系統

發布時間:2022-07-22 14:57:23

1. linux內核的主要子系統

進程管理的重點是進程的執行。在內核中,這些進程稱為線程,代表了單獨的處理器虛擬化(線程代碼、數據、堆棧和 CPU寄存器)。在用戶空間,通常使用進程 這個術語,不過 Linux 實現並沒有區分這兩個概念(進程和線程)。內核通過 SCI 提供了一個應用程序編程介面(API)來創建一個新進程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函數),停止進程(kill、exit),並在它們之間進行通信和同步(signal 或者 POSⅨ 機制)。
進程管理還包括處理活動進程之間共享 CPU 的需求。內核實現了一種新型的調度演算法,不管有多少個線程在競爭 CPU,這種演算法都可以在固定時間內進行操作。這種演算法就稱為 O⑴ 調度程序,這個名字就表示它調度多個線程所使用的時間和調度一個線程所使用的時間是相同的。O⑴ 調度程序也可以支持多處理器(稱為對稱多處理器或 SMP)。您可以在 ./linux/kernel 中找到進程管理的源代碼,在 ./linux/arch 中可以找到依賴於體系結構的源代碼。 內核所管理的另外一個重要資源是內存。為了提高效率,如果由硬管理虛擬內存,內存是按照所謂的內存頁 方式進行管理的(對於大部分體系結構來說都是 4KB)。Linux 包括了管理可用內存的方式,以及物理和虛擬映射所使用的硬體機制。
不過內存管理要管理的可不止 4KB緩沖區。Linux 提供了對 4KB緩沖區的抽象,例如 slab 分配器。這種內存管理模式使用 4KB緩沖區為基數,然後從中分配結構,並跟蹤內存頁使用情況,比如哪些內存頁是滿的,哪些頁面沒有完全使用,哪些頁面為空。這樣就允許該模式根據系統需要來動態調整內存使用。
為了支持多個用戶使用內存,有時會出現可用內存被消耗光的情況。由於這個原因,頁面可以移出內存並放入磁碟中。這個過程稱為交換,因為頁面會被從內存交換到硬碟上。內存管理的源代碼可以在 ./linux/mm 中找到。 虛擬文件系統(VFS)是 Linux 內核中非常有用的一個方面,因為它為文件系統提供了一個通用的介面抽象。VFS 在 SCI 和內核所支持的文件系統之間提供了一個交換層。
VFS 在用戶和文件系統之間提供了一個交換層
在 VFS 上面,是對諸如 open、close、read 和 write 之類的函數的一個通用 API 抽象。在 VFS 下面是文件系統抽象,它定義了上層函數的實現方式。它們是給定文件系統(超過 50 個)的插件。文件系統的源代碼可以在 ./linux/fs 中找到。
文件系統層之下是緩沖區緩存,它為文件系統層提供了一個通用函數集(與具體文件系統無關)。這個緩存層通過將數據保留一段時間(或者隨即預先讀取數據以便在需要是就可用)優化了對物理設備的訪問。緩沖區緩存之下是設備驅動程序,它實現了特定物理設備的介面。

2. 用Win10中的Linux子系統是怎麼樣的體驗

用Win10中的Linux子系統是種很棒的體驗,沒想到Win10的Linux子系統這么高端。WSL提供了一個微軟開發的Linux兼容內核介面(不包含Linux代碼),來自Ubuntu的用戶模式二進制文件在其上運行。

該子系統不能運行所有Linux軟體,例如那些圖形用戶界面,以及那些需要未實現的Linux內核服務的軟體。不過,這可以用在外部X伺服器上運行的圖形X Window系統緩解。

此子系統起源於命運多舛的Astoria項目,其目的是允許Android應用運行在Windows 10 Mobile上。此功能組件從Windows 10 Insider Preview build 14316開始可用。

3. 怎麼學linux內核驅動

怎麼學linux內核驅動?1. 分享Linux內核學習和驅動開發的經驗。
內核學習
Linux 內核功能越來越完善,如果沒有充裕的時間,深入內核並不是很現實。所以建議先讀一本內核的書,
第一遍是讀,會讀的很迷糊;之後反省一下,然後再瀏覽一下;可以想像一個 OS 是如何運行的,這樣可以不
陷入 Linux 內核的細節;最後可以深入自己感興趣或者需要的那一子系統
推薦 《Linux Kernel Development》
即便是子系統,也是很龐大的。一個省力的方式是網上搜一些相關的文章,便於快速了解這個子系統的運作;
然後結合代碼,形成自己的認知,最後做一下總結。如果僅僅是快速了解某一子系統的運作,可以參考一些早期
代碼的註解書籍,再深入的時候看看最新的代碼實現
對內核的認知是一個反復的過程,一開始並不完善,可能需要反復糾正。不要陷入這種糾錯中;而是以後繼續
使用和學習過程中,發現了沒有弄清楚的地方再深入,畢竟 Linux 內核是不斷變化的
還有一個很好的方式是,從系統調用入手,現在這方面的數據不少,而且對系統調用的語義都有講解,這樣可以
間接了解 Linux 系統的一些概念。對系統調用熟悉了,可以根據系統調用的執行過程,來大體了解內核的一個
運作過程;但是跟蹤系統調用的時候要注意抓主線,現在內核系統很復雜,一些 code path 上可能會涉及多個
子系統,可以從名字上猜測它們是干什麼的,不需要深入,否則會發現精力完全被分散掉了
學習 Linux 內核,一個很重要的是抽象的能力,所謂的抽象這里僅僅是指分清介面和介面的實現。因為 Linux
內核子系統很多,有很多子系統相互滲透,這樣 code path 看上去很復雜。閱讀代碼的時候,為了排除干擾,
需要分清哪些是自己需要看的,哪些是其它子系統的介面,對於其它子系統的介面,先當作它們功能完善不會
出問題好了,這樣可以關注重點;打個比方,一個應用程序的代碼可能量很大,比如一個 apache 項目,它
包含很多組件,有時候閱讀代碼的時候會看到不同組件的 API,深入看相關組件實現並不現實,這時候分清主次
對於代碼的閱讀就很有幫助了,總不能看到了 malloc 就要先把它的實現弄清楚吧,系統調用多者呢

4. linux設備子系統有哪些

linux input子系統
linux輸入子系統
linux i2c子系統
linux內核子系統
linux 網路子系統

linux usb子系統
linux mtd子系統
linux音頻子系統
linux spi子系統
linux led子系統

5. 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代表的不是開發版,而是穩定版!

6. Linux網路子系統在發送數據包時,數據發送流程

從網路設備驅動程序的結構分析可知,Linux網路子系統在發送數據包時,會調用驅動程序提供的hard_start_transmit()函數,該函數用於啟動數據包的發送。在設備初始化的時候,這個函數指針需被初始化以指向設備的xxx_tx ()函數。網路設備驅動完成數據包發送的流程如下:
1)網路設備驅動程序從上層協議傳遞過來的sk_buff參數獲得數據包的有效數據和長度,將有效數據放入臨時緩沖區。
2)對於乙太網,如果有效數據的長度小於乙太網沖突檢測所要求數據幀的最小長度ETH ZLEN,則給臨時緩沖區的末尾填充0。
3)設置硬體的寄存器,驅使網路設備進行數據發送操作。
特別要強調對netif_ stop_queue()的調用,當發送隊列為滿或因其他原因來不及發送當前上層傳下來的數據包時,則調用此函數阻止上層繼續向網路設備驅動傳遞數據包。當忙於發送的數據包被發送完成後,在以TX結束的中斷處理中,應該調用netif_wake_queue ()喚醒被阻塞的上層,以啟動它繼續向網路設備驅動傳送數據包。當數據傳輸超時時,意味著當前的發送操作失敗或硬體已陷入未知狀態,此時,數據包發送超時處理函數xxx _tx _timeout ()將被調用。這個函數也需要調用由Linux內核提供的netif_wake _queue()函數以重新啟動設備發送隊列。

7. Linux內核由哪幾個子系統組成

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

8. linux內核的主要組成部分有哪些

一個完整的Linux內核一般由5部分組成,它們分別是內存管理、進程管理、進程間通信、虛擬文件系統和網路介面。 1、內存管理 內存管理主要完成的是如何合理有效地管理整個系統的物理內存,同時快速響應內核各個子系統對內存分配的請求。Linux內存...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(10)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處理器。

閱讀全文

與linux內核子系統相關的資料

熱點內容
網店美工pdf 瀏覽:445
一堆文件夾怎麼弄出來 瀏覽:743
博途如何編譯硬體 瀏覽:418
fortran程序pdf 瀏覽:504
電池消耗演算法 瀏覽:394
伺服器中斷連接怎麼處理 瀏覽:222
上世紀互聯網不發達程序員很難 瀏覽:841
語音識別android開源 瀏覽:762
地埋式垃圾壓縮中轉站 瀏覽:902
apachehttpdlinux 瀏覽:944
快遞員中通app預付款是什麼 瀏覽:843
java路徑轉義 瀏覽:857
keytool加密演算法 瀏覽:131
笑臉圖案的APP相機是什麼軟體 瀏覽:249
app軟體為什麼會被下架 瀏覽:981
從內存到硬碟的命令是 瀏覽:52
程序員的爸爸們的發型 瀏覽:123
魔獸世界傷害壓縮是怎麼壓的 瀏覽:976
壓縮機型號hp 瀏覽:959
配音虛弱的程序員 瀏覽:61