
- •Классификация системного программного обеспечения
- •Другая классификация
- •Требования к системному программному обеспечению
- •2. Операционная система. Основные функции ос. Структура операционной системы.
- •3. Интерфейс прикладных программ (api) ос. Api Win32 (системные функции).
- •Api операционных систем.
- •Структура api-программ
- •4. Дисковая подсистема в архитектуре ibm pc.
- •5. Низкоуровневая организация дисковой памяти. Сервис bios доступа к дисковой подсистеме.
- •Емкость Диска
- •Оглавление Диска (Каталог)
- •Основные Положения На Память
- •6. Понятие файловой системы. Назначение, требования, функции. Способы организации фс.
- •7. Объекты файловой системы: файлы, директории, логические устройства, другие виды объектов. Файловая система
- •Имена файлов
- •Типы файлов
- •Логическая организация файла
- •Физическая организация и адрес файла
- •Права доступа к файлу
- •Кэширование диска
- •Общая модель файловой системы
- •Отображаемые в память файлы
- •Современные архитектуры файловых систем
- •8. Файловые системы на основе fat (либо по желанию ntfs, s5fs, ufs, ext и т.Д.).
- •9. Служебные структуры файловых систем fat и их использование.
- •1.3.2. Файловые системы
- •Файловая система fat Краткие теоретические сведения
- •Обзор файловой системы fat
- •Имена файлов в fat
- •Преимущества файловой системы fat
- •Недостатки файловой системы fat
- •Обзор файловой системы hpfs
- •Суперблок
- •Запасной блок
- •Преимущества файловой системы hpfs
- •Недостатки файловой системы hpfs
- •Обзор файловой системы ntfs
- •Надежность
- •Дополнительные функции
- •Поддержка posix
- •Устранение ограничений
- •Преимущества файловой системы fat
- •Недостатки файловой системы ntfs
- •Соглашения именования в ntfs
- •10. Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) - dos, Win32.
- •12. Вычислительный процесс. Состояния вычислительного процесса.
- •[Править]Создание программ
- •[Править]Использование программ
- •[Править]Правовые аспекты
- •13. Адресное пространство процесса (задачи).
- •20. Адресное пространство процесса
- •14. Приложения Windows (Win 32), разновидности. Структура оконных (windowed) приложений.
- •2. Особенности приложений Win 32.
- •17. Событийное управление в Win32. Сообщения и очереди сообщений Windows (Windows messages): назначение, структура, отсылка, доставка, обработка.
- •18. Цикл обработки сообщений. Оконная процедура: назначение, выполнение, способы активизации и завершения. Краткие теоретические сведения
- •19. Многозадачность, многозадачные операционные системы, особенности выполнения приложений в многозадачной среде.
- •Краткие теоретические сведения поток
- •Краткие теоретические сведения
- •27. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
- •Синхронизация субъектов взаимодействия
- •Сравнительная характеристика механизмов взаимодействия
- •33. Графическая подсистема Win32 (gdi) - общая характеристика, основные концепции, объекты (инструменты).
- •Х.1 Общие сведения
- •Х.2 Системы координат и единицы измерения
- •Х.3 Цвета и палитры
- •Х.4 Основные инструменты графической подсистемы
- •Х.4 Растровая графика
- •Х.5 Управление областями вывода и отсечением
- •Х.6 Некоторые аспекты использования графической подсистемы
- •34. Подсистема памяти. Основные задачи, функции, требования. 35. Виртуальное адресное пространство, управление памятью с использованием виртуального адресного пространства.
- •37. Подсистема памяти Win32. Регионы (области) памяти. Группы функций api подсистемы памяти.
- •38. Распределение памяти на уровне менеджера виртуальной памяти (vmm api - Win32). In (35) 3. Архитектура памяти в Win32® api. 3.2. Управление виртуальной памятью. Vmm.
- •39. Отображение файлов в память (File mapping - Win32).
- •4.1 Адресное пространство процесса.
- •4.2 Функции работы с виртуальной памятью.
- •4.3 Проецирование файлов в память
- •4.4.1 Запуск исполняемых файлов и динамически связываемых библиотек
- •4.4.2 Проецирование файлов данных
- •4.4.3 Взаимодействие процессов через общую область данных
- •4.4 Функции работы с кучами (heap-область)
- •4.5 Глобальные и локальные объекты "память"
- •4.6 Функции crt Memory api
- •X.2. Структура подсистемы памяти Win 32 и группы функций
- •40. Системный реестр Windows: назначение, организация, доступ.
Какую работу нужно написать?
14. Приложения Windows (Win 32), разновидности. Структура оконных (windowed) приложений.
Структура приложения Win 32 и основные определения
Основные определения
Программа,
Окно (window) – базовое понятие графического интерфейса пользователя (GUI) и основной объект внутрисистемного взаимодействия в ОС Windows. Окна играют роль интерфейса прочих структурных элементов программы, как для пользователя (графический объект), так и для других программ, включая системные (получатель сообщений)
Приложение – программа с окном, в определенной структуре
Процесс – обычно "невидимая" программа
Поток – единица планирования времени выполнения программ.
2. Особенности приложений Win 32.
1) Многозадачная среда выполнения
2) Подконтрольность операционной системе.
Как следствие:
определенная регламентируемая структура;
составные части программы и объекты, с которыми она работает, известны системе и контролируются ею;
унифицированный механизм взаимодействия программ внутри себя и друг с другом;
выполнение всех операций ввода-вывода и управления любыми объектами и ресурсами посредством вызовов ОС.
3. Событийное управление
Сообщения и события. Их функция и обработка в Win 32.
Источник, получатель и обработчик сообщений.
4. Структура приложения
Головной модуль
Цикл обработки сообщений: извлечение, трансляция, обработка.
Генерация сообщений.
Примеры использования сообщений
15. Окно Win32: назначение, виды, свойства. Оконные классы.
16. Создание окон, управление окнами.
Окна ( 15 16 )
Окно (window) –представляет собой прямоугольную (специальными методами можно задать иную форму) часть экрана, в которой приложение производит отображение выводимой информации и из которой получает вводимую информацию. Кроме того, окно является получателем сообщений.
При загрузке Windows всегда создается окно, занимающее весь экран – Desktop window. Каждое Windows-приложение, использующее стандартные интерфейсы Windows (Windows-based приложение), создает хотя бы одно окно, называемое главным окном приложения (возможно, невидимое). Многие приложения создают еще дополнительные окна.
В каждый момент времени только одно окно в системе может получать вводимую информацию – т.н. активное окно. Пользователь может использовать клавиатуру, мышь или другое устройство ввода для взаимодействия с окном.
...
Приложения могут использовать различные типы окон:
– элементы управления (controls)
– окна диалога (dialog boxes)
– окна сообщений (message boxes)
Словосочетание "Handle of a window" имеет также и вполне обычный "литературный" смысл — оно переводится как просто "оконная ручка"!
Иерархия окон
Windows управляет каждым окном в зависимости от отношений этого окна с другими окнами системы. Информация о взаимоотношениях окон хранится в списке диспетчера окон (window manager's list). Каждое окно в этом списке определяется специальной структурой, внутри которой нам интересны четыре поля:
– описатель родительского окна
– описатель окна - хозяина
– описатель дочернего окна
– описатель следующего окна в списке братьев
При загрузке Windows создает окно рабочего стола (Desktop window). Это окно занимает весь экран. Это окно всегда лежит в начале списка диспетчера окон. Следующий уровень иерархии составляют окна верхнего уровня (top-level windows). К таким окнам относятся все не-дочерние окна. Окна верхнего уровня соединяются с окном рабочего стола следующим образом:
– каждое окно ссылается на окно рабочего стола как на родительское
– окно рабочего стола ссылается на самое верхнее окно из окон верхнего уровня
– все окна верхнего уровня, кроме самого нижнего, ссылаются друг на друга, образуя однонаправленный связный список братьев. Порядок расположения окон в этом списке определяет очередность перекрытия окон.
Окна верхнего уровня могут так же вступить в отношения владения. Если при порождении окна указать в качестве окна владельца окно не верхнего уровня, то система поднимется по цепочке родительских окон и назначит в качестве хозяина соответствующее окно верхнего уровня. Окно диалога всегда принадлежит породившему его окну, за исключением тех случаев, когда оно порождается как дочернее.
Любые окна могут иметь дочерние окна. При этом каждое окно содержит указатель на начало списка дочерних окон. В системе могут образовываться весьма сложные и разветвленные структуры.
Окна, существующие в любой момент в системе, образуют определенную иерархию.
Отношение предок-потомок (родитель-ребенок)
Окно может иметь родительское окно (parent window). В таком случае оно называется дочерним окном или окном-потомком (child window) по отношению к родительскому. Дочернее окно никогда не выходит за границы родительского, по умолчанию имеет только клиентскую область, но дополнительно дополнительно можно задать любые элементы, кроме меню. Действия, производимые с родительским окном, имеют влияние также и на дочерние:
– уничтожение – уничтожение перед родительским;
– скрытие – скрытие перед родительским;
– перемещение – перемещение вместе с родительским;
– отображение – отображение после родительского.
Окна-потомки обычно используются при организации т.н. многодокументного интерфейса (multi-document interface – MDI)
Отношение владелец-подчиненный
Окно также может иметь окно-хозяина, или владельца (owner window). Это другой тип отношений между окнами. Окно всегда располагается поверх хозяина и сворачивается и уничтожается вместе с ним.
Особенности передачи сообщений владельцу и подчиненному.
Создание окна
Для порождения окна (в том числе и главного окна приложения) используется функция CreateWindow (или CreateWindowEx). В общем случае приложение, создающее окно, должно определить следующие характеристики, передаваемые в качестве параметров:
1) имя класса окна (window class)
2) заголовок приложения, имя окна (window name)
3) стиль окна (window style)
4) 2 целочисленных значения – координаты левого верхнего угла окна (location)
5) 2 целочисленных значения – размеры окна (size)
6) описатель родительского окна или окна-хозяина (parent or owner window), NULL если независимое окно (т.е. владелец – система)
7) дентификатор дочернего окна (для окон-потомков) или описатель меню (для окон верхнего уровня) (child-window identifier or menu handle)
8) описатель экземпляра программы (instance handle)
9) дополнительные данные (creation data) (??)
(??)– место в порядке расположения (position in the Z-order)
Получить окна (их описатели), связанные в иерархии с данным, можно с помощью функции GetWindow, первый параметр – описатель известного окна, второй специфицирует способ поиска (например, окно – владелец заданного окна).
Базовую информацию об окне можно получить, например, с помощью функции GetWindowInfo.
Класс окна
Каждое окно в системе относится к какому-либо оконному классу. Окна одного класса однотипны и работают одинаково. Это связано с тем, что класс окна определяет, во-первых, ряд внешних атрибутов (форму курсора, параметры фона, пиктограмму), а, во-вторых, все окна одного класса работают с одной и той же функцией окна.
Функция окна – специальная функция, которая назначается классу окна. Для посылки окну сообщения операционная система вызывает эту функцию и передает ей в качестве параметров код сообщения и другую уточняющую информацию.
Существует три типа оконных классов:
1) Системные глобальные классы – классы, которые регистрируются при загрузке операционной системы. К таким классам относятся классы элементов управления (кнопки, списки, полосы прокрутки и т.д.)
2) Прикладные глобальные классы – классы, которые регистрируются динамически связываемыми библиотеками (DLL) и доступны всем приложениям системы
3) Прикладные локальные классы – классы, которые приложения регистрируют для своего внутреннего использования.
Для регистрации классов используются функции RegsterClass или RegisterClassEx. В функцию регистрации передается адрес структуры типа WNDCLASS, содержащей следующую информацию:
lpszClassName – имя класса окна;
style – стиль окна, именованная константа, задающая дополнительные параметры окна внутри класса; так, например, окно класса “полоса прокрутки” может иметь стили SBS_HORZ или SBS_VERT, определяющие направление прокрутки. Константы стилей могут объединяться по ИЛИ.
hInstance – описатель программы – владельца окна;
lpfnWndProc – указатель на оконную процедуру;
hIcon – описатель значка приложения (стандартного или загружаемого), или NULL (значок по умолчанию);
hCursor – описатель курсора приложения (стандартного или загружаемого), или NULL (курсором можно и нужно будет управлять самостоятельно);
hbrBackground – описатель кисти фона (см. описание графической подсистемы), константа (одна из стандартных) или создается программой;
lpszMenuName – имя меню (??)
cbClsExtra – дополнительная информация класса;
cbWndExtra – дополнительная информация окна.
3) Окно-родитель или окно-владелец – описатель окна, которому подчинено данное окно, или NULL, если окно независимо.
4) Размеры окна и координаты в пикселах, отсчитываемые от левого верхнего угла экрана, место в порядке расположения
5) Позиция (место) окна при перекрытии.
6) Идентификатор дочернего окна (если создаваемое окно является дочерним).
7) Описатель меню для окна, не являющегося дочерним.
Дочернее окно может иметь уникальный идентификатор, который позволяет выделять дочернее окно из множества дочерних окон. Не дочернему окну можно назначить меню.
8) Описатель экземпляра программы, создающей окно.
9) Дополнительные данные. Определяемый приложением блок данных, который будет передан процедуре окна при порождении в качестве одного из параметров. В случае Windows 95 размер корректно обрабатываемого блока ограничен 40 байтами.
Некоторые стили окон:
WS_OVERLAPPED (перекрывающиеся) – окна верхнего уровня с заголовком и границей и клиентской областью.
WS_OVERLAPPEDWINDOW (перекрывающиеся) – окна верхнего уровня с заголовком, границей, системным меню, кнопками минимизации и максимизации и клиентской областью, используются в качестве главного окна приложения.
WS_POPUP (всплывающие) – окна диалога, размещаемые поверх клиентской области главного окна.
WS_POPUPWINDOW (всплывающие) – окна диалога с системным меню и границей.
WS_CHILD (окна-потомки) – очевидно, характеристику см. выше.
WS_CLIPCHILDREN (??) – дополнительный стиль окна-предка, не позволяющий ему прорисовку поверх окна-потомка (см. GDI).
WS_CLIPSIBLINGS (??) – дополнительный стиль, запрещающий прорисовку поверх окон одного уровня “родственности”
WS_CAPTION (заголовок) – дополнительный стиль, добавляет окну заголовок, если можно.
WS_BORDER (тонкая рамка),
WS_DLGFRAME (двойная рамка для окон диалога, не может иметь заголовка),
WS_EX_DLGMODALFRAME (аналогично WS_DLGFRAME, но может быть комбинировано с WS_CAPTION для создания заголовка),
WS_EX_STATICEDGE (заголовок для окон без возможности ввода, например элемент static),
WS_THICKFRAME (толстая рамка окон с изменяющимся размером)
WS_HSCROLL (горизонтальная полоса прокрутки),
WS_MAXIMIZEBOX (кнопка максимизации),
WS_MINIMIZEBOX (кнопка минимизации),
WS_SYSMENU (системное меню),
WS_VSCROLL (вертикальная полоса прокрутки).
WS_DISABLED (окно не получает ввод),
WS_MAXIMIZE, WS_MINIMIZE (окно создается соответственно максимизированным или минимизированном виде),
WS_VISIBLE (окно порождается видимым, иначе для его необходимо вызов ShowWindow()).