www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 技術學院 > 技術前線
[導讀]Linux內(nèi)核是一個操作系統(tǒng)(OS)內(nèi)核,本質(zhì)上定義為類Unix。它用于不同的操作系統(tǒng),主要是以不同的Linux發(fā)行版的形式。Linux內(nèi)核是第一個真正完整且突出的免費和開源軟件示例。Linux 內(nèi)核是第一個真正完整且突出的免費和開源軟件示例,促使其廣泛采用并得到了數(shù)千名開發(fā)人員的貢獻。

Linux內(nèi)核是一個操作系統(tǒng)(OS)內(nèi)核,本質(zhì)上定義為類Unix。它用于不同的操作系統(tǒng),主要是以不同的Linux發(fā)行版的形式。Linux內(nèi)核是第一個真正完整且突出的免費和開源軟件示例。Linux 內(nèi)核是第一個真正完整且突出的免費和開源軟件示例,促使其廣泛采用并得到了數(shù)千名開發(fā)人員的貢獻。

Linux內(nèi)核?是操作系統(tǒng)的核心組件,作為開源軟件由Linus Torvalds于1991年創(chuàng)建,負責管理硬件資源并為應用程序提供基礎服務。

?Linux內(nèi)核的定義與起源?

Linux內(nèi)核是計算機操作系統(tǒng)最底層的核心程序,采用C語言編寫并遵循POSIX標準,具備類Unix特性。它由芬蘭程序員Linus Torvalds在1991年首次發(fā)布,并依托全球開發(fā)者社區(qū)協(xié)作維護,成為開源軟件領域的典范。??

?核心功能特性?

Linux內(nèi)核通過以下機制實現(xiàn)硬件與軟件的協(xié)同工作:

?進程管理?:采用層次化進程結構,通過調(diào)度算法分配CPU時間片,支持多任務并發(fā)執(zhí)行。???

?內(nèi)存管理?:提供虛擬內(nèi)存機制,實現(xiàn)進程間內(nèi)存隔離與共享,優(yōu)化物理內(nèi)存使用效率。??

?設備驅(qū)動?:抽象硬件操作細節(jié),支持超過80%的常見硬件設備的即插即用。??

?文件系統(tǒng)?:基于虛擬文件系統(tǒng)(VFS)架構,兼容ext4、XFS等數(shù)十種文件格式。??

?網(wǎng)絡協(xié)議棧?:內(nèi)置TCP/IP協(xié)議族,支撐互聯(lián)網(wǎng)通信基礎功能。??

Linux 內(nèi)核(英語:Linux kernel),是 Linux 操作系統(tǒng)的內(nèi)核,以 C 語言寫成,符合 POSIX 標準,以 GNU 通用公共許可證發(fā)布。Linux 最早是由芬蘭黑客林納斯·托瓦茲為嘗試在英特爾 x86 架構上提供自由免費的類 Unix 系統(tǒng)而開發(fā)的。該計劃開始于 1991 年,林納斯·托瓦茲當時在 Usenet 新聞組 comp.os.minix 登載帖子,這份著名的帖子標示著 Linux 計劃的正式開始。

在計劃的早期有一些 Minix 黑客提供了協(xié)助,而今天全球無數(shù)程序員正在為該計劃無償提供幫助。

技術上說 Linux 是一個內(nèi)核?!皟?nèi)核”指的是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務等功能的系統(tǒng)軟件。一個內(nèi)核不是一套完整的操作系統(tǒng)。一套基于 Linux 內(nèi)核的完整操作系統(tǒng)叫作 Linux 操作系統(tǒng),或是 GNU/Linux。

Linux 內(nèi)核是在 GNU 通用公共許可證第 2 版之下發(fā)布的(加上一些非自由固件、blob 與各種非自由許可證)。

貢獻者遍布世界各地,日常開發(fā)在 Linux 內(nèi)核郵件列表。

源代碼

一般情況下 Linux 內(nèi)核源代碼位于 /usr/src/linux 目錄下。

