chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux內核的發(fā)展簡史與系統(tǒng)層次結構

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-08-22 14:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

圖1說明Linux內核的發(fā)展簡史:

圖1 Linux內核發(fā)展簡史

圖2是Linux系統(tǒng)的層次結構:

圖2 Linux系統(tǒng)層次結構

最上面是用戶(或應用程序)空間。這是用戶應用程序執(zhí)行的地方。用戶空間之下是內核空間,Linux 內核正是位于這里。GNU C Library (glibc)也在這里。它提供了連接內核的系統(tǒng)調用接口,還提供了在用戶空間應用程序和內核之間進行轉換的機制。這點非常重要,因為內核和用戶空間的應用程序使用的是不同的保護地址空間。每個用戶空間的進程都使用自己的虛擬地址空間,而內核則占用單獨的地址空間。

Linux 內核可以進一步劃分成 3 層。最上面是系統(tǒng)調用接口,它實現(xiàn)了一些基本的功能,例如 read 和 write。系統(tǒng)調用接口之下是內核代碼,可以更精確地定義為獨立于體系結構的內核代碼。這些代碼是 Linux 所支持的所有處理器體系結構所通用的。在這些代碼之下是依賴于體系結構的代碼,構成了通常稱為 BSP(Board Support Package)的部分。這些代碼用作給定體系結構的處理器和特定于平臺的代碼。

Linux 內核實現(xiàn)了很多重要的體系結構屬性。在或高或低的層次上,內核被劃分為多個子系統(tǒng)。Linux 也可以看作是一個整體,因為它會將所有這些基本服務都集成到內核中。這與微內核的體系結構不同,后者會提供一些基本的服務,例如通信、I/O、內存和進程管理,更具體的服務都是插入到微內核層中的。每種內核都有自己的優(yōu)點,不過這里并不對此進行討論。

隨著時間的流逝,Linux 內核在內存和 CPU 使用方面具有較高的效率,并且非常穩(wěn)定。但是對于 Linux 來說,最為有趣的是在這種大小和復雜性的前提下,依然具有良好的可移植性。Linux 編譯后可在大量處理器和具有不同體系結構約束和需求的平臺上運行。一個例子是 Linux 可以在一個具有內存管理單元(MMU)的處理器上運行,也可以在那些不提供 MMU 的處理器上運行。Linux 內核的 uClinux 移植提供了對非 MMU 的支持。

圖3是Linux內核的體系結構:

圖3 Linux內核體系結構

Linux內核的主要組件有:系統(tǒng)調用接口、進程管理、內存管理、虛擬文件系統(tǒng)、網(wǎng)絡堆棧、設備驅動程序、硬件架構的相關代碼。

(1)系統(tǒng)調用接口

SCI 層提供了某些機制執(zhí)行從用戶空間到內核的函數(shù)調用。正如前面討論的一樣,這個接口依賴于體系結構,甚至在相同的處理器家族內也是如此。SCI 實際上是一個非常有用的函數(shù)調用多路復用和多路分解服務。在 ./linux/kernel 中您可以找到 SCI 的實現(xiàn),并在 ./linux/arch 中找到依賴于體系結構的部分。

(2)進程管理

進程管理的重點是進程的執(zhí)行。在內核中,這些進程稱為線程,代表了單獨的處理器虛擬化(線程代碼、數(shù)據(jù)、堆棧和 CPU 寄存器)。在用戶空間,通常使用進程 這個術語,不過 Linux 實現(xiàn)并沒有區(qū)分這兩個概念(進程和線程)。內核通過 SCI 提供了一個應用程序編程接口(API)來創(chuàng)建一個新進程(fork、exec 或 Portable Operating System Interface [POSIX] 函數(shù)),停止進程(kill、exit),并在它們之間進行通信和同步(signal 或者 POSIX 機制)。

進程管理還包括處理活動進程之間共享 CPU 的需求。內核實現(xiàn)了一種新型的調度算法,不管有多少個線程在競爭 CPU,這種算法都可以在固定時間內進行操作。這種算法就稱為 O(1) 調度程序,這個名字就表示它調度多個線程所使用的時間和調度一個線程所使用的時間是相同的。 O(1) 調度程序也可以支持多處理器(稱為對稱多處理器或 SMP)。您可以在 ./linux/kernel 中找到進程管理的源代碼,在 ./linux/arch 中可以找到依賴于體系結構的源代碼。

(3)內存管理

