Управление памятью и процессорным временем.
Подсистема управления программами не обеспечивает квантования времени между приложениями Windows. Приложения Windows сделаны таким образом, что они сами "добровольно" отдают друг другу процессорное время, обеспечивая так называемую невытесняющую мультизадачность (nonpreemptive multitasking), используя аппарат сообщений. Windows NT создает отдельную виртуальную машину. Благодаря этому приложения Windows NT изолированы друг от друга. Использование отдельных виртуальных машин позволяет реализовать вытесняющую мультизадачность (preemptive multitasking) с выделением каждому приложению квантов времени.
Оперативная память делится на страницы, приложению выделяется целое число страниц. Защита от несанкционированного доступа осуществляется на аппаратном уровне. Приложение Windows состоят из сегментов кода и сегментов данных. В зависимости от модели памяти приложение может иметь один или несколько сегментов кода и один или несколько сегментов данных.
Сегменты приложения Windows получают дополнительный атрибут - тип сегмента. Существуют сегменты с фиксированным расположением в оперативной памяти (fixed), перемещаемые (moveable) и удаляемые (discardable). Перемещаемые сегменты могут менять свое расположение в адресном пространстве. Управляет этим, незаметным для приложений, процессом операционная система Windows.
Windows - многозадачная операционная система. Поэтому такой ресурс, как оперативная память, используется совместно всеми работающими параллельно приложениями или различными копиями одного и того же приложения, запущенного несколько раз. В процессе работы вы запускаете и завершаете различные приложения, что приводит к фрагментации непрерывного адресного пространства. Используя механизм перемещения сегментов, основанный операционная система Windows по мере необходимости "уплотняет" оперативную память, высвобождая непрерывное адресное пространство для запуска новых приложений.
Удаляемые (discardable) сегменты обычно используются для хранения выполняемых сегментов или сегментов констант. Если операционной системе Windows требуется получить в свое распоряжение область памяти, она может уничтожить удаляемый сегмент и забрать распределенную для него память. Если впоследствии потребуется восстановить содержимое удаляемого сегмента, Windows выполняет чтение данных сегмента из соответствующего файла.
Помимо описанных выше атрибутов сегменты могут иметь еще два. Можно создать сегменты, загружаемые при запуске приложения (preload) и загружаемые при обращении к ним (loadoncall). Сегменты типа loadoncall не загромождают оперативную память, так как после запуска приложения они остаются на диске и загружаются в память только при необходимости. Причем при составлении программы вам достаточно описать сегмент как loadoncall, после чего Windows будет сама его загружать при обращении к сегменту со стороны приложения.
Windows - приложения могут пользоваться так называемой виртуальной памятью. Виртуальная память позволяет создать иллюзию работы с оперативной памятью огромного размера - десятки и сотни мегабайт. Реально в физической памяти располагаются только те области виртуальной памяти, к которым чаще всего происходит обращение. Остальные области памяти (страницы памяти) хранятся на диске в специальном файле. Виртуальная память облегчает работу с очень большими массивами данных. Можно, например, получить у Windows буфер размером 10 Мбайт и заполнить его содержимым файла, затем выполнить сортировку этого буфера и записать результат в тот же самый или другой файл.
Аппаратная независимость
Наряду с графическим приборным интерфейсом и многозадачной средой с обменом сообщениями, аппаратная независимость является третьей основной особенностью Windows, выделяющей ее среди всех графических оболочек.
Аппаратная независимость означает, что прикладная программа, работающая в среде Windows на некотором компьютере с определенным набором технических средств, будет работать на любом компьютере, на котором работает система Windows. Таким образом, в системе Windows программист свободен при создании программ от особенностей и ограничений, накладываемых конкретными техническими устройствами.
Windows обеспечивает аппаратную независимость путем определения минимально необходимых свойств, которыми должны обладать технические устройства. Этот набор свойств является минимально необходимым для функционирования процедур Windows.
1. Основные компоненты WINDOWS – программы (.cpp, .h, .res, .rc, .def), компиляция
2. Структура WINDOWS – программы
3. Сообщения. Источники сообщений,
4. Формирование сообщений, примеры. Очереди.
5. Сообщения. Цикл сообщений, основные компоненты
6. Сообщения. Структура сообщений на примере WM_COMMAND
7. Структура MSG. Обработка сообщений.
8. Средства обработки в приложении и WINDOWS
9. Окна, классы и типы окон.
10. Регистрация класса окна, основные элементы класса
11. Линейки прокрутки, переключатели, окна пометки, окна списка
12. Комбинированные списки, окна редактирования и статические текстовые объекты
13. Способы создания меню
14. Определение диалоговой панели, взаимодействие пользователя с панелью
15. Диалоговые панели, модальные панели.
16. Немодальные панели. Отличие циклов сообщений
17. Ресурсы. Файл ресурсов, текстовый, бинарный. Создание
18. Файл определения модуля. Назначение, основные директивы (относящиеся к коду и данным
19. Графический приборный интерфейс GDI. Состав, назначение
20. Контекст, содержание контекста
21. Общий контекст, родительский, личный, для класса окна, физический
22. Последовательность действий приложения при формир. рисунка
23. Преобразование логических координат в физические и наоборот, единицы измерений, масштабирование
24. Назначение и состав структуры PAINTSTRUCT. Сообщ.WM_PAINT
25. Управление памятью и аппаратная независимость