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

Devyn的Linux內(nèi)核專題:源代碼

系統(tǒng) Linux
在下載并解壓內(nèi)核源代碼后,用戶可以看到許多文件夾和文件。嘗試去找一個特定的文件或許是一個挑戰(zhàn)。

在下載并解壓內(nèi)核源代碼后,用戶可以看到許多文件夾和文件。嘗試去找一個特定的文件或許是一個挑戰(zhàn)。謝天謝地,源代碼以一個特定的方式組織的。這使開發(fā)者能夠輕松找到任何文件或者內(nèi)核的一部分。

內(nèi)核源代碼的根目錄下包含了以下文件夾:

  1. arch 
  2. block 
  3. crypto 
  4. Documentation 
  5. drivers 
  6. firmware 
  7. fs 
  8. include 
  9. init 
  10. ipc 
  11. kernel 
  12. lib 
  13. mm 
  14. net 
  15. samples 
  16. scripts 
  17. security 
  18. sound 
  19. tools 
  20. usr 
  21. virt 

還有一些文件在源代碼的根目錄下。它們會在下面列出。

COPYING -許可和授權(quán)信息。Linux內(nèi)核在GPLv2許可證下授權(quán)。該許可證授予任何人有權(quán)免費去使用、修改、分發(fā)和共享源代碼和編譯代碼。然而,沒有人可以出售源代碼。

CREDITS - 貢獻者列表

Kbuild - 這是一個設(shè)置一些內(nèi)核設(shè)定的腳本。打個比方,這個腳本設(shè)定一個ARCH變量,這是開發(fā)者想要生成的內(nèi)核支持的處理器類型。

Kconfig - 這個腳本會在開發(fā)人員配置內(nèi)核的時候用到,這會在以后的文章中討論。

MAINTAINERS - 這是一個目前維護者列表,他們的電子郵件地址,主頁,和他們負責(zé)開發(fā)和維護的內(nèi)核的特定部分或文件。當(dāng)一個開發(fā)者在內(nèi)核中發(fā)現(xiàn)一個問題,并希望能夠報告給能夠處理這個問題的維護者時,這是是很有用的。

Makefile - This script is the main file that is used to compile the kernel. This file passes parameters to the compiler as well as the list of files to compile and any other necessary information. 這個腳本是編譯內(nèi)核的主要文件。這個文件將編譯參數(shù)和編譯所需的文件和必要的信息傳給編譯器。

README - 這個文檔提供給開發(fā)者想要知道的如何編譯內(nèi)核的信息。

REPORTING-BUGS - 這個文檔提供如何報告問題的信息。

內(nèi)核的代碼是以“.c”或“.h”為擴展名的文件。 “.c”的擴展名表明內(nèi)核是用眾多的編程語言之一的C語言寫的, “h”的文件是頭文件,而他們也是用C寫成。頭文件包含了許多“.c”文件需要使用的代碼,因為他們可以引入已有的代碼而不是重新編寫代碼,這節(jié)省了程序員的時間。否則,一組執(zhí)行相同的動作的代碼,將存在許多或全部都是“c”文件。這也會消耗和浪費硬盤空間。(譯注:頭文件不僅僅可節(jié)省重復(fù)編碼,而且代碼復(fù)用也會降低代碼錯誤的幾率)

所有上面列出的文件夾中的文件都組織得很好。文件夾名稱至少可以幫助開發(fā)人員很好地猜測文件夾中的內(nèi)容。下面提供了一個目錄樹和描述。