內核所管理的另外一個重要資源是內存。為了提高效率,如果由硬件管理虛擬內存,內存是按照所謂的內存頁 方式進行管理的(對于大部分體系結構來說都是 4KB)。Linux 包括了管理可用內存的方式,以及物理和虛擬映射所使用的硬件機制。不過內存管理要管理的可不止 4KB 緩沖區(qū)。Linux 提供了對 4KB 緩沖區(qū)的抽象,例如 slab 分配器。這種內存管理模式使用 4KB 緩沖區(qū)為基數(shù),然后從中分配結構,并跟蹤內存頁使用情況,比如哪些內存頁是滿的,哪些頁面沒有完全使用,哪些頁面為空。這樣就允許該模式根據(jù)系統(tǒng)需要來動態(tài)調整內存使用。為了支持多個用戶使用內存,有時會出現(xiàn)可用內存被消耗光的情況。由于這個原因,頁面可以移出內存并放入磁盤中。這個過程稱為交換,因為頁面會被從內存交換到硬盤上。內存管理的源代碼可以在 ./linux/mm 中找到。

(4)虛擬文件系統(tǒng)

虛擬文件系統(tǒng)(VFS)是 Linux 內核中非常有用的一個方面,因為它為文件系統(tǒng)提供了一個通用的接口抽象。VFS 在 SCI 和內核所支持的文件系統(tǒng)之間提供了一個交換層(請參看圖4)。

圖4 Linux文件系統(tǒng)層次結構

在 VFS 上面,是對諸如 open、close、read 和 write 之類的函數(shù)的一個通用 API 抽象。在 VFS 下面是文件系統(tǒng)抽象,它定義了上層函數(shù)的實現(xiàn)方式。它們是給定文件系統(tǒng)(超過 50 個)的插件。文件系統(tǒng)的源代碼可以在 ./linux/fs 中找到。文件系統(tǒng)層之下是緩沖區(qū)緩存,它為文件系統(tǒng)層提供了一個通用函數(shù)集(與具體文件系統(tǒng)無關)。這個緩存層通過將數(shù)據(jù)保留一段時間(或者隨即預先讀取數(shù)據(jù)以便在需要是就可用)優(yōu)化了對物理設備的訪問。緩沖區(qū)緩存之下是設備驅動程序,它實現(xiàn)了特定物理設備的接口。

(5)網(wǎng)絡堆棧

網(wǎng)絡堆棧在設計上遵循模擬協(xié)議本身的分層體系結構?;叵胍幌?,Internet Protocol (IP) 是傳輸協(xié)議(通常稱為傳輸控制協(xié)議或 TCP)下面的核心網(wǎng)絡層協(xié)議。TCP 上面是 socket 層,它是通過 SCI 進行調用的。socket 層是網(wǎng)絡子系統(tǒng)的標準 API,它為各種網(wǎng)絡協(xié)議提供了一個用戶接口。從原始幀訪問到 IP 協(xié)議數(shù)據(jù)單元(PDU),再到 TCP 和 User Datagram Protocol (UDP),socket 層提供了一種標準化的方法來管理連接,并在各個終點之間移動數(shù)據(jù)。內核中網(wǎng)絡源代碼可以在 ./linux/net 中找到。

(6)設備驅動程序

Linux 內核中有大量代碼都在設備驅動程序中,它們能夠運轉特定的硬件設備。Linux 源碼樹提供了一個驅動程序子目錄,這個目錄又進一步劃分為各種支持設備,例如 Bluetooth、I2C、serial 等。設備驅動程序的代碼可以在 ./linux/drivers 中找到。

(7)依賴體系結構的代碼

盡管 Linux 很大程度上獨立于所運行的體系結構,但是有些元素則必須考慮體系結構才能正常操作并實現(xiàn)更高效率。./linux/arch 子目錄定義了內核源代碼中依賴于體系結構的部分,其中包含了各種特定于體系結構的子目錄(共同組成了 BSP)。對于一個典型的桌面系統(tǒng)來說,使用的是 x86 目錄。每個體系結構子目錄都包含了很多其他子目錄,每個子目錄都關注內核中的一個特定方面,例如引導、內核、內存管理等。這些依賴體系結構的代碼可以在 ./linux/arch 中找到。

如果 Linux 內核的可移植性和效率還不夠好,Linux 還提供了其他一些特性,它們無法劃分到上面的分類中。作為一個生產(chǎn)操作系統(tǒng)和開源軟件,Linux 是測試新協(xié)議及其增強的良好平臺。Linux 支持大量網(wǎng)絡協(xié)議,包括典型的 TCP/IP,以及高速網(wǎng)絡的擴展(大于 1 Gigabit Ethernet [GbE] 和 10 GbE)。Linux 也可以支持諸如流控制傳輸協(xié)議(SCTP)之類的協(xié)議,它提供了很多比 TCP 更高級的特性(是傳輸層協(xié)議的接替者)。

Linux 還是一個動態(tài)內核,支持動態(tài)添加或刪除軟件組件。被稱為動態(tài)可加載內核模塊,它們可以在引導時根據(jù)需要(當前特定設備需要這個模塊)或在任何時候由用戶插入。

