Windows порядок загрузки служб

Windows порядок загрузки служб

Добрый день! Уважаемые читатели, лучшего компьютерного блога России pyatilistnik.org. Сегодня я хочу поговорить про настройку служб, в операционной системе Windows. Думаю не для кого не секрет, что голая ОС ни кому не нужна, она по сути является каркасом для установки программ, которые несут разные функции, для решения разных задач, это как с различными конструкторами для сайтов, так называемые CMS, например, WordPress, на который потом устанавливаются плагины.

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

Что такое отложенный запуск службы или программы Windows

Прежде, чем мы приступим к изучению нашего вопроса, я бы хотел разобраться в терминологии, чтобы дальше у вас не возникало вопросов.

Автоматический отложенный запуск — это функция операционной системы Windows 7 и выше, вплоть до последней Windows 10 1803, в задачи которой входит:

  • Оптимизация и ускорение загрузки ОС Windows, путем перераспределения очередности запуска различных служб
  • Оптимизация работы зависимых служб, когда должна быть соблюдена последовательность, что после чего должно выполняться, ниже приведу примеры

Примеры использования отложенного запуска служб

Как мы поняли из определения, данного выше, операционная система производит выполнение некоторых служб, только после того, как будут запущены другие. Отложенные службы осуществляют свое выполнение с самым низким приоритетом в ОС (THREAD_PRIORITY_LOWEST), что позволяет вашему компьютеру загружаться на порядок быстрее, и производить в фоновом режиме все необходимое. Ну согласитесь, вы же не будите сразу же печатать, а вот получить ip адрес от DHCP сервера, это задача с высшим приоритетом, иначе вы не сможете работать.

Приведу ряд примеров из своей практики:

  1. Классическим примером использования возможности запускать службы с некоторой задержкой по времени и меньшим приоритетом, является схема, приложений имеющих базу данных для своей работы. Это могут быть веб сервисы, приложения по типу «Гарант» или «Консультант». Если база данных загрузилась позже службы отвечающей за предоставление пользователю интерфейса, то она работать не будет, я вам недавно рассказывал, о ошибке, что не может быть получена лицензия для запуска программы PlanTracer Pro 7.0
  2. Второй пример, это связка активного каталога Active Directory и служба DNS, без которой он не может работать. Так как в подавляющем числе случаев, обе роли установлены совместно на контроллере домена, то бывает после перезагрузки выскакивать ошибка 4015, что AD не смогла разрезолвить зону, и связано, это с тем, что DNS служба загрузилась позже, и правильно было бы выставить для запуска активного каталога отложенный запуск службы.

Сочетание отложенного запуска, пониженного приоритета для ЦП, оперативной памяти и фоновых операций ввода/вывода, значительно снижает нагрузку на систему, не препятствуя нормальному входу пользователя. Многие службы Windows, включая фоновую интеллектуальную службу передачи (Background Intelligent Transfer Service, BITS), клиент Центра обновления Windows (Windows Update Client) и службу Windows Media Center, теперь запускаются в отложенном режиме, чтобы ускорить процесс входа в систему при загрузке. Чтобы настроить службу для автоматического запуска в отложенном режиме, следует создать параметр REG_DWORD с именем «DelayedAutoStart» в подразделе конфигурации для данной службы в разделе «HKLM\SYSTEM\CurrentControlSet\Services».

Читайте также:  Опера для linux как установить

Какие бывают типы запуска служб Windows

Существует четыре типа запуска служб в ОС Windows:

  • Автоматический — из названия понятно, что как только запускается «Диспетчер управления службами», то данный службы стартую с максимальным приоритетом
  • Вручную — тут пользователю, нужно самому в ручном режиме запускать службу, либо через планировщик заданий.
  • Отключена — тут думаю все понятно
  • Автоматически (отложенный запуск) — то, о чем мы уже говорили выше.

Как выключить или отключить отложенный запуск служб

Существует два метода, для задания типа запуска сервисов в ОС, как в случае с ошибкой 1068, когда мы искали зависимые службы, можно воспользоваться классической консолью «Службы (Services)», либо же отредактировать реестр Windows.

Самым наверное простым методом задания типа запуска, является оснастка службы. Она открывается, во всех операционных системах Windows одинаково. Нажмите одновременно клавиши WIN и R.

У вас появится окно «Выполнить» в котором вам необходимо ввести:

Это системное название mmc оснастки «Службы», полный список системных названий, смотрите по ссылке слева. В итоге у вас откроется вот такая оснастка, содержащая список всех служб, которые есть в вашей системе. Выберите необходимую вам. В моем примере, это будет сервис программы Corsair SSD Toolbox. Щелкаем по ней правым кликом мыши и из контекстного меню выбираем пункт «Свойства».