arch - 這個文件夾包含了一個Kconfig文件,它用于設(shè)置這個目錄里的源代碼編譯所需的一系列設(shè)定。每個支持的處理器架構(gòu)都在它相應(yīng)的文件夾中。如,Alpha處理器的源代碼在alpha文件夾中。請記住,隨著時間的推移,一些新的處理器將被支持,有些會被放棄。對于Linux v3.9.4,arch下有以下文件夾:

  1. alpha 
  2. arc 
  3. arm 
  4. arm64 
  5. avr32 
  6. blackfin 
  7. c6x 
  8. cris 
  9. frv 
  10. h8300 
  11. hexagon 
  12. ia64 
  13. m32r 
  14. m68k 
  15. metag 
  16. microblaze 
  17. mips 
  18. mn10300 
  19. openrisc 
  20. parisc 
  21. powerpc 
  22. s390 
  23. score 
  24. sh 
  25. sparc 
  26. tile 
  27. um 
  28. unicore32 
  29. x86 
  30. xtensa 

block – 此文件夾包含塊設(shè)備驅(qū)動程序的代碼。塊設(shè)備是以數(shù)據(jù)塊方式接收和發(fā)送的數(shù)據(jù)的設(shè)備。數(shù)據(jù)塊都是一塊一塊的數(shù)據(jù)而不是持續(xù)的數(shù)據(jù)流。

crypto - 這個文件夾包含許多加密算法的源代碼。例如,“sha1_generic.c”這個文件包含了SHA1加密算法的代碼。

Documentation - 此文件夾包含了內(nèi)核信息和其他許多文件信息的文本文檔。如果開發(fā)者需要一些信息,他們也許能在這里找到所需要的信息。

drivers - 該目錄包含了驅(qū)動代碼。驅(qū)動是一個控制硬件的軟件。例如,要讓計算機知道鍵盤并使其可用,鍵盤驅(qū)動是必要的。這個文件夾中存在許多文件夾。每個文件夾都以硬件的種類或者型號命名。例如,'bluetooth'包含了藍牙驅(qū)動程序的代碼。還有其他很明顯的驅(qū)動像SCSI、USB和火線等。有些驅(qū)動程序可能會比較難找到。例如,操縱桿驅(qū)動不在'joystick'文件夾中,它們卻在./drivers/input/joystick。同樣鍵盤和鼠標(biāo)驅(qū)動也在這個input文件夾中。 'Macintosh'包含了蘋果的硬件代碼。 'Xen'包含了Xen hypervisor代碼。(hypervisor是一種允許用戶在一臺計算機上運行多個操作系統(tǒng)的軟件或硬件。這意味著在Xen允許用戶在一臺計算機上同時運行的兩個或兩個以上的Linux系統(tǒng)。用戶還可以運行Windows,Solaris,F(xiàn)reeBSD或其他操作系統(tǒng)在Linux系統(tǒng)上。)driver文件夾下還有許多其他的文件夾,但他們在這篇文章中無法一一列舉,他們將在以后的文章中提到。

firmware - fireware中包含了讓計算機讀取和理解從設(shè)備發(fā)來的信號的代碼。舉例來說,一個攝像頭管理它自己的硬件,但計算機必須了解攝像頭給計算機發(fā)送的信號。Linux系統(tǒng)會使用vicam固件(firmware)來理解攝像頭的通訊。否則,沒有了固件,Linux系統(tǒng)將不知道如何處理攝像頭發(fā)來的信息。另外,固件同樣有助于將Linux系統(tǒng)發(fā)送消息給該設(shè)備。這樣Linux系統(tǒng)可以告訴攝像頭重新調(diào)整或關(guān)閉攝像頭。

fs - 這是文件系統(tǒng)的文件夾。理解和使用的文件系統(tǒng)所需要的所有的代碼就在這里。在這個文件夾里,每種文件系統(tǒng)都有自己的文件夾。例如,ext4文件系統(tǒng)的代碼在ext4文件夾內(nèi)。 在fs文件夾內(nèi),開發(fā)者會看到一些不在文件夾中的文件。這些文件用來控制整個文件系統(tǒng)。例如,mount.h中會包含掛載文件系統(tǒng)的代碼。文件系統(tǒng)是以結(jié)構(gòu)化的方式來存儲和管理的存儲設(shè)備上的文件和目錄。每個文件系統(tǒng)都有自己的優(yōu)點和缺點。這是由文件系統(tǒng)的設(shè)計決定的。舉例來說,NTFS文件系統(tǒng)支持的透明壓縮(當(dāng)啟用時,會在用戶不知道的情況下自動壓縮存儲文件)。大多數(shù)文件系統(tǒng)缺乏此功能,但如果在fs文件夾里編入相應(yīng)的文件,它們也有這種能力。

