
- •Вопросы по курсу «Операционные системы» весеннего семестра 2010-2011 учебного года
- •1. Общие сведения об операционных системах, цели применения ос, структура ос.
- •2. Модель взаимодействия компонентов операционной системы.
- •3. Классификация ос.
- •4.5. Теоретические основы параллельного программирования, понятия: процесс, задача, мультизадачный режим работы ос, нить, контекст нити.
- •6. Теоретические основы параллельного программирования: классификация программных модулей; понятия реентерабельности и повторной входимости программных модулей.
- •7. Прерывания и механизмы обработки прерываний операционной системой.
- •8.9.Диспетчер задач: дисциплины диспетчеризации, критерии оценки дисциплин диспетчеризации задач.
- •10. Теоретические основы параллельного программирования: независимые и взаимодействующие процессы, понятия ресурса и критического ресурса.
- •11. Теоретические основы параллельного программирования: список условий функционирования взаимодействующих процессов, понятие тупика.
- •12. Теоретические основы параллельного программирования: принцип организации критических секций.
- •13. Теоретическая классификация видов взаимодействия процессов: сигналы, семафоры, мьютексы.
- •15. Теоретическая классификация видов взаимодействия процессов: очереди сообщений, файлы, разделяемая память, объект «ресурс».
- •16. Теоретическая классификация видов взаимодействия процессов: почтовые ящики, конвейеры.
- •17 Организация подсистемы безопасности в ос Windows: создание и открытие объектов, понятие описателя, атрибуты безопасности, права доступа, структура описателя безопасности.
- •18.Организация подсистемы безопасности в ос Windows: маркеры, привилегии пользователей, олицетворение.
- •19. Организация подсистемы безопасности в ос Windows: получение доступа к объекту.
- •20. Процессы в ос Windows: понятие Win32 api; main() и WinMain(), создание и завершение процессов и нитей, основные функции работы с процессами и нитями.
- •21. Работа с файлами в ос Windows: синхронная и асинхронная.
- •24. Таймеры ожидания в ос Windows и понятие apc
- •25. Структурная обработка исключений.
- •26. Способы управления памятью: простое непрерывное распределение, оверлейное распределение.
- •1. Простое непрерывное распределение
- •2. Оверлейное распределение (OverLay)
- •27. Способы управления памятью: распределение статическими и динамическими разделами.
- •28. Способы управления памятью: сегментная организация памяти.
- •29. Страничная организация памяти
- •30. Сегментно-страничный способ организации памяти
- •31. Таблицы физических страниц памяти в современных ос. Понятие pfn, понятие mdl.
- •32. Распределение оперативной памяти в современных компьютерах. Спецификация acpi
- •33. Распределение первого мегабайта оперативной памяти в персональных компьютерах.
- •35. Резервирование памяти с помощью функции VirtualAlloc
- •36. Работа с кучами процессов
- •37 . Динамически загружаемые библиотеки (dll). Связывание во время загрузки библиотеки.
- •38. Системные перехватчики (hook
- •40. Службы
40. Службы
Службы – это специальные программы в ОС Windows, предназначенные для выполнения различных дополнительных функций ОС, например, удалённый вызов процедур, сетевая печать, терминальный доступ и т.д.
Работа служб обеспечивается взаимодействием компонентов трёх типов:
Диспетчер управления службами Service Control Manager (SCM).
Сама программа приложение-служба.
Программа управления службой.
SCM при работе ОС представляется как процесс Services.exe. Он автоматически запускается при старте ОС.
lsass.exe – программа управления пользователями в системе.
SCM имеет привилегии системы и обеспечивает интерфейс взаимодействия программ управления службами и программ-служб.
Служба обычная программа дополненная вызовами специальных функций для реализации взаимодействия с SCM, по результатам работы этих функций, служба м.б. запущена, остановлена, приостановлена и повторно возобновлена. В одном исполняемом файле м.б. несколько служб. Служба может работать с разными правами как с системными, так и с пользовательскими.
Последовательность вызова функций для программы управления службами
OpenSCManager
CreateService
StartService
CloseServiceHandle (для служб)
CloseServiceHandle (для SCM)
Последовательность запуска функций для деинсталляции
OpenSCManager
OpenService
ControlService (останов)
QueryServiceStatus (проверка останова)
DeleteService
CloseServiceHandle (для служб)
CloseServiceHandle (для SCM)
Функция CreateService:
В случае успеха, функция вернёт дескриптор сервиса.
В случае ошибки, функция вернёт NULL. Для получения более подробной информации об ошибке, можно воспользоваться функцией GetLastError.
Полученный дескриптор будет доступным только для того процесса, который вызвал CreateService. Закрыть его можно при помощи функции CloseServiceHandle.
Функция CreateService создаёт объект сервиса и прописывает его в базе менеджера управления сервисами создав в реестре ключ с таким же именем что и имя сервиса в следующем ключе:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<имя>
В этом ключе записываются значения, указанные в функциях CreateService.
Функция OpenService:
При успешном завершении функция возвращает handle системной службы. В случае ошибки возвращаемое значение равно NULL, и код ошибки, как обычно, может быть получен с помощью функции GetLastError.
Функция DeleteService:
Единственным параметром этой функции является handle удаляемой службы, который должен быть открыт с правом доступа DELETE.
Важно заметить, что DeleteService лишь помечает службу для удаления. Фактически служба будет удалена, когда будет закрыт последний указывающий на нее handle. Один открытый handle, очевидно, удерживает программа, вызывающая DeleteService. Другой handle удерживает SCM до тех пор, пока служба не будет остановлена. Таким образом, чтобы окончательно удалить службу, необходимо убедиться, что она остановлена.
Для запуска службы Win32 API предоставляет StartService:
Функция принимает handle службы, который должен быть открыт с правом доступа SERVICE_START, а также массив аргументов, который будет передан службе. Два последних параметра повторяют назначение параметров функции main().
Параметры командной строки будут переданы без изменений в основную функцию службы (ServiceMain), поскольку внутри, процессов служб может быть несколько.
Возможность передачи параметров службе при запуске используется не очень широко. Не известно, чтобы какая-либо из служб, поставляемых в составе Windows NT, принимала параметры таким образом. Если передавать параметры не требуется, то dwArgc следует указать как 0, а pArgv - как NULL.
Существенное значение с точки зрения программы управления службами имеет то, что функция StartService лишь инициирует запуск службы, она не дожидается, пока служба завершит свою инициализацию.
Функция ControlService:
Первый параметр этой функции идентифицирует службу, которой посылается команда управления, второй - задает код посылаемой команды, а последний параметр указывает на структуру (см. ниже), в которую функция заносит информацию о текущем состоянии службы, избавляя тем самым программиста от лишнего вызова QueryServiceStatus.