На вкладке «Общие» в типе запуска, выберите пункт «Автоматически (отложенный запуск)», после чего нажмите применить. После этого, данная служба при загрузке операционной системы будет получать приоритет со значением THREAD_PRIORITY_LOWEST. Как видите все просто.

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

  • DNS-клиент
  • Брокер системных событий
  • Диспетчер подключений Windows
  • Клиент групповой политики
  • Модули ключей IPsec для обмена ключами в Интернете
  • Модуль поддержки NetBIOS через TCP/IP
  • Служба сопоставления устройств
  • Центр обновления Windows
  • Windows Search
  • Служба общих сетевых ресурсов проигрывателя Windows
  • Центр обновления безопасности
  • Защита программного обеспечения

Настройка отложенного запуска через реестр

Как я и говорил выше, все можно сделать, через реестр системы. Для этого есть параметр DelayedAutoStart. Его нужно создать в ветке куста реестра:

Данный раздел, будет содержать список всех служб системы. Вам необходимо найти нужный.

Как помните, я вам выше показывал список служб с отложенным запуском среди них была Windows Search. Я ее нашел в реестре, и как видите у нее есть ключ DelayedAutoStart со значением 1. Тоже самое вы должны сделать и для другой нужной вам службы.

Надеюсь, что данная небольшая заметка про автоматически (отложенный запуск), оказалась для вас полезной, если будут вопросы, то пишите, о них в комментариях.

Windows Порядок загрузки драйверов и сервисов в Windows

Dragokas

Very kind Developer

Тем, кому интересно внутреннее устойство операционной системы Windows, предлагаю небольшое исследование. Мы попробуем выяснить, что отвечает за порядок загрузки драйверов и сервисов в Windows и можно ли этот порядок изменить.

Читайте также:  Recovery windows 10 from cmd

Прежде всего посмотрим текущий порядок запуска системы с помощью программы LoadOrder от Sysinternals. Программа покажет нам, что и в каком порядке загружается при запуске операционной системы.

Как видно из рисунка, сначала загружаются драйверы устройств, необходимые для запуска системы, а потом различные Windows-сервисы. Поскольку между загрузкой сервисов и загрузкой драйверов есть некоторые различия, рассматривать их будем по отдельности.

В качестве подопытного возьмем драйвер Microsoft ACPI (Advanced Configuration and Power Interface), который отвечает за обнаружение аппаратного обеспечения и управление питанием. Задача ACPI — обеспечить взаимодействие между операционной системой и аппаратным обеспечением, поэтому драйвер ACPI загружается в самом начале.

Программа Loadorder предоставляет довольно ограниченную информацию о порядке загрузки, поэтому за более точными данными идем в реестр. У каждого драйвера и Windows-сервиса есть свой раздел в ветви реестра HKLM\SYSTEM\CurrentControlSet\Services. Названы разделы по имени драйвера\сервиса, соответственно нам нужен раздел ACPI.

За порядок загрузки драйвера отвечают три параметра реестра. Основной параметр Start — определяет тип запуска драйвера. Вот правила, по которым драйверы устанавливают значение своего параметра Start:

• Драйверы, которые должны загружаться системным загрузчиком при запуске операционной системы, указывают значение Start равное 0 ( запуск при загрузке системы ). Пример — драйверы системных шин и драйвер файловой системы, используемый при загрузке системы;
• Драйвер, который не требуется непосредственно для загрузки системы, указывает в Start значение, равное 1 ( запуск системой ). Пример — стандартный драйвер видеокарты (VgaSave);
• Драйвер, не обязательный для загрузки системы, устанавливает значение Start равным 2 ( автозапуск ). Пример — драйвер многосетевого UNC-npoвайдера (Multiple UNC Provider, MUP), поддерживающий UNC-имена удаленных ресурсов (типа \\Computer\Share);
• Драйверы, не обязательные для работы операционной системы (например, драйверы сетевых адаптеров), указывают значение Start равным 3 ( запуск по требованию ).

Также драйверы устройств могут использовать параметры Group и Tag для контроля порядка своей загрузки при запуске системы. Параметр Group драйверы\сервисы используют, чтобы указать группу, к которой они принадлежат, а порядок загрузки групп определяется параметром List, находящимся в разделе HKLM\SYSTEM\ CurrentControlSet\Control\ServiceGroupOrder\.

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

