Что такое настоящий процесс Grand GRAND Ancestor в ядре Linux?

Пытаясь найти все корни определенного приложения процесса, созданного на C, и вызывая пользовательский системный вызов, который я сделал, который возвращает массив всего процесса с использованием информации task_struct*, я понял, что задача swapper/0 — это задача, которая указывает на себя через родительский указатель (т.е. swapper/0->parent == swaper/0). Мой вопрос: какой из них является настоящим великим GRAND-родителем любого процесса, работающего в пользовательском пространстве? это swapper/0 или задача прямо перед ней (или дочерний элемент swapper/0)? т.е. Является ли swapper/0 реальной задачей или просто конечным флагом для обхода родительских связанных списков?

Кстати, этот вопрос расширяет вопрос, заданный мной в этом сообщении: Конечный флаг для обхода предков в пространстве ядра в C.


person falhumai    schedule 16.04.2016    source источник
comment
unix.stackexchange.com/questions/83322/what -process-has-pid-0   -  person    schedule 17.04.2016
comment
Теперь я понял, что swapper/0 является частью системы, используя пост, который вы мне дали, но должен ли я считать его корнем всех родителей в этом случае?   -  person falhumai    schedule 17.04.2016
comment
Мое понимание (которое может быть неточным) заключается в том, что swapper/0 владеет набором потоков ядра, а init/1 владеет пользовательскими процессами.   -  person Michael Burr    schedule 17.04.2016


Ответы (1)


init (pid 1) — это процесс, который является предком всех других пользовательских процессов. init отвечает за запуск всех процессов пользовательского уровня, которые запускают систему. Кроме того, процесс, родительский процесс которого завершается, наследуется процессом init (т. е. процесс init становится его родителем).

person Andy Schweig    schedule 16.04.2016