成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux內(nèi)核體系簡介

系統(tǒng) Linux
現(xiàn)在讓我們從一個比較高的高度來審視一下 GNU/Linux 操作系統(tǒng)的體系結(jié)構(gòu)。您可以從兩個層次上來考慮操作系統(tǒng)......

1.Linux 內(nèi)核簡介

現(xiàn)在讓我們從一個比較高的高度來審視一下 GNU/Linux 操作系統(tǒng)的體系結(jié)構(gòu)。您可以從兩個層次上來考慮操作系統(tǒng),如圖 1 所示。

 GNU/Linux 操作系統(tǒng)的基本體系結(jié)構(gòu)


圖 1. GNU/Linux 操作系統(tǒng)的基本體系結(jié)構(gòu)

最上面是用戶(或應(yīng)用程序)空間。這是用戶應(yīng)用程序執(zhí)行的地方。用戶空間之下是內(nèi)核空間,Linux 內(nèi)核正是位于這里。

GNU C Library (glibc)也在這里。它提供了連接內(nèi)核的系統(tǒng)調(diào)用接口,還提供了在用戶空間應(yīng)用程序和內(nèi)核之間進行轉(zhuǎn)換的機制。這點非常重要,因為內(nèi)核和用戶空間的應(yīng)用程序使用的是不同的保護地址空間。每個用戶空間的進程都使用自己的虛擬地址空間,而內(nèi)核則占用單獨的地址空間。

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

在Linux 內(nèi)核中,包括了

#p#

進程管理(process management)

定時器(timer)

中斷管理(interrupt management)

內(nèi)存管理(memory management)

模塊管理(module management)

虛擬文件系統(tǒng)接口(VFS layer)

文件系統(tǒng)(file system)

設(shè)備驅(qū)動程序(device driver)

進程間通信(inter-process communication)

網(wǎng)絡(luò)管理(network management)

系統(tǒng)啟動(system init)等操作系統(tǒng)功能的實現(xiàn)。

2.Linux 內(nèi)核的主要子系統(tǒng)

現(xiàn)在使用圖2中的分類說明 Linux 內(nèi)核的主要組件。

Linux 內(nèi)核的一個體系結(jié)構(gòu)透視圖

圖 2. Linux 內(nèi)核的一個體系結(jié)構(gòu)透視圖

內(nèi)核是什么?

內(nèi)核實際上僅僅是一個資源管理器。不管被管理的資源是進程、內(nèi)存還是硬件設(shè)備,內(nèi)核負責(zé)管理并裁定多個競爭用戶對資源的訪問(既包括內(nèi)核空間也包括用戶空間)

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

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

進程管理

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

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

內(nèi)存管理

內(nèi)核所管理的另外一個重要資源是內(nèi)存。為了提高效率,如果由硬件管理虛擬內(nèi)存,內(nèi)存是按照所謂的內(nèi)存頁 方式進行管理的(對于大部分體系結(jié)構(gòu)來說都是 4KB)。Linux 包括了管理可用內(nèi)存的方式,以及物理和虛擬映射所使用的硬件機制。

不過內(nèi)存管理要管理的可不止 4KB 緩沖區(qū)。Linux 提供了對 4KB 緩沖區(qū)的抽象,例如 slab 分配器。這種內(nèi)存管理模式使用 4KB 緩沖區(qū)為基數(shù),然后從中分配結(jié)構(gòu),并跟蹤內(nèi)存頁使用情況,比如哪些內(nèi)存頁是滿的,哪些頁面沒有完全使用,哪些頁面為空。這樣就允許該模式根據(jù)系統(tǒng)需要來動態(tài)調(diào)整內(nèi)存使用。

為了支持多個用戶使用內(nèi)存,有時會出現(xiàn)可用內(nèi)存被消耗光的情況。由于這個原因,頁面可以移出內(nèi)存并放入磁盤中。這個過程稱為交換,因為頁面會被從內(nèi)存交換到硬盤上。內(nèi)存管理的源代碼可以在 ./linux/mm 中找到。

虛擬文件系統(tǒng)

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

VFS 在用戶和文件系統(tǒng)之間提供了一個交換層