include - include包含了內(nèi)核所需的各種頭文件.這個名字來自于C語言用"include"來在編譯時導(dǎo)入頭文件。

init - init文件夾包含了內(nèi)核啟動的處理代碼(INITiation)。main.c是內(nèi)核的核心文件,這是用來銜接所有的其他文件的源代碼主文件。

ipc - IPC代表進程間通訊。此文件夾中的代碼是作為內(nèi)核與進程之間的通信層。內(nèi)核控制著硬件,因此程序只能請求內(nèi)核來執(zhí)行任務(wù)。假設(shè)用戶有一個打開DVD托盤的程序。程序不直接打開托盤,相反,該程序通知內(nèi)核托盤應(yīng)該被打開。然后,內(nèi)核給硬件發(fā)送一個信號去打開托盤。這些代碼同樣管理kill信號。舉例來說,當(dāng)系統(tǒng)管理員打開進程管理器去關(guān)閉一個已經(jīng)鎖死的程序,這個關(guān)閉程序的信號被稱為kill信號。內(nèi)核接收到信號,然后內(nèi)核會要求程序停止或直接把進程從內(nèi)存和CPU中移除(取決于kill的類型)。命令行中的管道同樣用于進程間通信。管道會告訴內(nèi)核在某個內(nèi)存頁上寫入輸出數(shù)據(jù)。程序或者命令得到的數(shù)據(jù)是來自內(nèi)存頁上的某個給定的指針。

kernel - 這個文件夾中的代碼控制內(nèi)核本身。例如,如果一個調(diào)試器需要跟蹤問題,內(nèi)核將使用這個文件夾中代碼來將內(nèi)核指令通知調(diào)試器跟蹤內(nèi)核進行的所有動作。這里也有跟蹤時間的代碼。在內(nèi)核文件夾下有個"power"文件夾,這里的代碼可以使計算機重新啟動、關(guān)機和掛起。

lib - 這個文件夾包含了內(nèi)核需要引用的一系列內(nèi)核庫文件代碼。

mm - mm文件夾中包含了內(nèi)存管理代碼。內(nèi)存并不是任意存儲在RAM芯片上的。相反,內(nèi)核小心地將數(shù)據(jù)放在RAM芯片上。內(nèi)核不會覆蓋任何正在使用或保存重要數(shù)據(jù)的內(nèi)存區(qū)域。

net - net文件夾中包含了網(wǎng)絡(luò)協(xié)議代碼。這包括IPv6、AppleTalk、以太網(wǎng)、WiFi、藍牙等的代碼,此外處理網(wǎng)橋和DNS解析的代碼也在net目錄。

samples - 此文件夾包含了程序示例和正在編寫中的模塊代碼。假設(shè)一個新的模塊引入了一個想要的有用功能,但沒有程序員說它已經(jīng)可以正常運行在內(nèi)核上。那么,這些模塊就會移到這里。這給了新內(nèi)核程序員一個機會通過這個文件夾來獲得幫助,或者選擇一個他們想要協(xié)助開發(fā)的模塊。

scripts - 這個文件夾有內(nèi)核編譯所需的腳本。最好不要改變這個文件夾內(nèi)的任何東西。否則,您可能無法配置或編譯內(nèi)核。

security - 這個文件夾是有關(guān)內(nèi)核安全的代碼。它對計算機免于受到病毒和黑客的侵害很重要。否則,Linux系統(tǒng)可能會遭到損壞。關(guān)于內(nèi)核的安全性,將在以后的文章中討論。

sound - 這個文件夾中包含了聲卡驅(qū)動。

tools - 這個文件夾中包含了和內(nèi)核交互的工具。

