Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сервисы-пос1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
688.64 Кб
Скачать

Московский государственный технический университет

имени Н.Э.Баумана

Учебное пособие

В.А.Крищенко, Н.Ю.Рязанова

Сервисы Windows

Издательство МГТУ им. Н.Э.Баумана

УДК 681.3.06

ББК 32.81

К82

Сведения об авторах:

Крищенко Всеволод Александрович, к.т.н., доцент

Рязанова Наталья Юрьевна, к.т.н., доцент

Рецензенты:

Учебное пособие рекомендовано к опубликованию кафедрой ИУ-7 и

Аннотация

Рассматрены служебные программы операционных систем Windows NT/2000/XP/Vista (службы или сервисы Win32), работающие в режиме пользователя и занимающие в операционных системах Windows NT/2000/XP/Vista особое место. На службы Win32 возложены такие важнейшие системные функции как сохранения копий отдельных файлов, управление конфигурацией сети, загрузки и обновление Windows и т.п.

Рассотрены особенности работы, использования, установки и разработки сервисов Win32.

Для студентов 3-го и 4-го курсов кафедры «Программное обеспечение ЭВМ и информационные технологии» МГТУ им.Н.Э.Баумана.

Введение

В различных операционных системах существует разные способы выполнения служебных заданий одновременно с основной работой без снижения скорости интерактивного взаимодействия с пользователем. В операционных системах семейства Unix для этого существуют демоны, выполняемые в фоновом режиме. В ОС Windows возможность запуска процессов, не связанных с работой интерактивного пользователя, осуществляется службами или сервисами, которые используют функции интерфейса - Windows API и работают в режиме пользователя. Примером Windows-сервиса может служить Web-сервер, который должен запускаться при запуске системы и работать независимо от того, зарегистрировался ли в системе какой-либо пользователь.

Windows-сервисы являются частью операционной системы и взаимодействуют с SCP-приложением ( Service Control Program ) и диспетчером управления сервисами ( Service Control Manager - SCM ). В данном учебном пособии обсуждаются особенности работы и написания сервисных приложений режима пользователя, учетные записи сервисов и работа SCM.

1. Службы Windows.

1.1. Программа – служба

Сервис ОС Windows или служба (англ. Windows Service ) – это Win32 приложение, которое особым образом обрабатывается операционной системой (ОС). Службы Microsoft Windows, ранее называвшиеся службами NT, позволяют создавать исполняемые приложения, работающие длительное время и выполняющиеся в отдельной сессии Windows.

Основное отличие сервиса от обычного приложения заключается во взаимодействии сервиса с менеджером управления сервисами ( Service Control Manager – SCM ). Именно влияние SCM на работу сервиса определяет его особенности:

  • Сервис имеет определенную структуру, которая позволяет ему принимать информацию и команды от SCM.

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

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

К сожалению, термин «сервисы» (службы) используется фирмой Microsoft для обозначения совершенно разных программных средств Windows. Термин «сервисы» (службы) обозначает и драйверы устройств, и низкоуровневые сервисы ОС, такие как, NtCreateProcess, являющиеся внутрисистемными сервисами, и собственно сервисы, т.е. серверные приложения, являющиеся процессами пользовательского режима. Последние часто называют сервисами Win32. На множественность понятия «сервис» (service) в документации Windows обращают внимание Руссинович М. и Соломон Д. в своей книге «Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000» ( стр.6 )[3].

Как правило, Windows-сервис не имеет пользовательского интерфейса, что позволяет создавать сервис или как GUI-приложение ( с функцией WinMain ), или как консольное ( с функцией main ).

Сервис может быть запущен несколькими способами:

- автоматически при загрузке системы,

- пользователем через панель управления сервисами,

- с помощью специально написанного приложения,

- путем вызова функций управления сервисами.

Запущенный одним из перечисленных способов процесс может содержать в себе несколько сервисов, выполняющихся в различных потоках. Например, сервис Services.exe содержит около 10 других сервисов, включая такие сервисы как DHCP Client, Messenger и Alerter. Потоки не имеют собственного адресного пространства и разделяют адресное пространство своего процесса. Запуск каждого процесса связан с переключением полного контекста, что является расточительным с точки зрения временных затрат. Переключение потоков выполняется значительно быстрее. Но такая оптимизация имеет один недостаток – SCM позволяет таким сервисам работать только от имени системы. Другими словами, в настройках сервиса нельзя указать другие имя пользователя и пароль.

Управление сервисами можно осуществлять программно, обращаясь к предоставляемому SCM API, либо через соответствующую оснастку консоли управления ( Microsoft Manager Consol – MMC ).