- •Алматы 2011
- •Наименование темы
- •Лекция 1. Введение. Основные понятия. Основы программирования в операционной системе Windows.
- •Классическое системное программирование рассматривает круг вопросов, связанных с синхронизацией и диспетчеризацией потоков и процессов, обменом данными между процессами, управлением устройствами компьютера и файлами, обеспечением безопасности данных.
- •Несколько общих положений о программировании в Windows.
- •TranslateMessage (&msg);
- •DispatchMessage(&msg);
- •Дополнительная литература: 14[31-54, 551-559]
- •Дополнительная литература: 14[167-179]
- •Глоссарий по курсу
Структурная обработка исключений |
2 |
1 |
3 |
3 |
|
||||
|
|
|
|
|
Система информационной безопасности |
4 |
1 |
6 |
6 |
|
||||
|
|
|
|
|
Всего (часов) |
30 |
15 |
45 |
45 |
2. 2 Конспект лекционных занятий
Лекция 1. Введение. Основные понятия. Основы программирования в операционной системе Windows.
Классическое системное программирование рассматривает круг вопросов, связанных с синхронизацией и диспетчеризацией потоков и процессов, обменом данными между процессами, управлением устройствами компьютера и файлами, обеспечением безопасности данных.
В классической структуре программ, можно выделить три типа структур:
-диалоговая;
-консольная;
-безоконная.
Несколько общих положений о программировании в Windows.
1. Программирование в Windows основывается на использовании функций
API.
2. Список функций API и их описание лучше всего брать из файла WIN32.HLP, который поставляется с пакетом Borland C++.
3.Главным элементом программы в среде Windows является окно.
4.Окно может содержать элементы управления: кнопки, списки, окна редактирования и др.
5.Операционная система Windows использует линейную модель памяти.
6.Следствием пункта 5 является то, что мы фактически не ограничены в объеме данных, кода или стека (объеме локальных переменных).
7.Операционная система Windows является многозадачной средой.
Windows API (application programming interfaces) - общее наименование
набора базовых функций интерфейсов программирования приложений операционных систем семейства Windows корпорации «Майкрософт». Является самым прямым способом взаимодействия приложений с Windows.
Win32 - 32-разрядный API для современных версийWindows. Базовые функции этого API реализованы в DLL kernel32.dll и advapi32.dll.
В современных версиях Windows, работу Win32 GUI обеспечивают два мо-
дуля: csrss.exe (Client/Server Runtime Subsystem), работающий в пользователь-
ском режиме, и win32k.sys в режиме ядра. Работу системных Win32 API обеспе-
чивает ядро - ntoskrnl.exe
Win64 - 64-разрядная версия Win32, содержащая дополнительные функции для использования на 64-разрядных компьютерах.
Win32 АPI включает более 1500 функций. Классификация функций API:
1.Управление Windows.
2.Элементы управления Windows.
10
3.Настройка.
4.Графические средства.
5.Системные средства.
6.Языковая поддержка.
7.Сетевые средства.
Вызов функции API. Из файла помощи выберем любую функциюAPI, на-
пример, MessageBox:
int MessageBox (HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
Данная функция выводит на экран окно с сообщением и кнопкой(или кнопками) выхода. Смысл параметров:
-hWnd -дескриптор окна, в котором будет появляться окно-сообщение;
-lpText - текст, который будет появляться в окне;
-lpCaption - текст в заголовке окна;
-Type - тип окна, в частности можно определить количество кнопок выхо-
да.
Типы параметров. Все они 32-битные целые числа:
-HWND - 32-битное целое;
-LPCTSTR - 32-битный указатель на строку;
-UINT - 32-битное целое.
Классическая структура программы подWindows имеет главное окно, и следовательно, процедуру главного окна. В коде программы можно выделить следующие секции:
-регистрация класса окон;
-создание главного окна;
-цикл обработки очереди сообщений;
-процедура главного окна.
Регистрация класса окон. Регистрация класса окон осуществляется с помощью функции RegisterClassA, единственным параметром которой является указатель на структуру WNDCLASS, содержащую информацию об окне.
Создание окна. На основе зарегистрированного класса с помощью функции CreateWindowExA (или CreateWindowA) можно создать экземпляр окна.
Цикл обработки очереди сообщений. Вот как выглядит этот цикл на язы-
ке Си:
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage(&msg);
}
Функция GetMessage() «отлавливает» очередное сообщение из ряда сообщений данного приложения и помещает его в структуру MSG.
TranslateMessage ее компетенция касается сообщенийWM_KEYDOWN и WM_KEYUP, которые транслируются в WM_CHAR и WM_DEADCHAR, а также
11
WM_SYSKEYDOWN и WM_SYSKEYUP, преобразующиеся в WM_SYSCHAR и WM_SYSDEADCHAR.
Процедура главного окна. Вот прототип функции окна на языке С:
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
Передаваемые параметры:
-hwnd - идентификатор окна;
-message - идентификатор сообщения;
-wParam и lParam - параметры, уточняющие смысл сообщения. Архитектура Windows. Ядро отделено от исполнительных компонентов и
выполняет простое управление потоками. Все остальные задачи выполняют исполнительные компоненты. Некоторые из них реализованы по модульной схеме.
Рисунок 1.1 - Архитектура Windows
Важные компоненты:
-System Service Interface;
-Configuration Manager;
-I/O Manager;
-Virtual Machine Manager , VMM;
-Local Procedure Call, LPC;
-Process Manager;
-Object Manager.
Новый девиз и главные концепции ОСWindows Vista - Clear, Confident, Connected.
Три ключевые технологии ОС - Avalon, Indigo, WinFX.
12
Avalon - кодовое имя технологии WPF (Windows Presentation Foundation),
графическая подсистема, может заменить устаревшие библиотекуuser32.dll и GDI (Graphics Device Interface) интерфейс графических устройств, отвечающие за графику в Windows.
Indigo - кодовое название WCF (Windows Communication Windows). WCF-
это технология для построения и запуска соединенных систем, новая архитектура Web-сервисов, обеспечивающая безопасный и надежный обмен данными.
WinFX - новый набор API OC Windows, отвечающий всем современным требованиям.
Адресация памяти. В семействе процессоровIA-32 выбор метода обращения к памяти определяется режимом работы процессора.
Вреальном режиме процессор может обращаться только к первому мегабайту памяти, адреса которого находятся в диапазоне от00000 до FFFFF в шестнадцатеричном выражении. При этом процессор работает в однопрограммном режиме.
Взащищенном режиме процессор может одновременно выполнятьне сколько программ. При этом каждому процессу (т.е. выполняющейся программе) может быть назначено до 4 Гбайт оперативной памяти.
Ввиртуальном режиме адресации процессора8086, работает в защищенном режиме. Для каждой задачи создается собственная виртуальная машина, которой выделяется изолированная область памяти размером 1 Мбайт, и полностью эмулируется работа процессора 80x86 в реальном режиме адресации.
Линейно-сегментная модель памяти. В этой модели(flat segmentation model) дескрипторы всех сегментов указывают на один и тот же сегмент памяти, который соответствует всему 32-разрядному физическому адресному пространству компьютера.
Рисунок 1. 2 - Линейно-сегментная модель памяти
В защищенном режиме каждый сегмент определяется с помощью соответствующего дескриптора - 64-разрядного числа, хранящегося в специальной сис-
13