国产午夜福利在线观看红一片,久久精品国产再热青青青,又硬又粗又大一区二区三区视频,中文字幕乱码免费,久久超碰97文字幕 ,中国精学生妹品射精久久

最新更新最新專題

您的位置:首頁 > ppt下載 > PPT課件 > 儀器設備PPT > linux內核情景分析PPT

linux內核情景分析PPT下載

素材大。
247.50 KB
素材授權:
免費下載
素材格式:
.ppt
素材上傳:
ppt
上傳時間:
2018-03-08
素材編號:
183404
素材類別:
儀器設備PPT

素材預覽

linux內核情景分析PPT

這是一個關于linux內核情景分析PPT,包括了基本知識,Linux內核的子系統(tǒng),Linux內核代碼的工程結構,內核編譯系統(tǒng),小結等內容,第4章 解析Linux內核內核是操作系統(tǒng)的核心,通常說的Linux是指Linux操作系統(tǒng)的內核,是一組系統(tǒng)管理軟件的集合。Linux內核是目前最流行的開源操作系統(tǒng)之一,由于其代碼的高度開放性,越來越多的人參與到Linux內核的研究和開發(fā)中。Linux內核的功能也在不斷提高,性能在不斷改進。操作系統(tǒng)內核是軟件開發(fā)領域比較深的技術點,需要結合軟硬件知識才能深入理解。本章由淺入深講解Linux內核,帶領讀者進入嵌入式開發(fā)比較深入的領域,主要內容如下:如何獲取Linux內核代碼 Linux內核功能解析 Linux內核代碼布局 Linux內核鏡像結構 4.1 基本知識 Linux內核是Linux操作系統(tǒng)不可缺少的組成部分,但是內核本身不是操作系統(tǒng)。許多Linux操作系統(tǒng)發(fā)行商如RedHat、Debian等都采用Linux內核,然后加入用戶需要的工具軟件和程序庫,最終構成一個完整的操作系統(tǒng)。嵌入式Linux系統(tǒng)是運行在嵌入式硬件系統(tǒng)上的Linux操作系統(tǒng),每個嵌入式Linux系統(tǒng)都包括了必要的工具軟件和程序庫,歡迎點擊下載linux內核情景分析PPT哦。

linux內核情景分析PPT是由紅軟PPT免費下載網推薦的一款儀器設備PPT類型的PowerPoint.

