Я задавал этот вопрос в Unix & Linux, и они сказали мне задать его здесь.
Мне нужно использовать функцию с той же функциональностью, что и системный вызов fork
.
Насколько я понимаю, для создания процесса из пространства ядра потребовался бы вызов do_fork
, но я не могу понять, как бы я это сделал. Он определен в fork.c
, и, поскольку он не является заголовочным файлом, я не могу его включить, можно? Пожалуйста, помогите!
Edit: причина, по которой мне нужно fork
из ядра, заключается в эксперименте по проверке использования ресурсов delta queue , типа очереди для спящих процессов, которые спят для известного количества время (например, 5 миллисекунд). Причина, по которой я хочу смоделировать это, а не кодировать реальную дельта-очередь, заключается в том, что у меня нет опыта / знаний, чтобы это делать. Для моего моделирования я сделал системный вызов, который выполняется как дельта-очередь, но для его проверки мне нужно перевести процессы в режим сна. Использование fork
было бы для меня самым простым способом сделать множество процессов для теста (проще, чем использование kthreads
), но, поскольку я планирую запустить этот эксперимент в пространстве ядра, я не могу просто запустить системный вызов. Я мог бы запустить его в пространстве пользователя, но тогда это добавило бы дополнительный уровень абстракции, которого не было бы в реальной дельта-очереди, как это было бы выполнено ядром. Это сведет к минимуму актуальность моего эксперимента.