В Linux реалізована чітка ієрархія процесів в системі. Кожен процес в системі має всього одного з батьків і може мати один або пболее породжених процесів.
![](http://ok-t.ru/studopediasu/baza2/451245263420.files/image011.jpg)
На останній фазі завантаження ядро підіймається кореневу файлову систему і формує середовище виконання нульового процесу, створюючи простір ппроцесса, инициализируя нульову точку входу в таблиці процесу і роблячи кореневий каталог поточним для процесу. Коли формування середовища виконання процесу закінчується, система виповнюється вже у вигляді нульового процесу. Нульовий процес "гілкується", запускаючи fork прямо з ядра, оскільки сам процес виконується в режимі ядра. Код, що виконується
породженим процесом 1, включає в себе виклик системної функції exec, запускі на виконання програму з файлу/etc/init". На відміну від нульового процесу, який є процесом системного рівня, що виконуються в режимі ядра, процес 1 відноситься до користувача рівня. Зазвичай процес 1 іменується процесом init, оскільки він відповідає за ініціалізацію нових процесів. пНа самом деле ви можете помістити будь-яку програму в /sbin/init і ядро запустить її як тільки закінчить завантажуватися. пЗадачей init"а є запуск всього іншого потрібним чином.
Init читає файл /etc/inittab, в якому містяться інструкції для подальшої роботи. Першою інструкцією, звичайно, є запуск сценарію ініціалізації. У системах, заснованих на Debian, скриптом ініціалізації буде /etc/init.d/rcS, у Red Hat - /etc/rc.d/rc.sysinit. Це те місце, де відбувається перевірка і монтування файлових систем (/etc/fstab), установка годин системного часу, включення своп розділу, присвоєння імені хоста і т.д. пДалее буде викликаний наступний скрипт, який переведе нас на "рівень запуску" за замовчуванням. це означає просто деякий набір демонів, які повинні бути запущені.
Syslogd (/etc/init.d/syslogd) - скрипт, який відповідає за запуск і зупинка системного логгера (система журнальної реєстрації подій SYSLOG, дозволяє записувати системні повідомлення у файли журналів /var/log).
Xined-Демон Інтернет-служб, управляє сервісами для інтернету. Демон прослуховує сокети і якщо в якомусь з них є повідомлення попределяет якого сервісу належить даний сокет і викликає відповідну програму для обробки запиту.
crond - Демон cron відповідає за перегляд файлів crontab і виконання, внесених до нього команд у вказаний час для опредленного ппользователя. Програма crontab(1) спілкується з crond через файл cron.update, який повинен знаходитись разом з рештою файлів каталогу crontab, як правило - /var/spool/cron/crontabs.
Останнім важливим дією init є запуск деякої кількості getty. Mingetty - віртуальні термінали, призначенням яких пявляется спостереження за консолями користувачів.
getty запускає програму login - початок сеансу роботи користувача в системі. Завдання login"а - реєстрація користувача в системі. пА вже після успішної реєстрації найчастіше завантажуватись командний інтерпретатор користувача (shell), наприклад, bash, вірніше після реєстрації користувача вантажиться програма, вказана для даного користувача в файлі /etc/passwd (у більшості випадків це bash).
Запуск процесів
Існує два шляхи запуску процесів в залежності від типу процесу.
Для користувача процесів запуск здійснюється в інтерактивному режимі шляхом введення довільній команди або запуску ппроизвольного скрипта. Для системних процесів і демонів використовуються инициализационные скрипти (init-скрипти). Дані скрипти писпользуется процесом init для запусків інших процесів при завантаженні ОС. Инициализационные скрипти зберігаються у каталозі /etc. У даному пкаталоге існують підкаталоги, іменовані rcO.d - rc6.d, кожен з яких асоційований з певним рівнем виконання (runlevel). У кожному з цих каталогів знаходяться символьні посилання на инициализационные скрипти, що знаходяться безпосередньо в каталозі /etc/rc.d/init.d.
Слід зауважити, що в каталозі /etc/init.d присутні жорсткі посилання на скрипти каталогу /etc/rc.d/init.d, тому при зміні пскриптов в цих каталогах змінені дані відображаються однаково незалежно від шляху до файлу скрипта.