第4章 解析Linux內核內核是操作系統(tǒng)的核心,通常說的Linux是指Linux操作系統(tǒng)的內核,是一組系統(tǒng)管理軟件的集合。Linux內核是目前最流行的開源操作系統(tǒng)之一,由于其代碼的高度開放性,越來越多的人參與到Linux內核的研究和開發(fā)中。Linux內核的功能也在不斷提高,性能在不斷改進。操作系統(tǒng)內核是軟件開發(fā)領域比較深的技術點,需要結合軟硬件知識才能深入理解。本章由淺入深講解Linux內核,帶領讀者進入嵌入式開發(fā)比較深入的領域,主要內容如下:如何獲取Linux內核代碼 Linux內核功能解析 Linux內核代碼布局 Linux內核鏡像結構 4.1 基本知識 Linux內核是Linux操作系統(tǒng)不可缺少的組成部分,但是內核本身不是操作系統(tǒng)。許多Linux操作系統(tǒng)發(fā)行商如RedHat、Debian等都采用Linux內核,然后加入用戶需要的工具軟件和程序庫,最終構成一個完整的操作系統(tǒng)。嵌入式Linux系統(tǒng)是運行在嵌入式硬件系統(tǒng)上的Linux操作系統(tǒng),每個嵌入式Linux系統(tǒng)都包括了必要的工具軟件和程序庫。 4.1.1 什么是Linux內核內核是操作系統(tǒng)的核心部分,為應用程序提供安全訪問硬件資源的功能。直接操作計算機硬件是很復雜的,內核通過硬件抽象的方法屏蔽了硬件的復雜性和多樣性。通過硬件抽象的方法,內核向應用程序提供了統(tǒng)一和簡潔的接口,應用程序設計復雜程度降低。實際上,內核可以被看做是一個系統(tǒng)資源管理器,內核管理計算機系統(tǒng)中所有的軟件和硬件資源。應用程序可以直接運行在計算機硬件上而無需內核的支持,從這個角度看,內核不是必要的。在早期的計算機系統(tǒng)中,由于系統(tǒng)資源的局限,通常采用直接在硬件上運行應用程序的辦法。運行應用程序需要一些輔助程序,如程序加載器、調試器等。隨著計算機性能的不斷提高,硬件和軟件源都變得復雜,需要一個統(tǒng)一管理的程序,操作系統(tǒng)的概念也逐漸建立起來。 4.1.2 Linux內核版本 Linux內核版本號采用兩個“.”分割的三個數字來標示,形式為“X.Y.Z”。其中,X是主要版本號,Y是次要版本號,Z代表補丁版本號。奇數代表不穩(wěn)定的版本;偶數代表穩(wěn)定的版本。“穩(wěn)定”和“不穩(wěn)定”是相對的,如Linux內核1.1.0相對于1.0.0來說是“不穩(wěn)定”版本,但是與1.1.1對比是“穩(wěn)定”版本。在Linux內核開發(fā)過程中,“不穩(wěn)定”版本通常是在原有版本基礎上增加了新的功能或者新的特性。 4.1.3 如何獲取Linux內核代碼在PC上,一般的Linux發(fā)行版都提供了內核代碼。嵌入式系統(tǒng)沒有固定的發(fā)行版,需要用戶自己獲取內核代碼。Linux內核代碼的官方站點是http://www.kernel.org,該站點提供了2.4和2.6所有版本的代碼和補丁,用戶可以打開該地址找到和自己所在物理位置就進的站點,下載自己需要的內核版本代碼。高版本Linux內核代碼文件比較大,對于國內的用戶推薦使用ftp方式下載,或者使用斷點續(xù)傳工具下載,具體情況可根據讀者自身的網絡情況選擇。下載Linux內核代碼后,會得到一個類似“linux-2.6.xx.tar.gz”或者“linux-2.6.xx-tar.bz2”形式的壓縮文件,“xx”代表版本號。在Linux系統(tǒng)上,通常把這個文件存放在/usr/src目錄下,便于以后使用。 4.1.4 編譯內核學習Linux內核最好的開始是編譯一次Linux內核代碼,通過配置Linux內核可以對內核代碼有一個初步的了解。本節(jié)介紹一下在PC機上如何編譯生成2.6版本的內核目標文件,試驗中講移植Linux部分會講解如何交叉編譯用于ARM體系結構的Linux內核。與2.4版本相比,2.6版本內核代碼編譯相對較容易。內核編譯主要分成配置和編譯兩部分,其中配置是關鍵,許多問題都是出在配置環(huán)節(jié)。Linux內核編譯配置提供多種方式: make config : make menuconfig : make xconfig : make oldconfig : 4.2 Linux內核的子系統(tǒng)內核是操作系統(tǒng)的核心。Linux內核提供很多基本功能,如虛擬內存、多任務、共享庫、需求加載、共享寫時拷貝(Copy-On-Write)以及網絡功能等。增加各種不同功能導致內核代碼不斷增加。Linux內核把不同功能分成不同的子系統(tǒng)的方法,通過一種整體的結構把各種功能集合在一起,提高了工作效率。同時還提供動態(tài)加載模塊的方式,為動態(tài)修改內核功能提供了靈活性。 4.2.1 系統(tǒng)調用接口 4.2.1 系統(tǒng)調用接口系統(tǒng)調用是Linux內核提供的,用戶空間無法直接使用系統(tǒng)調用。在用戶進程使用系統(tǒng)調用必須跨越應用程序和內核的界限。Linux內核向用戶提供了統(tǒng)一的系統(tǒng)調用接口,但是在不同處理器上系統(tǒng)調用的方法各不相同。Linux內核提供了大量的系統(tǒng)調用,本節(jié)從系統(tǒng)調用的基本原理出發(fā)講解Linux系統(tǒng)調用的方法。 4.2.2 進程管理子系統(tǒng)當一個用戶進程被加載后,會進入就緒態(tài),被加入到就緒態(tài)隊列,CPU時間被輪轉到就緒態(tài)隊列后,切換到進程的代碼,進程被執(zhí)行,當進程的時間片到了以后被換出。如果進程發(fā)生I/O操作也會提前被換出,并且存放到等待隊列,當I/O請求返回后,進程又被放入就緒隊列。 Linux系統(tǒng)對進程隊列的管理設計了若干不同的方法,主要的目的是提高進程調度的穩(wěn)定性。 4.2.3 內存管理子系統(tǒng)內存是計算機的重要資源,也是內核的的重要部分。使用虛擬內存技術的計算機,內存管理的硬件按照分頁方式管理內存。分頁方式是把計算機系統(tǒng)的物理內存按照相同大小等分,每個內存分片稱作內存頁,通常內存頁大小是4KB。Linux內核的內存管理子系統(tǒng)管理虛擬內存與物理內存之間的映射關系,以及系統(tǒng)可用內存空間。內存管理要管理的不僅是4KB緩沖區(qū)。Linux提供了對4KB緩沖區(qū)的抽象,例如slab分配器。這種內存管理模式使用4KB緩沖區(qū)為基數,然后從中分配結構,并跟蹤內存頁使用情況,比如哪些內存頁是滿的,哪些頁面沒有完全使用,哪些頁面為空。這樣就允許該模式根據系統(tǒng)需要來動態(tài)調整內存使用。 4.2.4 虛擬文件系統(tǒng)虛擬文件系統(tǒng),即VFS(Virtual File System)是Linux內核中的一個軟件抽象層。它通過一些數據結構及其方法向實際的文件系統(tǒng)如ext2,vfat等提供接口機制。通過使用同一套文件 I/O 系統(tǒng)調用即可對Linux中的任意文件進行操作而無需考慮其所在的具體文件系統(tǒng)格式;更進一步,文件操作可以在不同文件系統(tǒng)之間進行。 4.2.4 虛擬文件系統(tǒng) 4.2.5 網絡堆棧 Linux系統(tǒng)下編寫網絡應用程序,使用socket通過TCP/IP協(xié)議與其他機器通信,和前面介紹的內核子系統(tǒng)相似,socket相關的函數也是通過內核的子系統(tǒng)完成的,擔當這部分任務的是內核的網絡子系統(tǒng),一些資料里也把這部分代碼稱為“網絡堆棧”。 Linux內核提供了優(yōu)秀的網絡處理能力和功能,這與網絡堆棧代碼的設計思想是分不開的,Linux的網絡堆棧部分沿襲了傳統(tǒng)的層次結構,網絡數據從用戶進程到達實際的網絡設備需要四個層次。 4.2.5 網絡堆棧 4.2.6 設備驅動 Linux內核對設備按照主設備號和從設備號的方法訪問,主設備號描述控制設備的驅動程序,從設備號區(qū)分同一個驅動程序的不同設備。也就是說,主設備號和設備驅動程序對應,代表某一類型的設備,從設備號和具體設備對應,代表同一類的設備編號。如使用IDE接口的兩個硬盤,主設備號都相同,但是從設備號不同。Linux提供了mknod命令創(chuàng)建設備驅動程序的描述文件,后面設備驅動相關章節(jié)具體講解。Linux內核這種主從設備號的分類方法可以很好的管理設備。 4.2.7 依賴體系結構的代碼 Linux內核支持眾多體系結構,內核把與設備無關的代碼放在arch目錄,對應的頭文件放在include/asm-<體系名稱>目錄下。這樣的劃分代碼結構清晰,同時提高了代碼的復用率。在arch目錄里,每個子目錄對應一種體系結構,存放這種體系結構對應的代碼,如果代碼較多會單獨建立一個目錄,例如arch/arm目錄下,有一個kernel目錄,存放的是kernel目錄中在arm體系結構上特有的函數或者實現方法;在arch/i386目錄存放了Intel X86體系結構的代碼,不僅有kernel目錄,而且還有多個目錄,例如mm目錄包含了x86體系上內存管理的實現方法,math-emu包含了x86體系上浮點數模擬的實現等。讀者在閱讀內核代碼的時候可以從一個體系結構代碼入手,對不同體系結構移植代碼的主要工作是arch里面的代碼。 4.3 Linux內核代碼的工程結構隨著Linux內核功能的不斷增加,內核代碼也在飛速增長,目前2.6版本的內核代碼早已達到數百萬行。如此龐大的代碼量,不僅給學習帶來困難,對代碼的維護也是一個不小的挑戰(zhàn),幸好Linux內核開發(fā)人員早就考慮到了這一點,使得Linux內核代碼組織有序,本節(jié)重點講述Linux內核代碼的結構。 4.3.1 源代碼目錄布局 4.1.3節(jié)講述了如何獲取到Linux內核代碼,通常會存放在/usr/src目錄下,如果是2.6版本的內核解壓后會得到例如’linux-2.6.xx’類型的目錄,這個目錄下存放的就是Linux內核代碼。進入內核代碼目錄,查看文件列表,會看到許多的目錄和文件,如果讀者的系統(tǒng)有tree這個命令或者腳本,可以查看到Linux內核代碼的文件數,那會是一個很龐大的結構。好在Linux內核代碼的工程組織是很好的,對于不同版本的內核,在工程組織上是基本一致的,有的僅是功能上的差別。 4.3.2 幾個重要的Linux內核文件當用戶編譯一個Linux內核代碼后,會生成幾個文件:vmlinuz,initrd.img,以及System.map,如果讀者配置過grub引導管理器程序,會在/boot目錄下看到這幾個文件。 1.vmlinuz文件 2.initrd文件 3.System.map文件 4.4 內核編譯系統(tǒng) Linux內核代碼的復雜,需要一個強大的工程管理系統(tǒng),幸好GNU提供了Makefile機制,此外,內核的開發(fā)者們還提供了KBuild機制。通過Makefile和KBuild的結合,可以出色的管理Linux內核代碼。Linux內核的編譯系統(tǒng)和代碼結構是緊密聯(lián)系的,了解內核編譯系統(tǒng)對分析內核代碼和編譯內核都有幫助作用。 4.4.1 內核編譯系統(tǒng)基本架構 Linux內核編譯系統(tǒng)有5種類型的文件。 4.4.2 內核頂層Makefile分析編譯內核代碼的時候,頂層Makefile文件在開始編譯子目錄下的代碼之前,設置編譯環(huán)境和需要用到的變量。頂層Makefile文件包含通用部分,arch/$(ARCH) /Makefile包含該體系架構所需的設置。因此arch/$(ARCH)/Makefile會設置一些變量和少量的目標。 1.設置變量 2.增加預設置項 3.目錄表 4.引導映像 5.編譯非內核目標 6.編譯引導映像命令 7.定制編譯命令 8.預處理連接腳本 4.4.3 內核編譯文件分析 Linux內核代碼使用KBuild作為Makefile的基礎架構。Kbuild定義了若干的內置變量,本節(jié)介紹Kbuild的主要內置變量和常用方法。 1.目標定義 2.內嵌對象 - obj-y 3.可加載模塊 - obj-m 4.導出符號目標 5.庫文件 - lib-y 6.目錄遞歸 7.編譯標記 8.依賴關系 9.特殊規(guī)則 10.$(CC)支持功能 4.4.4 目標文件清除機制 "make clean"命令刪除在編譯內核生成的大部分文件如主機程序。列舉在$(hostprogs-y)、$(hostprogs-m)、$(always)、$(extra-y)和$(targets)中目標文件都將被刪除。 代碼目錄數中的"*.[oas]"、"*.ko"文件和一些由編譯系統(tǒng)產生的附加文件也將被刪除。附加文件可以使用$(clean-files)進行定義。例如: #drivers/pci/Makefile clean-files := devlist.h classlist.h 4.4.5 編譯輔助程序內核編譯系統(tǒng)支持在編譯(compliation)階段編譯主機可執(zhí)行程序。為了使用主機程序需要兩個步驟:第一個步驟使用hostprogs-y變量告 訴內核編譯系統(tǒng)有主機程序可用。第二步給主機程序添加潛在的依賴關系。有兩種方法,在規(guī)則中增加依賴關系或使用$(always)變量。具體描述如下。 1.簡單輔助程序 2.組合輔助程序 3.定義共享庫 4.C++語言使用方法 5.輔助程序編譯控制選項 6.何時建立輔助程序 7.使用hostprogs-$(CONFIG_FOO) 4.4.6 KBuild變量 KBuild內置了一些變量供頂層Makefile使用,頂層Makefile文件導出下面這些變量: VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION 這幾個變量定義了當前內核版本號。很少體系體系Makefiles文件直接使用他們,常用$(KERNELRELEASE)代替。 4.5 小結 Linux內核代碼非常龐大復雜,對任何人來說學習都是一個不小的挑戰(zhàn),本章講解了Linux內核的工程結構和代碼結構,從嵌入式系統(tǒng)開發(fā)的角度來說,大多數沒有必要一行一行的研究內核代碼,開發(fā)人員需要了解內核的機構和工作流程,以及常見的開發(fā)方法即可,學習內核最基本的技能是編譯內核,在此基礎上通過學習驅動開發(fā)和內核移植。bCk紅軟基地

PPT分類Classification

Copyright:2009-2024 紅軟網 rsdown.cn 聯(lián)系郵箱:rsdown@163.com

黑ICP備2025041396號-1