在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)核的發(fā)展簡(jiǎn)史與系統(tǒng)層次結(jié)構(gòu)

Q4MP_gh_c472c21 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-08-22 14:14 ? 次閱讀

圖1說(shuō)明Linux內(nèi)核的發(fā)展簡(jiǎn)史:

圖1 Linux內(nèi)核發(fā)展簡(jiǎn)史

圖2是Linux系統(tǒng)的層次結(jié)構(gòu):

圖2 Linux系統(tǒng)層次結(jié)構(gòu)

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

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

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

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

圖3是Linux內(nèi)核的體系結(jié)構(gòu):

圖3 Linux內(nèi)核體系結(jié)構(gòu)

Linux內(nèi)核的主要組件有:系統(tǒng)調(diào)用接口、進(jìn)程管理、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)堆棧、設(shè)備驅(qū)動(dòng)程序、硬件架構(gòu)的相關(guān)代碼。

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

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

(2)進(jìn)程管理

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

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

(3)內(nèi)存管理

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

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

虛擬文件系統(tǒng)(VFS)是 Linux 內(nèi)核中非常有用的一個(gè)方面,因?yàn)樗鼮槲募到y(tǒng)提供了一個(gè)通用的接口抽象。VFS 在 SCI 和內(nèi)核所支持的文件系統(tǒng)之間提供了一個(gè)交換層(請(qǐng)參看圖4)。

圖4 Linux文件系統(tǒng)層次結(jié)構(gòu)

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

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

網(wǎng)絡(luò)堆棧在設(shè)計(jì)上遵循模擬協(xié)議本身的分層體系結(jié)構(gòu)。回想一下,Internet Protocol (IP) 是傳輸協(xié)議(通常稱(chēng)為傳輸控制協(xié)議或 TCP)下面的核心網(wǎng)絡(luò)層協(xié)議。TCP 上面是 socket 層,它是通過(guò) SCI 進(jìn)行調(diào)用的。socket 層是網(wǎng)絡(luò)子系統(tǒng)的標(biāo)準(zhǔn) API,它為各種網(wǎng)絡(luò)協(xié)議提供了一個(gè)用戶(hù)接口。從原始幀訪(fǎng)問(wèn)到 IP 協(xié)議數(shù)據(jù)單元(PDU),再到 TCP 和 User Datagram Protocol (UDP),socket 層提供了一種標(biāo)準(zhǔn)化的方法來(lái)管理連接,并在各個(gè)終點(diǎn)之間移動(dòng)數(shù)據(jù)。內(nèi)核中網(wǎng)絡(luò)源代碼可以在 ./linux/net 中找到。

(6)設(shè)備驅(qū)動(dòng)程序

Linux 內(nèi)核中有大量代碼都在設(shè)備驅(qū)動(dòng)程序中,它們能夠運(yùn)轉(zhuǎn)特定的硬件設(shè)備。Linux 源碼樹(shù)提供了一個(gè)驅(qū)動(dòng)程序子目錄,這個(gè)目錄又進(jìn)一步劃分為各種支持設(shè)備,例如 Bluetooth、I2C、serial 等。設(shè)備驅(qū)動(dòng)程序的代碼可以在 ./linux/drivers 中找到。

(7)依賴(lài)體系結(jié)構(gòu)的代碼

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

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

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

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

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

    關(guān)注

    3

    文章

    1402

    瀏覽量

    40900
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11411

    瀏覽量

    212245
  • 內(nèi)存管理
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

    14407

