/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의 설계자는 새로운 시스템 호출을 추가하는 대신 파일 시스템을 통해 완전히 제어하기로 결정했습니다. 이를 통해 많은 라이브러리 코드와 유틸리티를 개발하지 않고도 쉽게 사용할 수 있습니다.

관련 정보