Solaris核心proc目錄簡介(轉)
Solaris核心proc目錄簡介(轉)[@more@]【導讀】程式檔案系統 -- procfs -- 允許像管理檔案那樣直接管理核心程式。是一個偽檔案系統,提供了核心程式表的檔案系統介面。
/proc/目錄簡介
程式檔案系統,procfs,是一個偽檔案系統,它允許對一些非傳統意義上的檔案透過標準檔案I/O介面進行訪問。procfs將Solaris核心程式架構進行了抽象,比如當前系統中所有執行著的程式會在/proc/目錄下有所體現。系統中每個程式對應/proc/目錄下的一個子目錄,子目錄名即相應程式號(PID),所有程式號子目錄構成了/proc/目錄的全部內容。
許多提供程式資料和控制點的核心資料結構在/proc//子目錄下有相應反映,
比如,多執行緒程式中每個LWP的相關資料和控制結構體現在/proc//lwp/ 中。 /proc/目錄下的物件不是真實磁碟檔案,這些物件位於核心記憶體中,使用者執行ls(1)命令顯示/proc/目錄結構時,系統讀取核心記憶體並返回相應內容。
透過/proc,相對簡便地就可以獲取程式資訊,比如程式執行環境、核心資源利用率。程式控制和procfs直接相關,procfs最初的設計目的很簡單,就是為編寫偵錯程式提供一組介面,現在已經有了相當大的改進。
Solaris系統在/usr/proc/bin/目錄下提供了一組工具從/proc中析取程式資訊,同時可以進行簡單的程式控制。可以參看proc(1)手冊頁。程式狀態命令ps(1)也利用了procfs介面。
下面列舉可以透過/proc檔案系統獲取的控制和資訊資料,關於這些檔案的詳細資訊參看proc(4)手冊頁。
/proc -- procfs的根目錄
/proc/ -- 某一確定程式的根目錄,程式PID正是子目錄名
/proc//as -- 程式地址空間,即struct proc結構中p_as成員。換句話說,程式地址空間以/proc//as檔案的形式展現出來,透過這個偽檔案系統介面可以訪問相應程式地址空間。
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 -- 一個程式控制檔案。可以只寫開啟該檔案,然後給相應程式傳送控制資訊。可以停止、啟動程式,設定程式停止於某一特殊事件。這演示了procfs的強大和便捷。程式控制、事件跟蹤可以透過開啟相應程式的控制檔案完成,只需要寫入期待行為的控制資訊。參看proc(4)手冊瞭解控制資訊和控制函式的詳細介紹。
/proc//status -- 程式狀態資訊。對應/usr/include/sys/procfs.h檔案裡定義的struct pstatus結構。proc(4)手冊頁裡也有描述。這個結構中有一個成員
lwpstatus_t pr_lwp; /* status of the representative lwp */
該成員對應一個有代表性的LWP(輕量級程式)。單執行緒程式只有一個LWP,很容易選定這個有代表性的LWP。那些多執行緒程式通常有多個LWPs,一個核心函式遍歷當前程式的所有LWPs,根據他們的狀態選取這個有代表性的LWP。首先選取正在執行中的LWP,如果不存在這樣的LWP,按照可執行、休眠、停止的順序選取LWP。
/proc//lstatus -- lwpstatus結構陣列,程式中每個LWP對應一個lwpstatus結構。struct lwpstatus結構定義在/usr/include/sys/procfs.h檔案中。
/proc//psinfo -- 類似ps(1)命令提供的程式資訊。對應struct psinfo結構,類似struct pstatus結構,struct psinfo結構中有一個成員
lwpsinfo_t pr_lwp; /* information for representative lwp */
該成員的對應一個有代表性的LWP。
/proc//lpsinfo -- lwpsinfo結構陣列,程式中每個LWP對應一個lwpsinfo結構
/proc//map -- 地址空間對映資訊,可以用pmap(1)命令顯示這些資料資訊。
/proc//rmap -- 程式中保留地址空間段。用pmap -r命令顯示這些資料資訊。
/proc//xmap -- 擴充套件地址空間對映資訊。用pmap -x命令顯示這些資料資訊。
/proc//cred -- 程式身份驗證資訊,對應/usr/include/sys/procfs.h檔案中
定義的struct prcred結構。
/proc//sigact -- sigaction結構陣列,描述和本程式相關的所有訊號設定。
struct sigaction結構定義在/usr/include/sys/signal.h檔案中。
/proc//auxv -- auxv_t結構陣列,包含程式執行時傳遞給動態連結器的初始值。
auxv_t結構定義在/usr/include/sys/auxv.h檔案中。
/proc//ldt -- 區域性描述符表(LDT),僅存於Intel x86架構。
/proc//usage -- 程式資源利用率的相關資料,對應struct prusage結構,該
結構定義在/usr/include/sys/procfs.h檔案中。
/proc//lusage -- prusage結構陣列,對應各個LWP資源利用狀況。
/proc//pagedata -- 程式地址空間的另外一種表現方式,可以用於跟蹤頁面級
的引用和修改。參看struct prpageheader結構定義。
/proc//watch -- prwatch結構陣列。透過寫控制檔案/proc//ctl可以設定PCWATCH操作,此時建立該檔案。允許監視一個或多個地址空間範圍,當訪問這些被監視頁面時,產生一次陷入。
scz注:這個功能和SoftIce的BPR功能類似,adb支援這種陷入,不知是否利用了procfs
/proc//cwd -- 到程式當前工作目錄的符號連結
/proc//root -- 到程式根目錄的符號連結(和上面那個什麼區別)
/proc//fd -- 這是一個子目錄,包含程式開啟的檔案控制程式碼
/proc//fd/nn -- 對應程式開啟的某個確定的檔案控制程式碼
/proc//object -- 這是一個子目錄,包含程式相關的可執行檔案以及動態連結庫。
/proc//object/nn -- 二進位制目標檔案。程式對應的可執行檔名為a.out,其餘是程式相關的動態連結庫檔案。
object目錄提供的資訊是程式級的,每個/proc//目錄有一個lwp子目錄,提供了LWP級的資訊:
/proc//lwp -- 這是一個子目錄,包含程式中所有LWPs的資訊
/proc//lwp/ -- 這是一個子目錄,包含對應lwpid的LWP資訊
/proc//lwp//lwpctl -- 一個控制檔案,透過它可以在LWP級上針對每個LWP釋出控制操作
/proc//lwp//lwpstatus -- LWP狀態資訊,對應lwpstatus結構,該結構定義在/usr/include/sys/procfs.h檔案中
/proc//lwp//lwpsinfo -- 對應lwpsinfo結構,同樣定義在/usr/include/sys/procfs.h檔案中
/proc//lwp//lwpusage -- LWP資源利用資訊,對應prusage結構
/proc//lwp//xregs -- 這個檔案是處理器架構相關的,某些平臺上可能沒有這個檔案。對於SPARC系統,這個文對/usr/include/sys/procfs_isa.h檔案中定義的prxregset結構。
/proc//lwp//gwindows -- 常規暫存器視窗。這個檔案僅存於SPARC架構的系統,描述LWP使用的常規暫存器組(硬體上下文的一部分),對應gwindows結構,該結構定義在/usr/include/sys/regset.h檔案中。
/proc//lwp//asrs -- 輔助暫存器組,僅存於SPARC V9(UltraSPARC)架構,專為SPARC V9架構定義的一組額外的硬體暫存器,要求sun4u、64-bit核心(Solaris 7及其後續版本)、64-bit程式。注意,64-bit核心可以執行32-bit程式,但是32-bit程式沒有這樣一個檔案與之對應。
/proc/目錄簡介
程式檔案系統,procfs,是一個偽檔案系統,它允許對一些非傳統意義上的檔案透過標準檔案I/O介面進行訪問。procfs將Solaris核心程式架構進行了抽象,比如當前系統中所有執行著的程式會在/proc/目錄下有所體現。系統中每個程式對應/proc/目錄下的一個子目錄,子目錄名即相應程式號(PID),所有程式號子目錄構成了/proc/目錄的全部內容。
許多提供程式資料和控制點的核心資料結構在/proc//子目錄下有相應反映,
比如,多執行緒程式中每個LWP的相關資料和控制結構體現在/proc//lwp/ 中。 /proc/目錄下的物件不是真實磁碟檔案,這些物件位於核心記憶體中,使用者執行ls(1)命令顯示/proc/目錄結構時,系統讀取核心記憶體並返回相應內容。
透過/proc,相對簡便地就可以獲取程式資訊,比如程式執行環境、核心資源利用率。程式控制和procfs直接相關,procfs最初的設計目的很簡單,就是為編寫偵錯程式提供一組介面,現在已經有了相當大的改進。
Solaris系統在/usr/proc/bin/目錄下提供了一組工具從/proc中析取程式資訊,同時可以進行簡單的程式控制。可以參看proc(1)手冊頁。程式狀態命令ps(1)也利用了procfs介面。
下面列舉可以透過/proc檔案系統獲取的控制和資訊資料,關於這些檔案的詳細資訊參看proc(4)手冊頁。
/proc -- procfs的根目錄
/proc/ -- 某一確定程式的根目錄,程式PID正是子目錄名
/proc//as -- 程式地址空間,即struct proc結構中p_as成員。換句話說,程式地址空間以/proc//as檔案的形式展現出來,透過這個偽檔案系統介面可以訪問相應程式地址空間。
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 -- 一個程式控制檔案。可以只寫開啟該檔案,然後給相應程式傳送控制資訊。可以停止、啟動程式,設定程式停止於某一特殊事件。這演示了procfs的強大和便捷。程式控制、事件跟蹤可以透過開啟相應程式的控制檔案完成,只需要寫入期待行為的控制資訊。參看proc(4)手冊瞭解控制資訊和控制函式的詳細介紹。
/proc//status -- 程式狀態資訊。對應/usr/include/sys/procfs.h檔案裡定義的struct pstatus結構。proc(4)手冊頁裡也有描述。這個結構中有一個成員
lwpstatus_t pr_lwp; /* status of the representative lwp */
該成員對應一個有代表性的LWP(輕量級程式)。單執行緒程式只有一個LWP,很容易選定這個有代表性的LWP。那些多執行緒程式通常有多個LWPs,一個核心函式遍歷當前程式的所有LWPs,根據他們的狀態選取這個有代表性的LWP。首先選取正在執行中的LWP,如果不存在這樣的LWP,按照可執行、休眠、停止的順序選取LWP。
/proc//lstatus -- lwpstatus結構陣列,程式中每個LWP對應一個lwpstatus結構。struct lwpstatus結構定義在/usr/include/sys/procfs.h檔案中。
/proc//psinfo -- 類似ps(1)命令提供的程式資訊。對應struct psinfo結構,類似struct pstatus結構,struct psinfo結構中有一個成員
lwpsinfo_t pr_lwp; /* information for representative lwp */
該成員的對應一個有代表性的LWP。
/proc//lpsinfo -- lwpsinfo結構陣列,程式中每個LWP對應一個lwpsinfo結構
/proc//map -- 地址空間對映資訊,可以用pmap(1)命令顯示這些資料資訊。
/proc//rmap -- 程式中保留地址空間段。用pmap -r命令顯示這些資料資訊。
/proc//xmap -- 擴充套件地址空間對映資訊。用pmap -x命令顯示這些資料資訊。
/proc//cred -- 程式身份驗證資訊,對應/usr/include/sys/procfs.h檔案中
定義的struct prcred結構。
/proc//sigact -- sigaction結構陣列,描述和本程式相關的所有訊號設定。
struct sigaction結構定義在/usr/include/sys/signal.h檔案中。
/proc//auxv -- auxv_t結構陣列,包含程式執行時傳遞給動態連結器的初始值。
auxv_t結構定義在/usr/include/sys/auxv.h檔案中。
/proc//ldt -- 區域性描述符表(LDT),僅存於Intel x86架構。
/proc//usage -- 程式資源利用率的相關資料,對應struct prusage結構,該
結構定義在/usr/include/sys/procfs.h檔案中。
/proc//lusage -- prusage結構陣列,對應各個LWP資源利用狀況。
/proc//pagedata -- 程式地址空間的另外一種表現方式,可以用於跟蹤頁面級
的引用和修改。參看struct prpageheader結構定義。
/proc//watch -- prwatch結構陣列。透過寫控制檔案/proc//ctl可以設定PCWATCH操作,此時建立該檔案。允許監視一個或多個地址空間範圍,當訪問這些被監視頁面時,產生一次陷入。
scz注:這個功能和SoftIce的BPR功能類似,adb支援這種陷入,不知是否利用了procfs
/proc//cwd -- 到程式當前工作目錄的符號連結
/proc//root -- 到程式根目錄的符號連結(和上面那個什麼區別)
/proc//fd -- 這是一個子目錄,包含程式開啟的檔案控制程式碼
/proc//fd/nn -- 對應程式開啟的某個確定的檔案控制程式碼
/proc//object -- 這是一個子目錄,包含程式相關的可執行檔案以及動態連結庫。
/proc//object/nn -- 二進位制目標檔案。程式對應的可執行檔名為a.out,其餘是程式相關的動態連結庫檔案。
object目錄提供的資訊是程式級的,每個/proc//目錄有一個lwp子目錄,提供了LWP級的資訊:
/proc//lwp -- 這是一個子目錄,包含程式中所有LWPs的資訊
/proc//lwp/ -- 這是一個子目錄,包含對應lwpid的LWP資訊
/proc//lwp//lwpctl -- 一個控制檔案,透過它可以在LWP級上針對每個LWP釋出控制操作
/proc//lwp//lwpstatus -- LWP狀態資訊,對應lwpstatus結構,該結構定義在/usr/include/sys/procfs.h檔案中
/proc//lwp//lwpsinfo -- 對應lwpsinfo結構,同樣定義在/usr/include/sys/procfs.h檔案中
/proc//lwp//lwpusage -- LWP資源利用資訊,對應prusage結構
/proc//lwp//xregs -- 這個檔案是處理器架構相關的,某些平臺上可能沒有這個檔案。對於SPARC系統,這個文對/usr/include/sys/procfs_isa.h檔案中定義的prxregset結構。
/proc//lwp//gwindows -- 常規暫存器視窗。這個檔案僅存於SPARC架構的系統,描述LWP使用的常規暫存器組(硬體上下文的一部分),對應gwindows結構,該結構定義在/usr/include/sys/regset.h檔案中。
/proc//lwp//asrs -- 輔助暫存器組,僅存於SPARC V9(UltraSPARC)架構,專為SPARC V9架構定義的一組額外的硬體暫存器,要求sun4u、64-bit核心(Solaris 7及其後續版本)、64-bit程式。注意,64-bit核心可以執行32-bit程式,但是32-bit程式沒有這樣一個檔案與之對應。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-959441/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgre目錄結構簡介
- proc_create_data函式建立/proc/目錄下的檔案函式
- DB2目錄結構簡介DB2
- 核心簡介
- Linux核心原始碼目錄Linux原始碼
- 【Linux入門教程】1 簡介、檔案管理、目錄Linux
- Typora 使用1之-----簡介、顯示大綱目錄
- linux 程式引數檔案 /proc/pid/cmdline 簡介Linux
- 目錄樹轉 JSONJSON
- MySQL 8.0 目錄介紹MySql
- 核心程式設計培訓目錄程式設計
- 核心proc檔案系統與seq介面(3)---核心proc檔案底層結構淺析
- bashshell目錄介紹 及其使用
- [轉帖]linux的tmpfs和/dev/shm目錄的詳細介紹Linuxdev
- scRNA_seq:單細胞轉錄組測序簡介
- Linux核心啟動流程(簡介)Linux
- [轉]SSH框架簡介框架
- Linux具體目錄結構介紹!Linux
- [java基礎]之JDK目錄介紹JavaJDK
- cd命令切換目錄簡寫
- vue 原始碼學習(一) 目錄結構和構建過程簡介Vue原始碼
- VFS簡介和核心操作函式函式
- linux將掛載在home目錄下的磁碟轉移到根目錄下Linux
- powermt 命令簡介(轉載)
- Android入門教程 |res資源目錄簡介與shape的繪製和使用Android
- ArkTS開發HarmonyOS應用目錄介紹
- 【微服務目錄】.NET Core 微服務介紹微服務
- IntelliJ IDEA安裝目錄的核心檔案講解IntelliJIdea
- 批次目錄檔名大小寫轉換器
- 教你玩轉Linux—系統目錄結構Linux
- rewrite實現目錄之間的跳轉
- 圖文介紹Linux chmod目錄許可權Linux
- 0章 RxJava2課程目錄介紹RxJava
- [MySQL光速入門]000 開篇介紹&目錄MySql
- 01 . 容器編排簡介及Kubernetes核心概念
- 快速上手Linux核心命令(三):檔案和目錄操作命令Linux
- 【目標區域捕獲-2】目標區域捕獲簡介
- 【kernel】從 /proc/sys/net/ipv4/ip_forward 引數看如何玩轉 procfs 核心引數Forward
- solaris10中安裝oracle核心引數的調整Oracle