Linux 最新的一個增強是可以用作其他操作系統(tǒng)的操作系統(tǒng)(稱為系統(tǒng)管理程序)。目前,對內核進行了修改,稱為基于內核的虛擬機(KVM)。這個修改為用戶空間啟用了一個新的接口,它可以允許其他操作系統(tǒng)在啟用了 KVM 的內核之上運行。除了運行 Linux 的其他實例之外, Microsoft Windows也可以進行虛擬化。惟一的限制是底層處理器必須支持新的虛擬化指令。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1416

    瀏覽量

    41379
  • Linux
    +關注

    關注

    87

    文章

    11508

    瀏覽量

    213623
  • 內存管理
    +關注

    關注

    0

    文章

    168

    瀏覽量

    14548

原文標題:IBM developer帶你了解Linux內核體系結構

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    世界集成電路發(fā)展簡史

    世界集成電路發(fā)展簡史
    發(fā)表于 08-20 10:32

    帶你了解Linux內核體系結構

    圖1說明Linux內核發(fā)展簡史:圖1 Linux內核發(fā)展
    發(fā)表于 08-27 10:31

    Linux內核結構詳解

    ,打印警告或錯誤信息的過程,還有系統(tǒng)的調試例程等等。系統(tǒng)數(shù)據(jù)結構linux內核的實現(xiàn)中,有一些數(shù)據(jù)
    發(fā)表于 07-11 16:59

    Linux系統(tǒng)結構的組成

    內核、shell、文件系統(tǒng)和應用程序。內核、shell和文件系統(tǒng)一起形成了基本的操作系統(tǒng)結構,它
    發(fā)表于 07-26 08:14

    Linux內核源碼目錄結構

    Linux體系結構Linux內核結構Linux內核
    發(fā)表于 12-30 07:22

    Linux軟件系統(tǒng)層次關系

    1、Linux軟件系統(tǒng)層次關系軟件系統(tǒng)可分為:應用程序、庫、操作系統(tǒng)內核)、驅動程序以點亮L
    發(fā)表于 10-19 17:17

    嵌入式Linux系統(tǒng)進行層次劃分

    進行層次劃分。嵌入式Linux系統(tǒng)做模塊化處理就是可劃分為Bootloader(引導程序),Kernel(內核),fs(文件系統(tǒng)),Shel
    發(fā)表于 11-05 06:03

    VxWorks下設備驅動的內核結構層次

    VxWorks下設備驅動的內核結構層次
    發(fā)表于 10-26 10:32 ?9次下載
    VxWorks下設備驅動的<b class='flag-5'>內核</b><b class='flag-5'>結構層次</b>

    Linux內核配置系統(tǒng)詳解

    隨著 Linux 操作系統(tǒng)的廣泛應用,特別是 Linux 在嵌入式領域的發(fā)展,越來越多的人開始投身到 Linux
    發(fā)表于 11-01 15:45 ?4次下載

    Linux 內核數(shù)據(jù)結構:位圖(Bitmap)

    除了各種鏈式和樹形數(shù)據(jù)結構,Linux內核還提供了位圖接口。位圖在Linux內核中大量使用。下面的源代碼文件包含這些
    發(fā)表于 05-14 17:24 ?3627次閱讀

    Linux軟件系統(tǒng)層次關系

    1、Linux軟件系統(tǒng)層次關系 軟件系統(tǒng)可分為:應用程序、庫、操作系統(tǒng)內核)、驅動程序 以點
    發(fā)表于 10-19 17:11 ?1830次閱讀

    【嵌入式】構建嵌入式Linux系統(tǒng)(uboot、內核、文件系統(tǒng)

    嵌入式Linux系統(tǒng)知識架構及層次嵌入式Linux系統(tǒng)構成及啟動略析嵌入式Linux三劍客之ub
    發(fā)表于 10-20 18:20 ?42次下載
    【嵌入式】構建嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>(uboot、<b class='flag-5'>內核</b>、文件<b class='flag-5'>系統(tǒng)</b>)

    STM32MP157 Linux系統(tǒng)移植開發(fā)篇7:Linux內核目錄結構詳解

    Linux內核目錄結構Linux內核源代碼非常龐大,隨著版本的發(fā)展不斷增加。它使用目錄樹
    發(fā)表于 12-17 18:29 ?10次下載
    STM32MP157 <b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>移植開發(fā)篇7:<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>目錄<b class='flag-5'>結構</b>詳解

    Linux內核結構介紹

    通常情況下,Linux內核結構被認為包含以下11個主要層次。
    的頭像 發(fā)表于 04-14 11:59 ?1544次閱讀

    Linux內核如何使用結構體和函數(shù)指針?

    我將結合具體的Linux內核驅動框架代碼來展示Linux內核如何使用結構體和函數(shù)指針。
    的頭像 發(fā)表于 09-06 14:17 ?1380次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>如何使用<b class='flag-5'>結構</b>體和函數(shù)指針?