成人免费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èi)去使用、修改、分發(fā)和共享源代碼和編譯代碼。然而,沒有人可以出售源代碼。

CREDITS - 貢獻(xiàn)者列表

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

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

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

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”為擴(kuò)展名的文件。 “.c”的擴(kuò)展名表明內(nèi)核是用眾多的編程語言之一的C語言寫的, “h”的文件是頭文件,而他們也是用C寫成。頭文件包含了許多“.c”文件需要使用的代碼,因?yàn)樗麄兛梢砸胍延械拇a而不是重新編寫代碼,這節(jié)省了程序員的時間。否則,一組執(zhí)行相同的動作的代碼,將存在許多或全部都是“c”文件。這也會消耗和浪費(fèi)硬盤空間。(譯注:頭文件不僅僅可節(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ū)動是一個控制硬件的軟件。例如,要讓計(jì)算機(jī)知道鍵盤并使其可用,鍵盤驅(qū)動是必要的。這個文件夾中存在許多文件夾。每個文件夾都以硬件的種類或者型號命名。例如,'bluetooth'包含了藍(lán)牙驅(qū)動程序的代碼。還有其他很明顯的驅(qū)動像SCSI、USB和火線等。有些驅(qū)動程序可能會比較難找到。例如,操縱桿驅(qū)動不在'joystick'文件夾中,它們卻在./drivers/input/joystick。同樣鍵盤和鼠標(biāo)驅(qū)動也在這個input文件夾中。 'Macintosh'包含了蘋果的硬件代碼。 'Xen'包含了Xen hypervisor代碼。(hypervisor是一種允許用戶在一臺計(jì)算機(jī)上運(yùn)行多個操作系統(tǒng)的軟件或硬件。這意味著在Xen允許用戶在一臺計(jì)算機(jī)上同時運(yùn)行的兩個或兩個以上的Linux系統(tǒng)。用戶還可以運(yùn)行Windows,Solaris,F(xiàn)reeBSD或其他操作系統(tǒng)在Linux系統(tǒng)上。)driver文件夾下還有許多其他的文件夾,但他們在這篇文章中無法一一列舉,他們將在以后的文章中提到。

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

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

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、藍(lán)牙等的代碼,此外處理網(wǎng)橋和DNS解析的代碼也在net目錄。

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

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

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

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

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

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

virt - 此文件夾包含了虛擬化代碼,它允許用戶一次運(yùn)行多個操作系統(tǒng)。這與先前提到的Xen是不同的。通過虛擬化,客戶機(jī)操作系統(tǒng)就像任何其他運(yùn)行在Linux主機(jī)的應(yīng)用程序一樣運(yùn)行。通過Xen這樣的hypervisor(注:虛擬機(jī)管理程序),兩個操作系統(tǒng)可以同時管理硬件。在虛擬化中,在客戶機(jī)操作系統(tǒng)上運(yùn)行在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ù)器

2011-03-30 09:59:31

ThunderboltHTC

2010-03-29 16:48:18

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

2019-07-01 06:30:07

微軟開發(fā)Linux

2010-06-10 10:32:35

openSUSE使用教

2010-06-10 10:20:29

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)核代碼
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 久久毛片 | 激情欧美一区二区三区中文字幕 | 女人av | 日韩一级二级片 | 亚洲电影成人 | 国产一区二区在线播放视频 | 国产精品久久久久久久久久久免费看 | 久久久久免费精品国产 | 电影午夜精品一区二区三区 | 九九免费在线视频 | 奇米超碰 | 久久com | 免费午夜视频 | 久久久综合色 | 精品国产一区二区三区性色 | 精精国产xxxx视频在线播放 | 国产一二区在线 | 黄色网页在线 | 国产一区二区中文字幕 | 午夜在线视频一区二区三区 | 日韩中文不卡 | 精品日韩一区二区 | 亚洲国产欧美国产综合一区 | 精品视频一区二区三区在线观看 | 97精品国产一区二区三区 | 伊人精品一区二区三区 | 一区二区三区欧美 | 亚洲国产精品久久久久婷婷老年 | 91久久精品一区二区二区 | 国产jizz女人多喷水99 | 国产成人一区二区三区电影 | 免费一区二区三区 | 成人精品鲁一区一区二区 | 日本精品一区二区三区在线观看视频 | .国产精品成人自产拍在线观看6 | 亚洲成年在线 | 久久高清国产视频 | 免费一区二区三区在线视频 | 国产精品国产精品国产专区不片 | 91久久国产 | 老司机深夜福利网站 |