/include子目錄包含了建立內(nèi)核代碼時所需的大部分包含文件,這個模塊利用其他模塊重建內(nèi)核。/init 子目錄包含了內(nèi)核的初始化代碼,這是內(nèi)核工作的開始的起點。/arch 子目錄包含了所有硬件結構特定的內(nèi)核代碼。如:i386,alpha/drivers 子目錄包含了內(nèi)核中所有的設備驅(qū)動程序,如塊設備和SCSI設備。/fs 子目錄包含了所有的文件系統(tǒng)的代碼。如:ext2,vfat等。/net 子目錄包含了內(nèi)核的連網(wǎng)代碼。/mm 子目錄包含了所有內(nèi)存管理代碼。/ipc 子目錄包含了進程間通信代碼。/kernel 子目錄包含了主內(nèi)核代碼。內(nèi)核程序

編譯完成新內(nèi)核后,會生成幾個文件,這些文件是內(nèi)核啟動所需要的,這里簡單介紹一下。

vmlinux,編譯出來的最原始的內(nèi)核文件,沒有壓縮,位于源碼根目錄下。該內(nèi)核文件不能用來啟動系統(tǒng)。

vmlinuz,這個就是我們要引導的內(nèi)核,它一般是一個鏈接文件,位于根目錄下。真正的文件位于/boot 文件夾下。z 表示壓縮的內(nèi)核,vm 表示 virtual memory 的意思。linux 支持虛擬內(nèi)存,可利用硬盤空間作為虛擬內(nèi)存使用。在編譯內(nèi)核時,通過 make zImage 或 make bzImage 生成 zImage 或 bzImage 原始壓縮內(nèi)核文件,這些內(nèi)核文件位于 /usr/src/linux-2.6.23.9/arch/i386/boot 目錄下;接著我們會把它拷貝到 /boot 目錄下并改名為 vmlinuz;最后在根目錄下創(chuàng)建一個到該文件的同名鏈接文件。bzImage 表示 big zImage 的意思,zImage 是老式的內(nèi)核文件格式,在新的內(nèi)核版本中已不使用了,現(xiàn)在生成的內(nèi)核是 bzImage 格式的內(nèi)核文件。這兩種內(nèi)核文件的區(qū)別是,zImage 解壓縮內(nèi)核到低端內(nèi)存中(第一個640K),bzImage 解壓縮內(nèi)核到高端內(nèi)存中(1M以上)

這兩個內(nèi)核文件都是使用 gzip 軟件壓縮的,但文件頭部內(nèi)嵌有 gzip 解壓縮代碼,能在啟動時自動解壓縮內(nèi)核。使用 gzip 是不能正常解壓內(nèi)核的。

在源碼根目錄生成的 vmlinux 是一個沒有壓縮的內(nèi)核文件。

如果在 /boot 目錄下存在多個版本的內(nèi)核文件,則可用 vmlinuz-xxxx 的方式命名。但根目錄下的 vmlinuz 鏈接文件名一般不變。

initrd-x.x.x.img,initrd 是"initial ramdisk"的簡寫。作用是在內(nèi)核引導前加載相應的硬件模塊,為內(nèi)核引導做準備。比如,使用的是 scsi 硬盤,而內(nèi)核 vmlinuz 中并沒有這個 scsi 硬件的驅(qū)動,那么在裝入 scsi 模塊之前,內(nèi)核不能加載根文件系統(tǒng),但 scsi 模塊存儲在根文件系統(tǒng)的/lib/modules 下。為了解決這個問題,可以引導一個能夠讀實際內(nèi)核的 initrd 內(nèi)核并用 initrd 修正 scsi 引導問題。initrd 可使用 mkinitrd 工具創(chuàng)建。

System.map,內(nèi)核符號映射文件,位于/boot 目錄下,與內(nèi)核名要對應。內(nèi)核編譯完成后,在源碼根目錄下就會生成一個 System.map 文件。我們要把它拷貝到/boot 目錄下并改成相關的名稱。如內(nèi)核名為 vmlinuz-2.6.23.9,則這個內(nèi)核符號映射文件就應該命名為 System.map-2.6.23.9。

運行空間

Linux 系統(tǒng)由用戶空間和內(nèi)核空間兩部分組成。