Драйвер может еще больше детализировать порядок своей загрузки с помощью параметра Tag, который указывает конкретную позицию драйвера в группе. Диспетчер ввода-вывода сортирует драйверы в группе по значениям этого параметра, а драйверы, не имеющие параметра Tag, перемещаются в конец списка драйверов группы.

Посмотрев на порядок загрузки, можно подумать что сначала загружаются драйверы с меньшими значениями Tag, потом — с большими, но это не совсем так. Приоритет значений параметров Tag в рамках группы определяется в разделе HKLM\SYSTEM\CurrentControlSet\Control\GroupOrderList.

Для примера откроем двоичный параметр Boot Bus Extender, который соответствует одноименной группе, к которой относится и драйвер ACPI. Параметр представляет из себя набор двойных слов (по 4 байта каждое). Первое слово (выделено красным) задает общую длину переменной (количество двойных слов), в нашем примере 06. Остальные двойные слова как раз и являются тэгами. Драйверу ACPI соответствует тэг, равный 01 (выделен зеленым).

Приоритетность тега определяется не значением тега, а его положением: чем выше расположен тэг, тем выше его приоритет в группе, и тем выше приоритет драйвера, которому этот тэг соответствует. А поскольку 01 выше остальных тегов, то и драйвер ACPI загружается первым в группе.

Читайте также:  Phaser 3100 mfp драйвер windows 10 установить сканер

Порядок загрузки Windows-сервисов несколько отличается от порядка загрузки драйверов. В качестве примера возьмем сервис aвтоматического обновления (wuauserv). Он не особо критичен для работы системы и поэтому грузится в последнюю очередь.

Опять идем в реестр. Параметры запуска сервиса находятся в разделе HKLM\SYSTEM\CurrentControlSet\Services\wuauserv. Я выделил два основных параметра, отвечающих за порядок загрузки данного сервиса.

Windows-сервисы запускаются диспетчером управления сервисами (Service Control Manager, SCM) в соответствии со значением параметра Start. Параметр этот для сервисов может принимать следующие значения:

• Авто запуск (2) — сервис запускается автоматически, сразу после запуска основного SCM-процесса Services.exe;
• Запуск по требованию (3) — сервис запускается при необходимости, по требованию какого либо сервиса или программы;
• Отключено (4) — сервис отключен и не запускается ни при каких условиях.

Значения 0 (запуск при загрузке системы) и 1 (запуск системой) для сервисов не могут быть указаны, только для драйверов устройств.

Кроме того, начиная с Windows Vista\Server 2008 для сервисов появился еще один режим запуска — отложенный автозапуск. Отвечает за него параметр DelayedAutoStart = 1, который который указывает SCM произвести автоматический старт данного сервиса с задержкой. SCM запускает службы, для которых выбран отложенный запуск, после загрузки сервисов, отмеченных для автозапуска.

Режимом запуска сервисов можно управлять не только из реестра, но и в графическом режиме, из консоли Службы (Services).

Так же как и драйверы, Windows-сервисы могут использовать параметр Group в своем разделе реестра, чтобы указать группу, к которой они принадлежат. Сейчас, для наглядности, возьмем наш сервис wuauserv, находящийся в самом конце списка загрузки. С помощью ключа Group поместим его в группу Event Log, перезагрузимся и посмотрим порядок загрузки в Loadorder. Как видите, порядок изменился и wuauserv поднялся с последнего места, загрузившись сразу после своего одногруппника — службы eventlog. Правда порядок размещения внутри группы изменить уже не получится, т.к. Tag для сервисов не используется.

И еще один параметр, который косвенно влияет на порядок загрузки сервисов — DependOnService. Он указывает, от каких сервисов зависит данный сервис. Соответственно сервис не загружается, пока не будут загружены сервисы, перечисленные в DependOnService.

Зависимости работают следующим образом — если сервисы находятся в одной группе, то зависимый сервис перемещается в конец списка и запускается после сервисов, от которых зависит. Если же группы разные, то сервис просто не запустится, а SCM выдаст ошибку.

Более наглядно это показано в оснастке Службы, где на вкладке Зависимости (Dependency) указаны как сервисы, от которых зависит данный сервис, так и сервисы, зависящие от него.

Вот мы и выяснили, в каком порядке загружаются драйверы и сервисы в Windows и как этот порядок можно изменить. Но прежде чем бросаться править реестр помните, что порядок загрузки драйверов и сервисов определяется автоматически, и не стоит вносить в него изменения без веской причины. Всего один неправильно выставленный параметр может привести к полной неработоспособности системы, и не факт что ее удасться восстановить. Поэтому, прежде чем приступить к редактированию реестра, обязательно сделайте его резервную копию, а также желательно иметь под рукой загрузочный носитель.

Оцените статью