Короткие ответы:
- Нет это не процесс
- Пользовательские потоки не имеют прав в init.
Init - это только первый процесс; он не управляет никакими процессами или потоками. Он создает некоторые, используя syscalls ядра fork () и exec.
Я думаю, у вас есть грязное представление о том, что такое процесс. это не просто означает выполнение кода. Да, ядро запускается до init (и даже до этого загрузчик). Но у «процесса» есть определенное определение:
- Работает в пространстве пользователя
- Запускается с идентификатором процесса
- Многие взаимодействия должны проходить через ядро
- Все ресурсы должны прийти из ядра
- Должен быть запланирован ядром
Итак, как только ядро инициализируется, оно запускает init, который затем порождает любые другие процессы, о которых говорит его конфигурация.
Что касается # 2, все ядро находится в ядре. Думайте о ядре как о большой области кода. Опять же, не процесс, а большой блок кода. Части ядра имеют дело с управлением памятью, его части - с частями планирования (такими как драйверы и т. Д.), А некоторые - с процессами планирования.
Ядро не ведет себя как процесс вообще. Это не запланировано, оно либо запускается от имени процесса (так называемый контекст процесса или пользовательский контекст), либо запускается в результате прерывания или исключения (так называемый контекст прерывания).
Тем не менее, ядро Linux порождает потоки ядра для выполнения некоторых задач или для того, чтобы избежать выполнения чего-либо в контексте прерывания слишком долго (это то, что делает поток ksoftirqd, избегая чрезмерных задержек, которые могут привести, например, к пропаданию звука, ...) ,
Вы можете увидеть потоки ядра на выходе
ps
команды. Их легко идентифицировать: их имя в скобках. Некоторые из них запускают один экземпляр на каждый ЦП, ЦП идентифицируется числом после косой черты, поэтому [ksoftirqd / 0] является экземпляром ksoftirqd на ЦП 0.источник
Существуют концепции в микроядрах, где различные части ядра действительно являются процессами, а основной страж в основном управляет IPC.
Linux - к лучшему или к худшему - не является системой с микроядром.
источник
Нет, это не так ... Ядро (и расширения ядра) загружаются непосредственно в память. Если в ядре есть небезопасный код, между ним и большими проблемами ничего не стоит.
Кроме того, ядро в основном выполняет / переключается между процессами. Очевидно, что то, что на самом деле запускает процессы, не будет самим процессом.
(tl; dr 1. no 2. часть ядра / его расширение)
источник
Ниндзя написал: «Ядро на самом деле не ведет себя как процесс вообще. Оно не запланировано»
Что ж, существует неактивный процесс (в основном pid 0, хотя он нигде не показан), который запланирован и всегда находится в работоспособном состоянии.
источник
Источник: https://courses.cs.washington.edu/courses/cse351/19su/lectures/18/CSE351-L18-processes_19su.pdf , стр. 36.
источник