1. gzyueqian
      13424082685
      首頁 > 新聞中心 > > 正文

      linux內核初始化及啟動之start_kernel

      更新時間: 2006-08-28 14:24:16來源: 粵嵌教育瀏覽量:1143

        Linux的源代碼可以從www.kernel.org得到,或者你可以查看linux代碼交叉引用網站:http://lxr.linux.no/ 進行在線的代碼查看,這是一個很好的工具網站。

        在start_kernel中將調用到大量的init函數,來完成內核的各種初始化。如:

      page_address_init();
      sched_init();
      page_alloc_init();
      init_IRQ();
      softirq_init();
      console_init();
      calibrate_delay();
      vfs_caches_init(num_physpages);
      rest_init();

        具體內容可以參考[http://lxr.linux.no/source/init/main.c]

      Linux version 2.4.22-uc0 (root@local) (gcc version 2.95.3 20010315 (release)) #33 .?1.. 20 12:09:106

        上面的代碼輸出信息,是跟蹤linux代碼分析后得到的,進入init目錄下的main.c的start_kernel啟動函數.

        嵌入式linux使用的是linux內核版本為2.4.22

        linux source code代碼中start_kernel中輸出的linux_banner信息。這個信息是每個linux kernel都會打印一下的信息,如果你沒有把這句去掉的話。

      Found bootloader memory map at 0x10000fc0.

        bootloader經過內存映射后的地址為:0x10000fc0, 按上面的地址換算方法,1后面有7個0,那么虛擬地址256M左右處。

      Processor: ARM pt110 revision 0

        pT110是ARM微處理器arm核的一種,另一種為pT100。此處為顯示ARM的類型。

      On node 0 totalpages: 20480
      zone(0): 20480 pages.
      zone(0): Set minimum memory threshold to 12288KB
      Warning: wrong zone alignment (0x90080000, 0x0000000c, 0x00001000)
      zone(1): 0 pages.
      zone(2): 0 pages.

        預留內存大小,在節點0上總共20頁, zone(0) 設置小內存為12MB, zone(1)和zone(2)為0頁。警告:對齊不正確

      Kernel command line: root=/dev/mtdblock3

        Kernel 啟動命令設為:/dev/mtdblock3(在后面的說明中會看到mtdblock3是指的flash上的romfs分區。),用來指定根文件系統所在的位置,kernel會將塊設備mtdblock3當作文件系統來處理。

        也就是說,內核會根據上面的kernel命令行,知道只讀文件系統romfs將是根文件系統rootfs。

        start_kernel(void)中輸出的上面的這句信息。

        這行命令是在linux內核啟動過程中都會輸出的一句。

      Console: colour dummy device 80x30

        代碼中console_init()的輸出信息, 顯示控制臺屬性:一般使用VGA text console,標準是80 X 25行列的文本控制臺,這里是對屬性進行了設置。

      serial_xx: setup_console @ 115

        串口設置值為115200,此為波特率輸出信息。對串口設置的信息做一個打印的動作,在調試時會非常有用。

      Calibrating delay loop... 82.94 BogoMIPS

        Calibrate:校準, 進入時延校準循環。檢查CPU的MIPS(每秒百萬條指令),Bogo是Bogus(偽)的意思。這里是對CPU進行一個實時測試,來得到一個大體的MIPS數值

        Bogomips,是由linus Torvalds寫的, 是Linux操作系統中衡量計算機處理器運行速度的一種尺度。提供這種度量的程序被稱為BogoMips,當啟動計算機時,BogoMips能顯示系統選項是否處于性能。

        linux內核中有一個函數calibrate_delay(),它可以計算出cpu在一秒鐘內執行了多少次一個極短的循環,計算出來的值經過處理后得到BogoMIPS值

        你可以將計算機的bogomips與計算機處理器的bogomips進行比較。Torvalds稱這個程序為BogoMips來暗示兩臺計算機間的性能度量是錯誤的,因為并非所有起作用因素都能被顯示出來或被認可。盡管計算機基準中經常用到MIPS,但環境的變化容易導致度量的錯誤。Bogomips能測出一秒鐘內某程序運行了多少次。

        察看/proc/cpuinfo文件中的一行也能得到這個數值。

        上面這個輸出,在所有的linux系統啟動中都會打印出來。

        進入內存初始化

      mem_init(void), [arch/i386/mm/init.c]
      Memory: 80MB = 80MB total
      Memory: 76592KB available (1724K code, 2565K data, 72K init)

        當前內存使用情況,將列出總的內存大小, 及分配給內核的內存大小:包括代碼部分,數據部分,初始化部分,總共剛好4M。請留意此處的內核的內存大小的各個值。

        進入虛擬文件系統VFS初始化

      vfs_caches_init()
      Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
      Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
      Mount cache hash table entries: 512 (order: 0, 4096 bytes)
      Buffer cache hash table entries: 4096 (order: 2, 16384 bytes)
      Page-cache hash table entries: 32768 (order: 5, 131072 bytes)

        名詞:

       ?、?Dentry:目錄數據結構

       ?、?Inode:i節點

       ?、?Mount cache:文件系統加載緩沖

       ?、?buffer cache:內存緩沖區

       ?、?Page Cache:頁緩沖區

        Dentry目錄數據結構(目錄入口緩存),提供了一個將路徑名轉化為特定的dentry的一個快的查找機制,Dentry只存在于RAM中;
      i節點(inode)數據結構存放磁盤上的一個文件或目錄的信息,i節點存在于磁盤驅動器上;存在于RAM中的i節點就是VFS的i節點,dentry所包含的指針指向的就是它;

        buffer cache內存緩沖區,類似kupdated,用來在內存與磁盤間做緩沖處理;

        Page Cache 用來加快對磁盤上映像和數據的訪問。

        在內存中建立各個緩沖hash表,為kernel對文件系統的訪問做準備。

        VFS(virtual filesystem switch)虛擬文件切換目錄樹有用到類似這樣的結構表。

        上面的輸出信息,在一般的linux啟動過程中都會看到。

        POSIX conformance testing by UNIFIX

        conformance:順應, 一致。即POSIX適應性檢測。UNIFIX是一家德國的技術公司,Linux 原本要基于 POSIX.1 的, 但是 POSIX 不是免費的, 而且 POSIX.1 證書相當昂貴. 這使得 Linux 基于 POSIX 開發相當困難. Unifix公司(Braunschweig, 德國) 開發了一個獲得了 FIPS 151-2 證書的 Linux 系統. 這種技術用于 Unifix 的發行版 Unifix Linux 2.0 和 Lasermoon 的 Linux-FT。

        在2.6的內核中就將上面的這句輸出給拿掉了。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲精品ⅴ在线观看 | 色老头在线精品线在线观看 | 日韩经典亚洲一区二区三区 | 亚洲人成自拍网站在线观看 | 午夜视频福利在线 | 亚洲欧美日韩Aⅴ在线观看 日韩欧美一本书道一区二区 |