歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

淺入分析和Linux內核相關的文件夾/proc和/sys

這星期講了關於Linux內核的編譯和Linux的內核模塊,淺顯易懂,所以寫出來和大家一起分享學習成果。首先說明,這只是簡單的編譯,和手動添加模塊,而這篇主要介紹linux的內核分類,和linux內核相關的兩個文件夾/proc    /sys   這是實現內核編譯和添加內核模塊的理論基礎。


內核的分類:  

     1. 微內核:盡可能的保證內核的精簡,所有的設備都需要安裝驅動程序(不知道這樣說准確否) 例如windows,你所有的設備的驅動城區都是你後來裝的。


     2. 單內核:設備直接融入到內核中去。

                linux屬於單內核,但是由於它巧妙的設計(可以這樣想,內核外表有很多“洞”用於連接模塊),它可以將很多設備做成模塊,當需要時自動加入內核,由於是在內核中工                  作,所以效率非常高。

從理論上來講,微內核是更先進的設計,但是到目前為止,它的優勢都沒有發揮出來,linux由於單內核的設計,所以造成了驅動程序難安裝,難研發。


Linux內核的分類

      1.kernel   內核本身    

         還記得initrd嗎?它其實是生成的,從過/sbin/mkinitrd這個腳本,在你安裝操作系統後,自動生成,用於輔助內核。

      2.kernel object  內核對象(內核模塊)

        它們是以.ko結尾的文件,所有的,ko文件只能在內核加載。他們位於/lib/modules目錄 大小50M左右,內核將文件系統和各種外圍驅動都做成模塊放在這裡面,而且每一個           不同版本的內核都對應一個和內核版本名字相同的文件夾存放對應的內核模塊文件###必須嚴格對應,否則會出錯    


內核編譯時選擇的選項不同,功能也不同

RedHat提供了3個32位核心版本,2個64位核心版本
32位
kernel                最多支持32位cpu,最多支持4G內存
      kernel:1G           啟動時kernel要占去1G內存,留給進程的只有3G
      process:3G
kernel-PAE       最多支持32顆對稱多處理器,支持16G內存
      單個進程只能最多3G內存,對
kernel-xen        支持基於xen半虛擬化 ,現在不支持,轉向KVM

64位:
 kernel : 64個cpu, 512G
 kernel-xen:126顆cpu,512G內存
 以目前的技術可以支持到1T的內存          


內核參數:

內核可以接受很多參數,例如grub.conf在啟動時傳遞給內核啟動等級。而在系統運行的時候也可以傳遞內核參數,內核工作在內核空間,但是用戶程序工作在用戶空間所以需要通過用戶空間傳遞一些參數給內核,讓內核按我們的需要來工作。

那麼向內核傳遞參數,這就是今天這兩個文件夾的作用。

他們的作用:

/porc          正在運行的內核信息映射  
主要輸出:進程信息    
                    內存資源信息
                    磁盤分區信息等等
/sys      
                    硬件設備的驅動程序信息


它們都是偽文件系統,如果了解這些文件的參數,並向裡面傳遞特殊數值,完全可以實現實時調整內核工作特征和硬件工作特征。


那麼我們打開/proc目錄來查看裡面的內容,具體命令我就不寫了,這裡我只根據目錄樹來介紹我學到的各個目錄的作用(通過顏色識別),如果您有興趣可以看下~

/proc/
           1/cmdline       啟動進程的命令行命令及其參數是什麼
           1/proc/cmdline     gurb向內核傳遞的參數文件,以後可以通過腳本讀取它的參數,來判定啟動時向內核傳遞什麼信息
           1/maps       內存使用信息的映射
           1/mem     內存信息
           1/io          讀寫
           1/stat     進程信息
           1/status
     
     acpi           高級隊員管理子系統相關信息
     asoud       聲音信息
     budyinfo    伙伴系統信息,實現內存回收的子系統,防止內存碎片
     bus        系統硬件總線信息
     cpuinfo
     crypto    加密
     devices    當前系統上所有的字符設備和塊設備
     diskstat      磁盤狀態信息 (很難懂)
             iostat 通過這個文件可以查看它的信息
     dma    直接內存訪問,實現內存與對應的磁盤設備,直接映射以後,訪問將數據脫離cpu管理時,仍然可以從磁盤讀取到內存的一種
                  系統優化設備
      fb (frame buffer)       幀緩存,對一些特殊的顯卡顯示設備提供驅動。
      filesystems   當前系統中啟用的所有文件系統
                     /cpuset       cpu分組,可以實現進程和cpu綁定,可以將它掛載來查看那捆綁信息,它也是一個偽目錄
      ide
      fs
      interruptes   中斷(硬終端,軟中斷)
      ioports            硬件IO端口信息     
      loadavg           平均負載,uptime命令查看這個文件
      locks             文件鎖,文件進程不允許兩個進程同時寫文件
      molues         當前系統上正在時候的模塊
      mdstat           RAID
      meminfo         內存信息
      partitions        內核識別的分區信息
      schedstat         進程調度信息
      slabinfo            內存子系統信息和budyinfo一樣
      swaps                交換分區信息
      uptime               uptime命令顯示的文件
      version      `uname -r`    
      vmstat        
      zoneinfo            內存的分區信息,Normal段      DMA段     BIOS段
       
/proc/sys       凡是輸出在sys目錄裡的信息,都是可以通過調整他們的參數來管理內核
          crypto
          debug
          dev
           ls
           fs
           kernel
           net

                  /ipv4        裡面都是可以調整的網絡模塊
                                / icmp_echo_ignore_all       改為1別人就ping不同

                                  ip_forward              用於定義如果主機上有兩塊網卡,或者一個網卡有兩個地址,並且在不同網絡段,
                                                                   它能啟用在兩個網絡之間實現數據包路由(直連路由)轉發功能。它可以決定你的
                                                                   主機是否可以作為路由器或網關使用。默認為0
                                                             
                                max_orphans         最大孤兒鏈接數
                                tcp_fin_timeout        tcp  fin數據包等待超時時間                             
                                tcp_max_syn_backets          網絡調優其實就是調這些參數
                 tcp_mem             緩沖大小
                      tcp_rmen          讀緩沖大小
                 tcp_ wmen       寫緩沖大小
                    tcp_reuse          tcp的鏈接數是否可重用,多次時間重用
                                sunrpc
            vm                

                  /dorp_caches        用於釋放內存裡緩存


區別哪些文件可以傳遞參數:凡是有w權限的都是可以傳遞參數的

Copyright © Linux教程網 All Rights Reserved