圖 3. VFS 在用戶和文件系統(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)無關(guān))。這個緩存層通過將數(shù)據(jù)保留一段時間(或者隨即預(yù)先讀取數(shù)據(jù)以便在需要是就可用)優(yōu)化了對物理設(shè)備的訪問。緩沖區(qū)緩存之下是設(shè)備驅(qū)動程序,它實現(xiàn)了特定物理設(shè)備的接口。

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

網(wǎng)絡(luò)堆棧在設(shè)計上遵循模擬協(xié)議本身的分層體系結(jié)構(gòu)。回想一下,Internet Protocol (IP) 是傳輸協(xié)議(通常稱為傳輸控制協(xié)議或 TCP)下面的核心網(wǎng)絡(luò)層協(xié)議。TCP 上面是 socket 層,它是通過 SCI 進行調(diào)用的。

socket 層是網(wǎng)絡(luò)子系統(tǒng)的標準 API,它為各種網(wǎng)絡(luò)協(xié)議提供了一個用戶接口。從原始幀訪問到 IP 協(xié)議數(shù)據(jù)單元(PDU),再到 TCP 和 User Datagram Protocol (UDP),socket 層提供了一種標準化的方法來管理連接,并在各個終點之間移動數(shù)據(jù)。內(nèi)核中網(wǎng)絡(luò)源代碼可以在 ./linux/net 中找到。

設(shè)備驅(qū)動程序

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

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

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

【編輯推薦】

  1. 編譯Linux內(nèi)核的詳細過程
  2. Linux內(nèi)核SCSI IO子系統(tǒng)分析
  3. 如何成為一個Linux系統(tǒng)內(nèi)核開發(fā)者
責(zé)任編輯:趙寧寧 來源: chinaitlab
相關(guān)推薦

2011-01-10 16:45:45

2012-07-25 13:21:17

ibmdw

2010-06-18 14:58:42

Linux ACPI服

2010-06-18 15:22:14

Linux ACPI服

2009-12-25 15:23:18

Linux shell

2011-08-22 13:56:09

Linux虛擬

2022-11-10 20:43:57

數(shù)據(jù)治理數(shù)據(jù)湖

2009-02-25 10:34:57

異常處理體系Python

2013-09-09 16:46:38

Webkit內(nèi)核

2011-03-23 13:27:32

LAMP

2021-02-20 06:08:07

LinuxWindows內(nèi)核

2011-08-22 13:11:28

linux

2011-05-06 13:05:26

江山帝景海爾

2023-07-04 15:00:47

微服務(wù)架構(gòu)開發(fā)

2009-12-21 13:46:40

Fedora 8內(nèi)核

2010-03-02 09:17:32

Linux local

2017-08-03 16:00:43

2014-07-29 15:44:33

Linux內(nèi)核Crash

2018-05-18 09:07:43

Linux內(nèi)核內(nèi)存

2021-05-19 07:56:26

Linux內(nèi)核搶占
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩三级一区 | 婷婷毛片 | 亚洲一区二区三区四区在线观看 | 美女黄18岁以下禁止观看 | 国产免费a视频 | 伊人精品一区二区三区 | 黄色大片免费播放 | 国产成人精品综合 | 日韩精品一区二区三区视频播放 | 黄色欧美视频 | 亚洲精品福利视频 | 国产精品久久久久久久久动漫 | 性做久久久久久免费观看欧美 | 欧美激情精品久久久久久免费 | 精品久| www.亚洲区 | 国产精品美女一区二区 | 黄色国产在线视频 | 久久麻豆精品 | 日韩精品视频在线 | 羞羞色影院 | 欧美一页 | 国外成人在线视频 | 久久久久久高潮国产精品视 | 久久成人精品 | 国产一区二区自拍 | 欧美日韩精品免费观看 | 免费视频二区 | 午夜免费电影 | 午夜天堂精品久久久久 | 国产精品视频 | www.9191.com| 日韩一区精品 | 欧美黑人又粗大 | 欧美视频福利 | 日韩久久久久久 | 精品国产乱码久久久久久果冻传媒 | 亚洲视频在线播放 | 国产美女久久 | 在线观看国产91 | 欧美激情一区二区三区 |