目錄:
概述
◆ /proc/目錄簡介
◆ procfs的實現(xiàn)
后記
--------------------------------------------------------------------------
概述:
進程文件系統(tǒng) -- procfs -- 允許像管理文件那樣直接管理內核進程 。
進程文件系統(tǒng),procfs,是一個偽文件系統(tǒng),提供了內核進程表的文件系統(tǒng)接口,
Jim Mauro 在這里概要介紹了procfs 。
翻譯本文的目的在于編寫64-bit下的SLKM,歡迎對此感興趣的朋友交流 。
--------------------------------------------------------------------------
◆ /proc/目錄簡介
進程文件系統(tǒng),procfs,是一個偽文件系統(tǒng),它允許對一些非傳統(tǒng)意義上的文件
通過標準文件I/O接口進行訪問 。procfs將Solaris內核進程架構進行了抽象,比如當前系統(tǒng)中所有運行著的進程會在/proc/目錄下有所體現(xiàn) 。系統(tǒng)中每個進程對應/proc/目錄下的一個子目錄,子目錄名即相應進程號(PID),所有進程號子目錄構成了/proc/目錄的全部內容 。
許多提供進程數(shù)據(jù)和控制點的內核數(shù)據(jù)結構在/proc//子目錄下有相應反映,
比如,多線程進程中每個LWP的相關數(shù)據(jù)和控制結構體現(xiàn)在/proc//lwp/
中 。/proc/目錄下的對象不是真實磁盤文件,這些對象位于內核內存中,用戶執(zhí)行l(wèi)s(1)命令顯示/proc/目錄結構時,系統(tǒng)讀取內核內存并返回相應內容 。
通過/proc,相對簡便地就可以獲取進程信息,比如進程執(zhí)行環(huán)境、內核資源利
用率 。進程控制和procfs直接相關,procfs最初的設計目的很簡單,就是為編寫調試器提供一組接口,現(xiàn)在已經有了相當大的改進 。
Solaris系統(tǒng)在/usr/proc/bin/目錄下提供了一組工具從/proc中析取進程信息,
同時可以進行簡單的進程控制 ??梢詤⒖磒roc(1)手冊頁 。進程狀態(tài)命令ps(1)也利用了procfs接口 。
下面列舉可以通過/proc文件系統(tǒng)獲取的控制和信息數(shù)據(jù),關于這些文件的詳細
信息參看proc(4)手冊頁 。
/proc -- procfs的根目錄
/proc/ -- 某一確定進程的根目錄,進程PID正是子目錄名
/proc//as -- 進程地址空間,即struct proc結構中p_as成員 。換句話說,進
程地址空間以/proc//as文件的形式展現(xiàn)出來,通過這個偽文件系統(tǒng)接口可以訪
問相應進程地址空間 。
struct as * p_as; /* 進程地址空間指針 */
# ls -l /proc/53/as
-rw------- 1 root root 1458176 2月 8 17:34 /proc/53/as
struct proc結構定義在/usr/include/sys/proc.h文件中 。
/proc//ctl -- 一個進程控制文件 。可以只寫打開該文件,然后給相應進程發(fā)
送控制信息 ??梢酝V?、啟動進程,設置進程停止于某一特殊事件 。這演示了procfs的強大和便捷 。進程控制、事件跟蹤可以通過打開相應進程的控制文件完成,只需要寫入期待行為的控制信息 。參看proc(4)手冊了解控制信息和控制函數(shù)的詳細介紹 。
/proc//status -- 進程狀態(tài)信息 。對應/usr/include/sys/procfs.h文件里定
義的struct pstatus結構 。proc(4)手冊頁里也有描述 。這個結構中有一個成員
lWPStatus_t pr_lwp; /* status of the representative lwp */
該成員對應一個有代表性的LWP(輕量級進程) 。單線程進程只有一個LWP,很容易選定這個有代表性的LWP 。那些多線程進程通常有多個LWPs,一個內核函數(shù)遍歷當前進程的所有LWPs,根據(jù)他們的狀態(tài)選取這個有代表性的LWP 。首先選取正在執(zhí)行中的LWP,如果不存在這樣的LWP,按照可運行、休眠、停止的順序選取LWP 。
/proc//lstatus -- lwpstatus結構數(shù)組,進程中每個LWP對應一個lwpstatus結構 。struct lwpstatus結構定義在/usr/include/sys/procfs.h文件中 。
/proc//psinfo -- 類似ps(1)命令提供的進程信息 。對應struct psinfo結構,
推薦閱讀
- Intel 平臺版本 Solaris 8 安裝指南 --6.故障排除
- 關于Solaris的syslog機制
- Solaris9的jumpstart服務器配置中文詳解
- configure TCP Wrappers in Solaris 9
- SPARC/Solaris 8下快速終結TCP有限狀態(tài)機的TIME_WAIT狀態(tài)
- Solaris上的域名系統(tǒng)配置
- SUN Solaris 7重新安裝手記
- SOLARIS+QMAIL+VPOPMAIL+IGENUS+QMAILAMDIN
- Solaris中的磁盤設備
- Solaris 的引導與初始化