usr - 還記得在以前的文章中提到vmlinuz和其他類似的文件么?這個文件夾中的代碼在內(nèi)核編譯完成后創(chuàng)建這些文件。

virt - 此文件夾包含了虛擬化代碼,它允許用戶一次運行多個操作系統(tǒng)。這與先前提到的Xen是不同的。通過虛擬化,客戶機操作系統(tǒng)就像任何其他運行在Linux主機的應(yīng)用程序一樣運行。通過Xen這樣的hypervisor(注:虛擬機管理程序),兩個操作系統(tǒng)可以同時管理硬件。在虛擬化中,在客戶機操作系統(tǒng)上運行在Linux內(nèi)核上,而在hypervisor中,它沒有客戶系統(tǒng)并且所有的系統(tǒng)不互相依賴。

提示:絕不在內(nèi)核源代碼內(nèi)移動文件,除非你知道你在做什么。否則,編譯會由于缺失文件失敗。

Linux內(nèi)核的文件夾結(jié)構(gòu)保持相對穩(wěn)定。內(nèi)核開發(fā)者會做一些修改,但總體來說,這些設(shè)置對整個內(nèi)核版本都是一樣。驅(qū)動程序文件夾的布局也基本保持一樣。

via: http://www.linux.org/threads/the-linux-kernel-the-source-code.4204/

責(zé)任編輯:奔跑的冰淇淋 來源: Linux中國
相關(guān)推薦

2013-10-31 14:09:14

Linux內(nèi)核

2013-11-05 09:55:37

2013-11-25 14:07:11

Linux內(nèi)核內(nèi)核特性

2013-11-07 13:59:56

Linux內(nèi)核

2013-11-05 09:58:39

Linux內(nèi)核

2013-11-12 11:01:46

Linux內(nèi)核

2013-11-06 13:03:10

Linux內(nèi)核

2013-10-31 16:29:10

Linux內(nèi)核

2013-12-18 14:44:10

2013-11-25 17:39:17

Linux內(nèi)核PCIACPI

2013-12-18 11:14:57

Linux內(nèi)核Linux Kerne

2013-12-20 13:08:12

Linux內(nèi)核服務(wù)器

2010-03-29 16:48:18

Nginx內(nèi)核優(yōu)化

2011-03-30 09:59:31

ThunderboltHTC

2019-07-01 06:30:07

微軟開發(fā)Linux

2010-06-10 10:20:29

openSUSE使用教

2010-06-10 10:32:35

openSUSE使用教

2010-03-02 10:44:52

Linux rpm

2015-08-28 09:38:51

Linux源代碼分析工具

2010-01-07 13:44:54

Linux內(nèi)核代碼
點贊
收藏

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

主站蜘蛛池模板: 久久精品日 | www.国产一区| 龙珠z国语版在线观看 | 日韩精品在线播放 | 日本不卡一区 | av影音资源 | 色综合天天天天做夜夜夜夜做 | 亚洲成人午夜电影 | 国产综合av | 男人天堂久久 | 成人久久18免费网站 | 免费在线精品视频 | 欧美一区二区免费在线 | 91麻豆精品国产91久久久久久 | 亚洲va欧美va天堂v国产综合 | 日本亚洲欧美 | 99reav| 亚洲精品日韩在线 | 免费污视频 | 午夜在线精品偷拍 | 成人性生交大片免费看r链接 | 1区2区3区视频 | 日本特黄a级高清免费大片 国产精品久久性 | 亚洲第1页| 成人免费视屏 | 免费观看色| 成人久久| 中文字幕在线观看视频一区 | 国产美女精品 | 国产一区 | 国产美女福利在线观看 | 暖暖日本在线视频 | 欧美午夜精品 | 一区二区三区在线播放 | 欧美精品日韩精品 | 亚洲精品第一 | 日本黄色大片免费 | 国产精品亚洲视频 | 欧洲色| 成人精品国产一区二区4080 | 久久一 |