日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux+proc+原理,Linux内核中的Proc文件系统(一)

發布時間:2024/4/17 linux 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux+proc+原理,Linux内核中的Proc文件系统(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)/proc文件系統的特點和/proc文件的說明

/proc文件系統是一種特殊的、由軟件創建的文件系統,內核使用它向外界導出信息,/proc系統只存在內存當中,而不占用外存空間。

/proc下面的每個文件都綁定于一個內核函數,用戶讀取文件時,該函數動態地生成文件的內容。也可以通過寫/proc文件修改內核參數

(2)/proc目錄下的文件分析

/proc/$pid

關于進程$pid的信息目錄。每個進程在/proc 下有一個名為其進程號的目錄。例:

$>strings -f /proc/[0-9]*/cmdline

/proc/cmdline

內核啟動的命令行

/proc/cpuinfo

處理器信息,如類型、制造商、型號和性能。

/proc/devices

列出字符和塊設備的主設備號,以及分配到這些設備號的設備名稱

/proc/dma

顯示當前使用的DMA通道。

/proc/filesystems

列出了可供使用的文件系統類型,通常是編入內核的文件系統類型,但可以通過模塊加入新的類型

/proc/interrupts

顯示使用的中斷號,中斷名稱,以及這些中斷從系統啟動后產生的次數

/proc/ioports

當前使用的I/O端口。

/proc/kallsyms

內核符號表。安裝新的模塊后,會在這里體現出來

/proc/kcore

系統物理內存映象。與物理內存大小完全一樣,但不實際占用這么多內存;(記住:除非拷貝到文件中,/proc下沒有任何東西占用任何磁盤空間)

/proc/kmsg

內核輸出的消息。也被送到syslog。

/proc/loadavg

系統的平均負載,前3個是過去1分鐘,5分鐘,15分鐘的負載,然后是正在運行的任務數和總任務數,最后是上次運行的進程號

/proc/meminfo

存儲器使用信息,包括物理內存和swap。

/proc/modules

當前加載了哪些核心模塊。

/proc/partitions

系統當前掛載硬盤的分區信息

/proc/pci

系統的pci總線信息

/proc/net

網絡協議狀態信息。

/proc/self

到查看/proc的程序的進程目錄的符號連接。當2個進程查看/proc時,是不同的連接。這主要便于程序得到它自己的進程目錄。

/proc/slabinfo

系統中slab緩存的分配信息

/proc/stat

系統的一些狀態信息

/proc/swaps

系統采用的交換區信息

/proc/sysrq-trigger

用于啟動sysRq鍵

$>echo 1 > sysrq-trigger

/proc/uptime

系統啟動的時間長度和空閑的時間長度。供uptime使用

/proc/version

內核版本

(3)自行實現一個/proc文件

需包含頭文件,函數定義在/fs/proc/generic.c

a.在/proc下創建目錄

調用:struct proc_dir_entry *proc_mkdir(const char *name,

struct proc_dir_entry *parent)

在/proc下創建文件:

struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,

struct proc_dir_entry *parent)

struct proc_dir_entry *create_proc_read_entry(

const char *name,

mode_t mode,

struct proc_dir_entry *base,

read_proc_t *read_proc,

void * data)

b.卸載/proc下的文件

采用remove_proc_entry卸載proc文件

void remove_proc_entry(

const char *name,

struct proc_dir_entry *parent);

c.定義返回數據的函數

在進程讀取/proc文件時,內核會分配一個內存頁(即PAGE_SIZE個字節的內存塊),驅動將要寫的數據通過這個內存頁返回到用戶空間。

typedef int (read_proc_t)(char *page, char **start, off_t off,

int count, int *eof, void *data);

思考一下,它還可以有什么作用?

在實際工作中,一般由原廠提供的驅動,有一部分廠商會在proc下創建對應的目錄,用proc文件系統來進行管理,比如:現在有一家觸摸屏驅動的廠商,他們寫的驅動的版本號,一般就會放在proc目錄下對應廠商的目錄,然后創建一個類似/proc/version的文件,在應用層,通過cat ?/proc/xxxx/version就可以獲取到該廠商觸摸屏驅動的版本信息。

下一節,我們將結合4412來實現一下。

本文同步分享在 博客“Engineer-Bruce_Yang”(CSDN)。

如有侵權,請聯系 support@oschina.cn 刪除。

本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

總結

以上是生活随笔為你收集整理的linux+proc+原理,Linux内核中的Proc文件系统(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。