- •Экзаменационный билет № 1
- •Состояния потоков
- •Экзаменационный билет № 2
- •Экзаменационный билет № 3
- •Указатели файлов
- •Определение размера файла
- •Экзаменационный билет № 4
- •Экзаменационный билет № 5
- •Экзаменационный билет № 6
- •Экзаменационный билет № 7
- •Экзаменационный билет № 8
- •Экзаменационный билет № 9
- •Экзаменационный билет № 10
- •Экзаменационный билет № 11
- •Динамически компонуемые библиотеки
- •Статические и динамические библиотеки
- •Неявное связывание
- •Экзаменационный билет № 12
- •Мьютексы
- •Покинутые мьютексы
- •Экзаменационный билет № 13
- •Отображение файлов
- •Экзаменационный билет № 14
- •Стратегии обработки файлов
- •Экзаменационный билет № 15
- •Экзаменационный билет № 16
- •Экзаменационный билет № 17
- •Ожидание завершения потока
- •Экзаменационный билет № 18
- •Обзор потоков
- •Основные сведения о потоках
- •Семафоры
- •Экзаменационный билет № 19
- •Исключения и обработчики исключений
- •Экзаменационный билет № 20
- •Совместное использование объектов ядра приложениями и службами
- •Экзаменационный билет № 21
- •Экзаменационный билет № 22
- •Экзаменационный билет № 23
- •Блоки и строки окружения
- •Необходимость в синхронизации потоков
- •Экзаменационный билет № 24
- •Экзаменационный билет № 25
Экзаменационный билет № 7
1. Получение статистической информации о задании.
2. Объекты синхронизации потоков.
3. Архитектура управления памятью в Win32.
Функция VirtualFree освобождает ряд страниц в виртуальном адресном
пространстве. А функция VirtualFreeEx освобождает ряд страниц в
виртуальном адресном пространстве указанного процесса.
BOOL VirtualFree(LPVOID lpvAddress, DWORD dwSize,
DWORD dwFreeType)
BOOL VirtualFreeEx(HANDLE hProcess, LPVOID lpvAddress,
36
DWORD dwSize, DWORD dwFreeType)
Функция VirtualLock блокирует область виртуального адресного
пространства в памяти. А функция VirtualUnLock дает возможность
разблокировать указанный ряд страниц в виртуальном адресном пространстве
процесса, позволяя системе выгружать эти страницы в файл подкачки по мере
необходимости.
BOOL VirtualLock (LPVOID lpvAddress, DWORD dwSize),
BOOL VirtualUnlock (LPVOID lpvAddress, DWORD dwSize)
Функция VirtualProtect изменяет установки защиты доступа к области
выделенных страниц в виртуальном адресном пространстве. Функция
VirtualProtectEx может действовать в виртуальном адресном пространстве
других процессов, тогда как VirtualProtect действует толька в рамках
вызывающего процесса.
BOOL VirtualProtect(LPVOID lpvAddress, DWORD dwSize, DWORD
dwNewProtect, DWORD pdwOldProtect)
BOOL VirtualProtectEx(HANDLE hProcess, LPVOID lpvAddress,
DWORD dwSize, DWORD dwNewProtect, DWORD pdwOldProtect)
Экзаменационный билет № 8
1. Структура программы. Цикл обработки очереди сообщений.
2. Создание событий управления консоли.
3. Ошибки и исключения.
Под ошибками понимаются исключительные ситуации, которые время от времени могут возникать в известных местах программы. Так, обнаружение ошибок, возникающих во время выполнения системных вызовов, и немедленный вывод сообщений о них должны предусматриваться логикой работы самой программы. Поэтому программисты, как правило, явно включают в программный код участки, ответственные, например, за тестирование успешности завершения операции чтения данных из файла. В главе 2 для диагностики ошибок и принятия соответствующих мер была разработана функция ReportError.
С другой стороны, исключения могут возникать практически в любом месте программы, и поэтому организация явной проверки всех исключений невозможна или практически нецелесообразна. Примерами подобных ситуаций могут служить попытки деления на ноль или обращения к недоступным областям памяти.
Вместе с тем, указанные различия между ошибками и исключениями являются довольно условными. Windows позволяет управлять генерацией исключений, возникающих в случае нехватки памяти при ее распределении с использованием функций НеарАllос и HeapCreate. Этот процесс описан в главе 5. Помимо этого, программы могут генерировать собственные исключения с кодами, определяемыми программистом, используя для этого функцию RaiseException, о чем далее будет говориться.
Обработчики исключений обеспечивают удобный механизм выхода из внутренних блоков или функций под управлением программы без использования операторов перехода goto или longjmp. Такая возможность оказывается особенно полезной, если блок получил доступ к таким, например, ресурсам, как открытые файлы, память или объекты синхронизации, поскольку обработчик может взять на себя задачу освобождения этих ресурсов. Возможно также продолжение работы программы после выполнения кода обработчика исключений, а не ее обязательное завершение. Кроме того, после выхода из блока программа может восстанавливать прежнее состояние системы, например маску FP-исключений. Именно в этом ключе обработчики используются во многих наших примерах.
