cgroup檔案系統

2021-06-25 21:45:50 字數 1994 閱讀 4436

檔案系統實現的。

三個子系統,並把層級掛載到了

/cgroup/cpu_and_mem.:

的cgroup。

相關子系統的控制檔案,你可以讀取這些控制檔案,這些控制檔案儲存的值就是對相應的

cgrouop

的控制資訊,你也可以寫控制檔案來更改控制資訊。

的檔案,裡面的包含了所有屬於這個

cgroup

的程序的程序號。

下,你cat tasks

,應該是空的,因為此時這個

cgroup

裡面還沒有程序。你

cd /cgroup/cpu_and_mem 再cat tasks

,你可以看到系統中所有程序的程序號,這是因為每建立乙個層級的時候,系統的所有程序都會自動被加到該層級的根

cgroup

裡面。tasks

檔案不僅可以讀,還可以寫,你將乙個程序的程序號寫入到某個

cgroup

目錄下的

tasks

裡面,你就將這個程序加入了相應的

cgroup。

檔案系統的實現之前,必須簡單的介紹一下

linux vfs。

unix

標準檔案系統的所有系統呼叫。

vfs對使用者提供統一的讀寫等檔案操作呼叫介面,當使用者呼叫讀寫等函式時,核心則呼叫特定的檔案系統實現。具體而言,檔案在核心記憶體中是乙個

file

資料結構來表示的。這個資料結構包含乙個

f_op

的字段,該字段中包含了一組指向特定檔案系統實現的函式指標。當使用者執行

read()

操作時,核心呼叫

sys_read(),

然後sys_read

()查詢到指向該檔案屬於的檔案系統的讀函式指標,並呼叫它,即file->f_op->read().

linux

並沒有採用

c++之類的物件導向的語言,而是採用了

c的結構體,然後在結構體裡面定義了一系列函式指標,這些函式指標對應於物件的方法。

實現的檔案系統,都必須實現定義這些物件,並實現這些物件中定義的函式指標。

cgroup

檔案系統也不例外,下面我們來看

cgroups

中這些物件的定義。

系統呼叫掛載

cgroup

檔案系統時使用。

mkdir

建立cgroup

或者用rmdir

刪除cgroup

時,就會呼叫相應的函式指標指向的函式。比如:使用

mkdir

建立cgroup

時,會呼叫

cgroup_mkdir

,然後在

cgroup_mkdir

中再呼叫具體實現的

cgroup_create

函式。

檔案系統中,對目錄下的控制檔案進行操作時,會呼叫該結構體中指標指向的函式。比如:對檔案進行讀操作時,會呼叫

cgroup_file_read

,在cgroup_file_read

中,會根據需要呼叫該檔案對應的

cftype

結構體定義的對應讀函式。

檔案系統中的

cgroups

控制檔案。

cgroups

定義乙個

cftype

的結構體來管理控制檔案。下面我們來看

cftype

的定義:

通過實現

cgroup

檔案系統來為使用者提供管理

cgroup

的工具,而

cgroup

檔案系統是基於

linux vfs

實現的。相應地,

cgroups

為控制檔案定義了相應的資料結構

cftype

,對其操作由

cgroup

檔案系統定義的通過操作捕獲,再呼叫

cftype

定義的具體實現。

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...

檔案系統 檔案系統的架構

vfs是具體檔案系統的抽象,依靠超級塊 inode dentry以及檔案這些結構來發揮作用,檔案系統的架構就體現在這些結構的使用方式中。1 超級塊作用分析 1 2 所有的dentry都指向乙個dentry hashtable dentry hashtable是乙個樹組,每乙個樹組成員都是hash鍊錶...

檔案系統 編寫檔案系統

8.5 編寫乙個檔案系統 如果寫乙個實際檔案系統,但是涉及的東西太多,不容易簡明扼要的理解檔案系統的實現。linux核心中提供的romfs檔案系統是個非常理想的例子,既有實際應用架構,也清晰明了,故以romfs為例項分析檔案系統的實現。一 linux檔案系統的實現要素 編寫新檔案系統涉及一些基本物件...