/ cgroupの下のmkdirはファイルとディレクトリを作成します。

/ cgroupの下のmkdirはファイルとディレクトリを作成します。

その間、私はmkdirがディレクトリだけを作成できると思いました。しかし、特定の条件でファイルを生成することができるという事実に驚きました。私は最近cgroupを使い始めましたが、/ cgroupで "mkdir"コマンドを実行するとファイルとディレクトリが作成されます。

[abc@master ~]$ which mkdir

/bin/mkdir

[abc@master ~]$ mkdir /cgroup/cpu/group0

[abc@master ~]$ ls /cgroup/cpu/group0/

cgroup.event_control  cpu.cfs_period_us     cpu.rt_period_us      cpu.shares       
notify_on_release     cgroup.procs          cpu.cfs_quota_us      cpu.rt_runtime_us
cpu.stat              tasks.

このコマンドはどのようにmkdirファイルとディレクトリを生成できますか?

私はこれがcgroupsでのみ起こるのを見ることができます。オペレーティングシステムは、cgroupのmkdirと他の場所のmkdirをどのように区別しますか?

オンラインで答えを探しましたが、実際に役立つものが見つかりませんでした。関連情報をいただきありがとうございます。

ベストアンサー1

cgroupこれはコマンドではなくファイルシステムの機能ですmkdir。このコマンドはシステムコールmkdirのみを呼び出します。mkdirシステムコールmkdirの呼び出し仮想FSコマンドの一部を分析するカーネルの階層で、特にディレクトリツリーのマウントポイント階層を分析して、ディレクトリを作成するファイルシステムを決定します。その後、VFS層はそのファイルシステム用のドライバ、つまりcgroupファイルシステムドライバのコードを呼び出します。

各ファイルシステムの操作(ファイルの開く、読み取り、書き込み、ディレクトリの作成、ディレクトリの削除など)に対してファイルシステムドライバが実行する操作は、ファイルシステムドライバによって異なります。ディスクの保存に使用されるファイルシステムは、指示に従ってディレクトリの存在を記録するようにディスクの内容を変更します。ネットワークファイルシステムはネットワーク経由でコマンドを送信します。これprocファイルシステムは、プロセスとカーネルに関する情報を報告します。、cgroupファイルシステムも同様のことを行います。

cgroupファイルシステムの動作は次のとおりです。カーネル文書

mkdirシステムコールまたはシェルコマンドを使用して新しいcgroupを作成します。上記のように、cgroupsディレクトリ内の対応するファイルに書き込むことで、cgroupの属性(フラグなど)を変更できます。

cgroup ファイルシステムドライバがmkdirその階層レベルでコマンドを受け取ると、そのコマンドは指定された名前の「新しい cgroup の生成」と解釈されます。readdir(ディレクトリエントリを列挙するシステムコール)からコマンドを受信すると、/cgroup/cpu0そのCPUのcgroupを一覧表示します。readdirからコマンドを受け取ると、/cgroup/cpu0/group0メモリに保存されている対応するcgroupのパラメータを反映する固定ファイルセットが報告されます。これらのファイルからreadコマンドを受信すると、そのパラメータを報告またはwrite変更します。

cgroupの設計者は、新しいシステムコールを追加するのではなく、ファイルシステムを介して完全に制御することにしました。これにより、多くのライブラリコードとユーティリティを開発することなく簡単に使用できます。

おすすめ記事