Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Акуленок_часть1.doc
Скачиваний:
38
Добавлен:
13.11.2019
Размер:
1.43 Mб
Скачать

5.3. Создание спонтанных процессов

После завершения базовой инициализации ядро создает в области памяти, выделенной для процедур пользователя, несколько «спонтанных» процессов. Они называются «спонтанными», поскольку создаются не с помощью обычного для UNIX механизма – системного вызова fork(). Число и характер этих процессов зависит от типа операционной системы.

В BSD–системах создаются три процесса:

  • swapper – процесс 0;

  • init – процесс 1;

  • pagedaemon – процесс 2.

В ATT–системах число спонтанных процессов варьируется:

  • sched – процесс 0;

  • init – процесс 1

  • различные процессы управления памятью.

Итак, ядро начинает инициализировать процесс 0. Поскольку ядро самостоятельно не выполняет каких–либо действий, для начала работы системы создается самый первый процесс. Ему присваивается идентификатор 0. Данный процесс называется swapper и выполняет действия, связанные с распределением вычислительных ресурсов (памяти и машинного времени) между другими программами. swapper это единственный процесс, который создается не другой задачей, а как бы «сам по себе».

В начале своей работы swapper порождает новый процесс с идентификатором 1, называемый init (инициализация управления процессами) – главный диспетчер процессов.

Из всех процессов только init является полноценным пользовательским процессом. Остальные фактически представляют собой части ядра операционной системы, которые выглядят как процессы.

После этого ядро больше не принимает участия в процедуре начальной загрузки системы.

5.4. Выполнение команд оператора

В однопользовательском режиме оператор может выполнять команды почти так же, как и в многопользовательском. Однако обычно автоматически монтируется только раздел диска с корневым каталогом. Другие файловые системы оператор должен смонтировать вручную для того, чтобы использовать программы, находящиеся вне каталогов /bin, /sbin или /etc. Демоны в однопользовательском режиме еще не запущены, поэтому команды, зависящие от некоторых обслуживающих процессов (например, mail), работать не будут.

Команда fsck, которая проверяет и восстанавливает поврежденные файловые системы, обычно выполняется в процессе автоматической загрузки, Если система запускается в однопользовательском режиме, команду fsck нужно «прогнать» вручную.

5.5. Выполнение командных файлов запуска системы

Следующий этап процесса начальной загрузки – выполнение командных файлов запуска. Эти файлы, по сути, представляют собой обычные командные файлы, и для их выполнения процесс init запускает процесс sh. Точное местонахождение, содержимое и организация командных файлов зависят от конкретной системы.

Наиболее широко распространены два способа организации работы с командными файлами запуска.

В BSD–системах эти файлы хранятся в каталоге /etc, и их имена начинаются буквами rc.

В ATT–системах командные файлы запуска хранятся в каталоге /etc/init.d, связанном с каталогами /etc/rc0.d и /etc/rc1.d и т.д. ATT–вариант организации является более четким и позволяет более аккуратно выполнять останов системы.

Ниже приведен перечень задач, которые часто выполняются инициализационными командными файлами:

  • установка имени компьютера;

  • установка часового пояса;

  • проверка дисков командой fsck (только в автоматическом режиме);

  • монтирование системных дисков и файловых систем;

  • запуск процедур ведения журнальных файлов;

  • удаление файлов из каталога /tmp (очистка временных разделов);

  • конфигурирование сетевых интерфейсов;

  • запуск сетевых служб и почтовых служб;

  • запуск служб принтеров;

  • включение учета и контроля квот;

  • сохранение дампов ядра.

Большинство командных файлов запуска выводит на консоль подробную информацию о выполняемых ими задачах. Это может оказать существенную помощь при отладке или поиске причин зависания системы в процессе начальной загрузки.