- Вопрос 9. Службы в ОС Windows : назначение, основные принципы функционирования, отличие от драйверов. Порядок установки службы в ОС Windows .
- Что такое «процессы Windows» и зачем они нужны
- Различия между процессов и услуг в Windows, Differences Between Processes and Services in Windows
- Службы Windows – фоновые функции операционной системы
- Службы Windows в двух словах
- Доступ к службам Windows
- Запуск, остановка или перезапуск службы
- Свойства службы Windows
- Общие свойства службы Windows
- Зависимости служб Windows
- Использование служб Windows
- Меры предосторожности
- Несколько заключительных слов
Вопрос 9. Службы в ОС Windows : назначение, основные принципы функционирования, отличие от драйверов. Порядок установки службы в ОС Windows .
Добавил: | DMT |
Дата создания: | 30 декабря 2007, 18:59 |
Дата обновления: | 10 января 2008, 0:06 |
Просмотров: | 13201 последний сегодня, 6:55 |
Комментариев: | 0 |
Вопрос 9. Службы в ОС Windows : назначение, основные принципы функционирования, отличие от драйверов. Порядок установки службы в ОС Windows . Службы — это программы, работающие вне контекста пользователя. Службы продолжают работать даже тогда, когда один пользователь отключается от системы и к ней подключается другой пользователь. Это единственная категория программ, которые способны работать в таком режиме. С точки зрения программиста, службы — это программы (чаще всего консольные), обладающие средствами связи с диспетчером служб SCM ( Service Control Manager ). Диспетчер SCM — это внутренний механизм Windows , осуществляющий управление службами. В Windows NT 4 пользователь взаимодействует с SCM при помощи апплета Services Control Panel . В Windows 2000 ту же функцию выполняет один из модулей консоли ММС. Архитектура системных служб Windows NT подразумевает три вида. Ee ядром является менеджер системных служб ( Service Control Manager или SCM). SCM запускается при загрузке системы и работает, пока компьютер не будет выключен. Менеджер системных служб взаимодействует с одной стороны с управляющими программами , а с другой — с системными службами . Основными задачами менеджера являются:
Windows NT определяет два вида системных служб. Один из них — это так называемые службы режима ядра ( kernel-mode services ) — драйверы устройств. Другой вид — службы Win32 , обычные Win32-процессы, использующие специальный набор функций для взаимодействия с менеджером системных служб. Служба обладает функцией main . Одна программа может обеспечивать работу одной службы, а может включать в себя сразу несколько служб. Функция main заполняет массив, описывающий все поддерживаемые программой службы. Массив передается вызову StartServiceCtrlDispatcher . Для каждой службы, входящей в состав исполняемого файла, этот массив содержит текстовый идентификатор и точку входа. Точка входа службы — функция типа void , принимающая обычные аргументы argc и argv . Но в отличие от аргументов функции main , аргументы точки входа службы не связаны с командной строкой. Они заполняются диспетчером SCM . В процессе обращения SCM к функции, которая является точкой входа службы, важную роль играет структура SERVICE _ STATUS . Функция, являющаяся точкой входа, использует вызов RegisterServiceCtrlHandler для того, чтобы зарегистрировать обработчик, предназначенный для взаимодействия SCM со службой. Помимо этого подпрограмма инициализации службы обращается к вызову SetServiceStatus для того, чтобы проинформировать SCM о текущем состоянии службы (служба может находиться в одном из состояний: инициализация, функционирование или остановка). Если инициализация требует более чем несколько секунд, рекомендуется выполнить ее в отдельном программном потоке. Создание отдельного программного потока потребуется также в случае, если вы намерены создать службу, которая будет работать исключительно в фоновом режиме. Когда диспетчер SCM желает тем или иным образом обратиться к службе, он обращается к обработчику, зарегистрированному при помощи вызова RegisterServiceCtrlHandler . Чаще всего это происходит тогда, когда диспетчер SCM желает завершить работу службы, приостановить ее исполнение или продолжить ее работу после паузы. Диспетчер SCM обращается к обработчику также в случае, если требуется определить текущее состояние службы. Помимо этого служба может определять другие специальные виды запросов, которые можно адресовать службе при помощи вызова Control Service (этот вызов является частью диспетчера SCM ). Для того чтобы направить службе запрос, необходимо обладать необходимыми полномочиями. Установка служб Чтобы установить службу, необходимо добавить в реестр несколько записей. Чаще всего эта процедура выполняется при помощи SCM . Для этого необходимо открыть SCM (при помощи вызова OpenSCManager ), а затем обратиться к вызову CreateService . В качестве аргументов этот вызов принимает имя файла, в котором содержится служба, а также другую необходимую информацию. Затем функция StartService , посылает запрос на запуск службы менеджеру системных служб. SCM определяет, что процесс, соответствующий службе, еще не запущен, поэтому он вызывает функцию CreateProcessAsUser , передавая ей командную строку, указанную в конфигурации службы. Далее стартует процесс службы. Управление передается функции WinMain (или просто main ) процесса службы. Произведя необходимую инициализацию, WinMain вызывает функцию StartServiceCtrlDispatcher , которая реализует цикл приема и обработки команд SCM. StartServiceCtrlDispatcher устанавливает соединение со SCM и сразу же получает от него первую команду, а именно команду на запуск службы. Кроме того, менеджер системных служб сообщает приложению, запустившему службу, что служба начала выполняться. Именно в этот момент StartService возвращает управление прикладной программе. Получив команду на запуск службы, StartServiceCtrlDispatcher создает новый поток вызовом CreateThread , в котором вызывает главную функцию службы, обычно имеющую название ServiceMain . Непосредственно перед созданием потока StartServiceCtrlDispatcher вызывает SetServiceStatus чтобы установить текущее состояние службы в SERVICE_START_PENDING, указывая при этом dwCheckPoint как 0 и dwWaitHint как 2000. Функция службы получает управление и одним из первых действий вызывает функцию RegisterServiceCtrlHandler , чтобы зарегистрировать функцию-обработчик команд для этой службы. Служба выполняет инициализацию, например, после чего вызывает SetServiceStatus , указывая состояние SERVICE_RUNNING. С этого момента служба считается стартовавшей. Основное отличие драйвера от службы заключается в том, что драйвер может работать в 0 кольце и в пользовательском режиме, а служба работает только в пользовательском режиме. Установка службы осуществляется через SCM менеджер, а драйвер через . inf файл, однако драйвер может быть установлен через SCM менеджер, но не все типы драйверов могут установлены через SCM менеджер. Код службы, которая издает звуковой сигнал в начале каждого часа (период времени можно изменить из командной строки): Что такое «процессы Windows» и зачем они нужны
Можно сказать, что процесс — это выполняемая на компьютере программа, но тут нужно кое что прояснить. Дело в том, что программа и процесс — это не одно и тоже. Программа представляет собой некоторый код (набор команд и инструкций), который находится на компьютере в виде файлов. А вот процесс — это некоторый набор ресурсов и данных, которые используются при выполнении программы. То есть упрощенно можно сказать, что процесс — это выполняющаяся программа со всеми необходимыми для ее выполнения ресурсами. Все запускаемые на компьютере программы выполняются в определенных процессах. Некоторые программы используют системные процессы, то есть процессы, запускаемые операционной системой, некоторые создают собственные. При этом программа может создавать множество собственных процессов или запускать системные, а это означает что количество запущенных на компьютере программ и процессов не будет одинаковым — процессов всегда будет намного больше. Увидеть весь список запущенных в данный момент на компьютере процессов можно через Диспетчер задач. Для этого нужно вызвать контекстное меню на панели задач и из меню выбрать пункт «Запустить диспетчер задач». Далее необходимо перейти на вкладку «Процессы». Каждый процесс, запущенный на компьютере, потребляет определенные ресурсы, что и отображается в окне Диспетчера задач. Логично предположить, что чем меньше запущенно процессов, тем лучше, так как они не будут «грузить» компьютер. Но тут не все так просто как кажется. Windows — это операционная система (ключевое слово здесь — «система»), то есть можно сказать, что это пакет программ, предназначенных для управления компьютером. Системные программы в Windows называют службами и каждая из них решает определенные узконаправленные задачи. Запущенные на компьютере службы образуют процессы, которые также отображаются в Диспетчере задач. Многие процессы необходимы для работы операционной системы и запускаются автоматически со стартом Windows. Кроме этого некоторые процессы запускаются по умолчанию, но не являются критически важными для работы операционной системы. Обычно по умолчанию Windows настроена некоторым универсальным (по мнению разработчиков) образом и вполне вероятна ситуация, что запускаемые со стартом Windows процессы вы никогда не будете использовать, а значит они будут просто висеть «мертвым грузом», перетягивая на себя некоторые ресурсы компьютера. Список запущенных процессов, который вы увидите открыв Диспетчер задач, будет характерен только для вашего компьютера, ведь как вы понимаете, количество и набор процессов зависит от установленных и запущенных на вашем компьютере программ, а также от редакции операционной системы. И тут речь идет не только о версии Windows (например, XP, Vista, 7 или 8), а и о редакции — так у Windows 7 Домашняя набор запущенных процессов будет отличаться от Windows 7 Максимальная и дело тут в том, что эти операционные системы предназначены для разных задач, а значит и список запускаемых со стартом Windows системных служб будет у них отличаться. Более подробно о некоторых службах и процессах я расскажу в следующих заметках. Различия между процессов и услуг в Windows, Differences Between Processes and Services in WindowsКогда вы открываете Диспетчер задач, вы увидите вкладку «Процессы», в которой перечислены открытые программы, и вкладка «Службы», в которой перечислены … что именно? Чтобы ответить на этот вопрос, нам придется посмотреть на процессор.
О, мальчик, переработчики. Процессоры имеют, как вы знаете, ядра. Обычно несколько ядер – процессоры AMD любят иметь от 4 до 8, а процессоры Intel любят иметь примерно такую же сумму. Ядро – это часть процессора, который выполняет эту работу. С другой стороны, потоки – это назначения, которые даются каждому ядру – в прошлом одно ядро соответствовало бы одному потоку, но гиперпоточность Intel позволяет одному ядру работать одновременно с несколькими процессами. Hyperthreading делает единый основной акт, как два или более виртуальных ядра, поэтому на вашем компьютере предполагается, что у вас есть дополнительное ядро. Вопреки распространенному мнению, большая часть того, что вы делаете на компьютере, не многозадачна. Большинство пользователей работают на двухъядерных процессорах, и как только вы проходите два-четыре процесса (подсказка: вы уже давно прошли), вы больше не занимаетесь многозадачностью. Это не так уж плохо, и есть причина, по которой вы не заметили – эти ядра манипулируют вашими процессами настолько быстро, что, к человеческим чувствам, разница незаметна – и, конечно же, когда вы это делаете заметьте отставание, эти процессы, очевидно, идут немного медленнее, чем обычно. Но процессы и службы обрабатываются одним и тем же процессором, но не вашей операционной системой. Разница между процессом заключается в том, что он проявляется в приложении, с которым вы напрямую взаимодействуете, например с веб-браузером или вашим клиентом IM. Служба не соблюдает одни и те же правила, и обычно она работает вне вашего прямого взаимодействия – всегда на антивирусах, системных часах, подобных вещах. Таким образом, в основном разница между процессом и сервисом заключается в том, что вы все время общаетесь с одним, но обычно не называете другое, что часто. Вы можете управлять своими услугами, ища Службы на панели управления и выбирать, какие службы запускаются и когда они запускаются. Убедитесь, что вы не столкнулись со службой, если это не вызывает у вас проблемы, или вы знаете, что делаете, – отказ от жизненно важных служб может привести к сбою вашей операционной системы, и никто этого не хочет.
Службы Windows – фоновые функции операционной системыВы когда-нибудь задумывались, сколько функций Windows работает одновременно, даже если у них нет сложного интерфейса? Что ж, это всё службы Windows, которые работают в фоновом режиме, чтобы выполнять свою работу, не мешая вам. Windows автоматически находит обновления, проверяет стабильность системы, подстраиваем время обновлений в зависимости от текущего часового пояса, записывает события и защищает систему от угроз. У всех этих функций нет работающего приложения на рабочем столе, тогда как ими управлять? В этом посте мы подробно расскажем о службах Windows и о том, как вы можете настроить их в своих интересах. Службы Windows в двух словахСлужбы Windows – это, в основном, приложения, которые работают в фоновом режиме и предлагают свои «услуги». Эти службы выполняют большинство основных функций Windows, например подключение к внешним устройствам или создание стабильного подключения к Интернету. Как и любое другое приложение, эти службы также используют системные ресурсы. Вы можете заметить, что при загрузке компьютера он сразу поглощает часть оперативной памяти, даже если приложения не открываются. Что ж, большая часть этой оперативной памяти используется этими службами Windows. Обычно эти службы запускаются в Windows (даже до того, как вы входите в систему) и ничто не указывают на то, что они запущены. Однако, поскольку эти службы напрямую влияют на работу с Windows, очень важно знать, как ими управлять. Например, вы можете отключить службы, которые вы не используете, чтобы освободить ресурсы и ускорить загрузку. Вы также можете заставить службы запускаться вручную вместо того, чтобы запускаться постоянно. Кроме того, эти службы создаются не только Windows, сторонние приложения также могут создавать такие службы. Хорошим примером может служить служба обновления приложений, у которой нет интерфейса, но как только выйдет обновление, вы получите уведомление об обновлении приложения. Доступ к службам WindowsЕсть много способов получить доступ к средству управления службами Windows. Вы можете получить к нему доступ из панели управления в разделе «Инструменты администратора» или введите «Службы Windows» в системном поиске Windows, чтобы получить к нему доступ. Другой простой способ – нажать клавиши Win + R и ввести services.msc в диалоговом окне «Выполнить», чтобы открыть консоль управления службами Windows. Вы увидите все службы Windows, перечисленные в правом столбце, и их описание в левом столбце. Нажмите на любую из служб, и вы увидите подробную информацию в левом столбце. Описание достаточно хорошее, чтобы понять, что делает служба, поэтому у вас не должно возникнуть проблем с определением функций каждой из службы и их влияния. Запуск, остановка или перезапуск службыВы можете принудительно запустить или остановить службу во время текущего сеанса Windows. Просто щелкните правой кнопкой мыши службу, и появится контекстное меню с пунктами Запустить или Остановить. Если служба уже запущена, можно будет использовать кнопку Остановить. В противном случае вы увидите Запустить, если служба не отключена. Например, вы можете «Остановить» службу Центра обновления Windows, если выдаёт постоянные запросы. Имейте в виду, что служба будет автоматически запущена, когда вы перезагрузите компьютер, если её не отключить. Кроме того, есть вариант «Перезагрузки», которую можно использовать для перезапуска службы. Свойства службы WindowsОкно «Свойства» – это самая важная часть консоли управления службами Windows, в которой перечислены все элементы управления и информация о службе. Щелкните правой кнопкой мыши службу и выберите Свойства. Вот две важные вкладки: Общие и Зависимости. Ниже приводится объяснение каждой из них: Общие свойства службы WindowsНа вкладке Общие вы увидите путь к исполняемому файлу службы и описание того, что она делает. Вы также можете выбрать «Тип запуска», чтобы настроить запуск службы. Там вы найдете четыре типа запуска:
Зависимости служб WindowsНа этой вкладке перечислены все службы, зависящие от выбранной службы, а также службы, от которых зависит текущая выбранная служба. Прежде чем возиться с опциями «Тип запуска», проверьте все службы, которые зависят от службы. Если вы отключите службу, все службы, которые от неё зависят, могут работать некорректно; или вообще не работать. Использование служб WindowsТеперь, когда вы знаете о службах Windows и о том, как их настраивать, давайте посмотрим, чем они могут вам помочь. Многие службы Windows включены по умолчанию, но полезны не для всех пользователей. Например, вы можете отключить службы факса, принтера или Bluetooth, если вы не используете их на своем ПК. Кроме того, вы также можете отключить такие службы, как брандмауэр Windows, если вы используете стороннее приложение брандмауэра. С другой стороны, есть некоторые службы, которые отключены, но вы можете быть заинтересованы в их включении. Например, вы можете установить для службы «Удаленный реестр» значение Вручную, чтобы другие люди могли удаленно настраивать ваш реестр Windows. Меры предосторожностиВключение или отключение этих служб может существенно повлиять на ваш компьютер. Если вы отключите базовую службу, это может остановить работу некоторых функций Windows или даже сделать её непригодной для использования. Напротив, вы можете включить службу, которая может поставить под угрозу вашу безопасность. Например, служба «Удаленный реестр», которая позволяет удаленным пользователям настраивать реестр. Перед включением или отключением любой из служб убедитесь, что вы прочитали и поняли описание и то, что она делает. Кроме того, перейдите на вкладку Зависимости и убедитесь, что служба не влияет на важные службы. Несколько заключительных словВам следует внимательно просмотреть все службы Windows и посмотреть, можете ли вы подправить некоторые из них. Приведенных выше инструкций должно быть более чем достаточно, чтобы помочь вам понять, как настроить каждую службу Windows. Я лично просмотрел список и нашел несколько сервисов, которые стоит настроить и оптимизировать на моём компьютере. Я уверен, что вы тоже что-то найдёте. Сообщите нам в комментариях о вашем опыте работы со службами Windows. |