logo search
Операционные системы

Формирование нулевого и первого процессов.

Следующим этапом ядро начинает формирование первого процесса, который также создается нестандартным образом, при этом выполняются следующие действия. Ядро осуществляет копирование нулевой записи в первую. После чего для первой записи выделяется пространство оперативной памяти и создается тело процесса. В тело процесса записывается код системного вызова exec(), после этого происходит внутри первого процесса обращение к этому системному вызову с параметром /etc/init. Таким образом, можно отметить, что сам первый процесс формируется нестандартным путем, но его тело его в конце уже формируется «правильным» образом посредством вызова exec().

Итак, в итоге в рамках первого процесса сформирован процесс init, который существует в системе также на протяжении всего ее функционирования. Процесс init поддерживает соответствующую стратегию организации работы системы: либо это однопользовательская система, либо многопользовательская. Эта стратегия определяется параметрами, которые возникают на стадии загрузки ядра и инициализации системы. Соответственно, система опознает один из подключенных терминалов как системную консоль. Если система однопользовательская, то происходит подключение интерпретатора команд к системной консоли. Если же режим многопользовательский, то процесс init обращается к системной таблице терминалов, хранящей все терминальные устройства, которые могут быть в системе, и для каждого готового к работе терминала из этого перечня он запускает процесс getty. Процесс getty — это процесс, который обеспечивает работу конкретного терминала. Заметим, что процесс init создает процесс getty уже стандартным способом, и после вообще все процессы создаются лишь по схеме fork-exec.