Это функция файловой системы cgroup
, а не функция команды mkdir
. Команда mkdir
просто вызывает системный вызов mkdir
. Системный вызов mkdir
вызывает уровень VFS в ядре, который выполняет некоторый анализ команды и, в частности, определяет, в какой файловой системе должен быть создан каталог, анализируя иерархию монтирования. точки в дереве каталогов. Затем уровень VFS вызывает код драйвера для этой файловой системы, которым является драйвер файловой системы cgroup
.
Что делает драйвер файловой системы для каждой операции файловой системы (открытие файла, чтение, запись, создание каталога, удаление каталога и т. Д.), Зависит от этого драйвера файловой системы. Файловая система для хранения на диске изменит содержимое диска, чтобы записать существование каталога в соответствии с указаниями. Сетевая файловая система отправит команду по сети. Файловая система proc сообщает информацию о процессах и ядре , а файловая система cgroup делает нечто подобное.
Поведение файловой системы cgroup описано в документации ядра .
Новые контрольные группы создаются с помощью системного вызова mkdir или команды оболочки . Свойства контрольной группы, такие как ее флаги, изменяются путем записи в соответствующий файл в этом каталоге контрольных групп , как указано выше.
Когда драйвер файловой системы cgroup получает команду mkdir
на этом уровне иерархии, он интерпретирует это как «создать новую cgroup» с заданным именем. Когда он получает команду readdir
(системный вызов, который перечисляет записи каталога) в / cgroup / cpu0
, он перечисляет контрольные группы на этом процессоре. Когда он получает команду readdir
в / cgroup / cpu0 / group0
, он сообщает фиксированный набор файлов, которые отражают параметры этой cgroup, хранящиеся в памяти. Когда он получает команду чтения
или записи
для этих файлов, он сообщает или изменяет соответствующий параметр.
Разработчики cgroup предпочли полностью контролировать ее через файловую систему, а не добавлять новые системные вызовы. Это упрощает использование без необходимости разработки большого количества библиотечного кода и множества утилит.