內(nèi)核空間與用戶空間是程序執(zhí)行的兩種不同狀態(tài),通過系統(tǒng)調(diào)用和硬件中斷能夠完成從用戶空間到內(nèi)核空間的轉(zhuǎn)移。

用戶空間分為:

User Applications(用戶應用程序)GNU C Library (glibc 即 c 運行庫)內(nèi)核空間分為:

System Call Interface(系統(tǒng)調(diào)用接口)Kernel(內(nèi)核)Architecture Dependent Kernel Code(架構體系內(nèi)核代碼)子系統(tǒng)

Linux內(nèi)核主要由五個子系統(tǒng)組成:進程調(diào)度,內(nèi)存管理,虛擬文件系統(tǒng),網(wǎng)絡接口,進程間通信。

進程調(diào)度(SCHED):控制進程對CPU的訪問。當需要選擇下一個進程運行時,由調(diào)度程序選擇最值得運行的進程??蛇\行進程實際上是僅等待CPU資源的進程,如果某個進程在等待其它資源,則該進程是不可運行進程。Linux使用了比較簡單的基于優(yōu)先級的進程調(diào)度算法選擇新的進程。

內(nèi)存管理(MM):允許多個進程安全的共享主內(nèi)存區(qū)域。Linux 的內(nèi)存管理支持虛擬內(nèi)存,即在計算機中運行的程序,其代碼,數(shù)據(jù),堆棧的總量可以超過實際內(nèi)存的大小,操作系統(tǒng)只是把當前使用的程序塊保留在內(nèi)存中,其余的程序塊則保留在磁盤中。必要時,操作系統(tǒng)負責在磁盤和內(nèi)存間交換程序塊。內(nèi)存管理從邏輯上分為硬件無關部分和硬件有關部分。硬件無關部分提供了進程的映射和邏輯內(nèi)存的對換;硬件相關的部分為內(nèi)存管理硬件提供了虛擬接口。

虛擬文件系統(tǒng)(VFS):隱藏了各種硬件的具體細節(jié),為所有的設備提供了統(tǒng)一的接口,VFS提供了多達數(shù)十種不同的文件系統(tǒng)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設備驅(qū)動程序。邏輯文件系統(tǒng)指 Linux 所支持的文件系統(tǒng),如 ext2,fat 等,設備驅(qū)動程序指為每一種硬件控制器所編寫的設備驅(qū)動程序模塊。

網(wǎng)絡接口(NET):提供了對各種網(wǎng)絡標準的存取和各種網(wǎng)絡硬件的支持。網(wǎng)絡接口可分為網(wǎng)絡協(xié)議和網(wǎng)絡驅(qū)動程序。網(wǎng)絡協(xié)議部分負責實現(xiàn)每一種可能的網(wǎng)絡傳輸協(xié)議。網(wǎng)絡設備驅(qū)動程序負責與硬件設備通訊,每一種可能的硬件設備都有相應的設備驅(qū)動程序。

進程間通訊(IPC):支持進程間各種通信機制。處于中心位置的進程調(diào)度,所有其它的子系統(tǒng)都依賴它,因為每個子系統(tǒng)都需要掛起或恢復進程。一般情況下,當一個進程等待硬件操作完成時,它被掛起;當操作真正完成時,進程被恢復執(zhí)行。例如,當一個進程通過網(wǎng)絡發(fā)送一條消息時,網(wǎng)絡接口需要掛起發(fā)送進程,直到硬件成功成功地完成消息的發(fā)送,當消息被成功的發(fā)送出去以后,網(wǎng)絡接口給進程返回一個代碼,表示操作的成功或失敗。其他子系統(tǒng)以相似的理由依賴于進程調(diào)度。

?架構設計特點?

Linux采用?單內(nèi)核(Monolithic Kernel)?架構設計,具有以下技術優(yōu)勢:

所有核心服務運行在內(nèi)核空間,避免頻繁上下文切換帶來的性能損耗。

通過模塊化設計實現(xiàn)動態(tài)加載驅(qū)動和功能擴展,平衡性能與靈活性。??

支持從嵌入式設備到超級計算機的跨平臺運行,涵蓋ARM、x86等多種指令集架構。??

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀
關閉