API функции работы с реестром.

*-отмечены наиболее часто используемые.

RegCreateKey(), RegCreateKeyEx() – создает раздел или если существует – то открывает.

RegDeleteKey() – удаляет раздел и его подразделы.

RegDeleteValue() – удаляет значение.

RegEnumKey(), RegEnumKeyEx() – составляет список всех параметров раздела.

RegEnumValue() – составляет список всех параметров данного открытого раздела.

RegFlushKey() – записывает атрибуты заданного раздела в реестр.

RegGetKeySecurity() – возвращает дескриптор безопасности заданного открытого раздела.

RegOpenKey(), RegOpenKeyEx() – открываетуказанныйраздел.

*RegQueryInfoKey() – читаетвсюинфуоботкрытомразделе.

RegQueryValue() – читаетзначенияпараметра.

*RegQueryValueEx() – читает значения параметра.

RegSaveKey() – сохраняет указанный раздел, подразделы, и параметры в файле.

RegSetValue() –записывает данные в параметр.

*RegSetValueEx() – записывает данные в параметр.

RegSetKeySecurity() – устанавливает атрибут безопасности открытого раздела.

RegCloseKey() – закрывает дескриптор указанного раздела, без его обновления.

Параметрыбезопасностинекоторыхф-ийприменимы только в NT.

Значения, размер которых > 2 кб, записываются в виде внешних файлов (имя_файла сохраняется в реестре).

21.Основы механизма обработки прерываний и исключений в современных операционных системах. Функции и классы обработки исключений языка С++.

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

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

Сигналы аппаратных прерываний поступают в процессор через 2 контроллера прерываний (ведомый и ведущий контроллеры).

Обработка прерываний включает в себя:

1.Установление факта прерывания и его идентификация.

2.Запоминание состояния прерванного процесса.

3.Передача управления подпрограмме обработки прерывания.

4.Сохранение информации о прерванной проге, если не удалось на 2 шаге.

5.Обработка прерывания.

6.Восстановление инф-ции прерванного процесса.

7.Возврат в прерваннуюпрогу.

1-3 пункт реализуются аппаратно

4-7 – программно.

API функции работы с реестром. - student2.ru

Внешние – вызываются асинхр. событиями, происходящими вне прерванного процесса.:

-прерывания таймера

-вв/вывод (от внешних устр-в)

-по нарушению питания

-действия оператора

-от другой вычислит.системы

Внутренние – вызываются событиями, связанными с работой процессора и синхронны с его операциями.:

-нарушение адресации

-наличие незадействованной двоичной комбинации

-деление на ноль

-переполнение/исчезновение порядка

-ошибки встроенных средств контроля.

Программные прерывания – происходят по соответствующей команде прерывания. Процессор осуществляет те же действия, что и при внутреннем прерывании.

Выбор 1 из возникших сигналов прерывания для обработки осуществляется на основе приоритетов:

API функции работы с реестром. - student2.ru

Дисциплины обслуживания прерываний:

-с относительными приоритетами обслуживания. Обслуживание не прерывается даже запросами с более высоким приоритетом.

-с абсолютным приоритетом. Всегда обслуживается прерывание с наивысшим приоритетом.

-LCFS. Запросы с низким приоритетом могут прерывать обработку прерывания с высоким приоритетом.

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

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

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

В процессе поиска соответствующего блока кода, для конкретной исключит. Ситуации, система сначала просматривает текущую процедуру; другие активные отложенные процедуры этого же процесса; переходит к системным обработчикам.

Функции и классы обработки исключений языка С++.

В Windowsкаждому прерыванию назначается определенный приоритет – уровень запроса прерывания (IRQL). IRQLназначается источнику прерывания.

Изменение IRQL центрального процессора позволяет системе блокировать прерывания с более низким приоритетом.

Этот приоритет могут изменить только системные сервисы, работающие на уровне ядра.

Если процессор работает при самом низком IRQL – происходит нормальное выполнение потока и разрешается обраб. всех прерываний.

Когда перехватчик вызывает процедуру обслуживания прерывания ISR–он назначает ЦП тот же IRQL, что и у перехваченного сигнала. На время выполнения ISR,прерывания более низкого уровня – блокируются.

Время от времени ЦП переключается на самый низкий IRQL, чтобы возобновить выполнение прерванных потоков.

Перехватчик ищет подпрограммы обработки прерывания в таблице распределения прерываний (IDT).

При загрузке в систему новый драйвер устройства записывает в IDTсобственный обработчик.

Исключения, определяемые на уровне ядра Windows:

-несоответствие типов данных

-прерывание отладчика

-пошаговая отладка

-деление на ноль

-переполнение и потеря разрядов

-зарезервированный операнд

-нарушение защиты страницы

-недопустимый оператор

-переполнение

-нарушение прав доступа к памяти

-ошибка чтения страницы

-превышение квоты страничного файла

-привилегированный оператор

GetExceptionCode() – позволяет определить тип возникшего исключения. Возвращает код исключения.

Блок кода на С++ должен начинаться с tryи catch.

try – помечает фрагмент проги, к-рый может породить исключение.

catch – содержит прогу, запускающуюся при наличии исключения.

В VisualC++обраб. исключений поддерживается с помощью:

-ф-ий обеспечивающих структурированную обработку исключений

-классов, отвечающих за обработку определенных типов исключений

-макрокоманд, позволяющих осуществить структуризацию обработки искл. Приложения

-ф-ий, предназначенных для генерации исключений различных типов.

Для обраб. искл. ситуаций применяются MFCкласс CExceptionи его производные классы:

CMemoryException – нехватка памяти

CNotSupportedException – недопустимая операция

CArhiveException – работа с архивами

CFileException – при операциях с файлами

CResourceException – ресурс не найден, не вызван

COleException –OLE-исключения

CDBException – операции с БД

CUserException – невозможно найти ресурс

CDaoException – с объектами доступа к БД

CInternetException – с работой в Интернет

Для получения подробной инфы об исключении исп-ся: GetErrorMessage(), ReportError().

Основы организации ввода-вывода в современных операционных систем. Понятие файловой системы и системы управления файлами. Синхронный и асинхронный ввод-вывод. Основные API-функции для организации ввода-вывода в ОС Windows.

Наши рекомендации