原文標(biāo)題:IBM developer帶你了解Linux內(nèi)核體系結(jié)構(gòu)

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    帶你了解Linux內(nèi)核體系結(jié)構(gòu)

    圖1說(shuō)明Linux內(nèi)核發(fā)展簡(jiǎn)史:圖1 Linux內(nèi)核發(fā)展簡(jiǎn)
    發(fā)表于 08-27 10:31

    Linux內(nèi)核結(jié)構(gòu)詳解

    ,打印警告或錯(cuò)誤信息的過(guò)程,還有系統(tǒng)的調(diào)試?yán)痰鹊取?b class='flag-5'>系統(tǒng)數(shù)據(jù)結(jié)構(gòu)linux內(nèi)核的實(shí)現(xiàn)中,有一些數(shù)據(jù)結(jié)
    發(fā)表于 07-11 16:59

    Linux系統(tǒng)結(jié)構(gòu)的組成

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

    Linux內(nèi)核源碼目錄結(jié)構(gòu)

    Linux體系結(jié)構(gòu)Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核
    發(fā)表于 12-30 07:22

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

    1、Linux軟件系統(tǒng)層次關(guān)系軟件系統(tǒng)可分為:應(yīng)用程序、庫(kù)、操作系統(tǒng)內(nèi)核)、驅(qū)動(dòng)程序以點(diǎn)亮L
    發(fā)表于 10-19 17:17

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

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

    VxWorks下設(shè)備驅(qū)動(dòng)的內(nèi)核結(jié)構(gòu)層次

    VxWorks下設(shè)備驅(qū)動(dòng)的內(nèi)核結(jié)構(gòu)層次
    發(fā)表于 10-26 10:32 ?9次下載
    VxWorks下設(shè)備驅(qū)動(dòng)的<b class='flag-5'>內(nèi)核</b><b class='flag-5'>結(jié)構(gòu)層次</b>

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

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

    Linux 內(nèi)核數(shù)據(jù)結(jié)構(gòu):位圖(Bitmap)

    除了各種鏈?zhǔn)胶蜆?shù)形數(shù)據(jù)結(jié)構(gòu)Linux內(nèi)核還提供了位圖接口。位圖在Linux內(nèi)核中大量使用。下面的源代碼文件包含這些
    發(fā)表于 05-14 17:24 ?3562次閱讀

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

    1、Linux軟件系統(tǒng)層次關(guān)系 軟件系統(tǒng)可分為:應(yīng)用程序、庫(kù)、操作系統(tǒng)內(nèi)核)、驅(qū)動(dòng)程序 以點(diǎn)
    發(fā)表于 10-19 17:11 ?1782次閱讀

    【嵌入式】構(gòu)建嵌入式Linux系統(tǒng)(uboot、內(nèi)核、文件系統(tǒng)

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

    STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)篇7:Linux內(nèi)核目錄結(jié)構(gòu)詳解

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

    Linux內(nèi)核結(jié)構(gòu)介紹

    通常情況下,Linux內(nèi)核結(jié)構(gòu)被認(rèn)為包含以下11個(gè)主要層次
    的頭像 發(fā)表于 04-14 11:59 ?1428次閱讀

    Linux內(nèi)核如何使用結(jié)構(gòu)體和函數(shù)指針?

    我將結(jié)合具體的Linux內(nèi)核驅(qū)動(dòng)框架代碼來(lái)展示Linux內(nèi)核如何使用結(jié)構(gòu)體和函數(shù)指針。
    的頭像 發(fā)表于 09-06 14:17 ?1219次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>如何使用<b class='flag-5'>結(jié)構(gòu)</b>體和函數(shù)指針?
    主站蜘蛛池模板: 五月婷婷视频在线观看 | 天天做天天爱夜夜想毛片 | 天天操丝袜 | 丁香狠狠色婷婷久久综合 | 日韩免费三级电影 | 夜色资源站www国产在线观看 | 高清视频在线观看+免费 | 国产免费高清福利拍拍拍 | 你懂的网站在线播放 | 日本在线视频不卡 | 大象焦伊人久久综合网色视 | 黄视频网站免费 | 奇米影视亚洲狠狠色777不卡 | 男子扒开美女尿口做羞羞的事 | 国产一区二区高清在线 | 狠狠乱 | 欧美成人全部免费观看1314色 | 日本免费在线 | 免费看黄视频的网站 | 在线成人aa在线看片 | 国产精品福利久久 | 亚洲码欧美码一区二区三区 | 日本xxxx色视频在线观看免 | 亚洲图片综合区另类图片 | 亚洲一区欧美二区 | 久久久香蕉视频 | 超级香蕉97视频在线观看一区 | 黄色片免费看视频 | 99热在线获取最新地址 | 亚洲韩国欧美一区二区三区 | 天天干天天色天天 | 四虎影院在线视频 | 亚洲香蕉影视在线播放 | 精品少妇一区二区三区视频 | 3344在线 | 天天做天天爱天天干 | 老师别揉我胸啊嗯上课呢视频 | 亚洲成网 | 免费国产成人午夜私人影视 | 黄色日本网站 | 经典三级第一页 |