久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1484|回復: 0
打印 上一主題 下一主題
收起左側

如何閱讀linux源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:107189 發表于 2016-3-5 18:31 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
隨著linux的逐步普及,現在有不少人對于Linux的安裝及設置已經比較熟悉了。與Linux 的蓬勃發展相適應,想深入了解Linux的也越來越多。而要想深入了解Linux,就需要閱讀和分析linux內核的源代碼。
  Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。另外還可以從互連網上下載,解壓縮后文件一般也都位于linux目錄下。內核源代碼有很多版本,目前最新的穩定版是2.2.14。
  許多人對于閱讀Linux內核有一種恐懼感,其實大可不必。當然,象Linux內核這樣大而復雜的系統代碼,閱讀起來確實有很多困難,但是也不象想象的那么高不可攀。只要有恒心,困難都是可以克服的。也不用擔心水平不夠的問題,事實上,有很多事情我們不都是從不會到會,邊干邊學的嗎?
  任何事情做起來都需要有方法和工具。正確的方法可以指導工作,良好的工具可以事半功倍。對于Linux 內核源代碼的閱讀也同樣如此。下面我就把自己閱讀內核源代碼的一點經驗介紹一下,最后介紹Window平臺下的一種閱讀工具。
  對于源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對于linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識;2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標準C的擴展的知識的了解。另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網絡等組成。看一下Linux內  核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對于linux目錄):
  arch 這個子目錄包含了此核心源代碼所支持的硬件體系結構相關的核心代碼。如對于X86平臺就是i386。
  include 這個目錄包括了核心的大多數include文件。另外對于每種支持的體系結構分別有一個子目錄。
  init 此目錄包含核心啟動代碼。
  mm 此目錄包含了所有的內存管理代碼。與具體硬件體系結構相關的內存管理代碼位于arch/*/mm目錄下,如對應于X86的就是arch/i386/mm/fault.c 。
  drivers 系統中所有的設備驅動都位于此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如聲卡的驅動對應于drivers/sound。
  ipc 此目錄包含了核心的進程間通訊代碼。
  modules 此目錄包含已建好可動態加載的模塊。
  fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。
  kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。
  net 核心的網絡部分代碼。里面的每個子目錄對應于網絡的一個方面。
  lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。
  scripts此目錄包含用于配置核心的腳本文件。
  Documentation 此目錄是一些文檔,起參考作用。
  清楚了源代碼的結構組成后就可以著手閱讀。對于閱讀方法或者說順序,有所謂的縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是分模塊進行。其實他們之間不是絕對的,而是經常結合在一起進行。對于Linux源代碼來講,啟動的代碼就可以順著linux的啟動順序一步一步來,它的大致流程如下(以X86平臺為例):
  ./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start_kernel()。而對于象內存管理等部分,則可以單獨拿出來進行閱讀分析。我的體會是:開始最好按順序閱讀啟動代碼,然后進行專題閱讀,如進程部分,內存管理部分等。在每個功能函數內部應該一步步來。實際上這是一個反復的過程,不可能讀一遍就理解。
  俗話說:“工欲善其事,必先利其器”。 閱讀象Linux核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什么。所以沒有一個好的工具是不行的。由于大部分愛好者對于Window平臺比較熟悉,并且還是常用Window系列平臺,所以在此我介紹一個Window下的一個工具軟件:Source Insight。這是一個有30天免費期的軟件。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然后按提示進行就可以了。安裝完成后,就可啟動該程序。這個軟件使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)后,該軟件就分析你所加的源代碼。分析完后,就可以進行閱讀了。對于打開的閱讀文件,如果想看某一變量的定義,先把光標定位于該變量,然后點擊工具條上的相應選項,該變量的定義就顯示出來。對于函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎么樣,試試吧!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99re| 亚洲国产成人精品女人久久久 | 91精品国产乱码久久久 | 久久伦理中文字幕 | 国产在线中文字幕 | 一区二区三区精品视频 | av网站在线看 | 亚洲高清视频在线观看 | 97色在线观看免费视频 | 国产精品美女久久久久久免费 | 国产精品www | 人人擦人人干 | 亚洲午夜av久久乱码 | 中文字幕人成乱码在线观看 | 亚洲精品久久久一区二区三区 | 日韩在线视频免费观看 | 亚洲一一在线 | 在线观看成人免费视频 | 欧美成人一区二免费视频软件 | 观看av| 久久一区精品 | 中文字幕国产一区 | 黄色网址在线免费观看 | 日本色高清 | 欧美日本久久 | 国产精品久久毛片av大全日韩 | 久久久视频在线 | 在线观看第一区 | 日韩精品在线视频免费观看 | 欧美黄视频 | 成人免费视频网站在线看 | 日韩亚洲一区二区 | 中文字幕在线电影观看 | 日韩在线中文字幕 | 亚洲人成网站777色婷婷 | 99精品久久久久 | 国产精品一区2区 | 美女国产 | 韩日一区二区 | 亚洲精品www久久久久久广东 | 精品美女 |