- •Порядок обработки сообщений, цикл обработки сообщений
- •Атрибуты контекста.
- •Порядок обработки сообщений, цикл обработки сообщений
- •Аппаратные сообщения
- •Символьные сообщения
- •Дочерние окна
- •Класс полос прокрутки
- •Класс редактирования
- •25 Класс окна списка
- •Способы хранения данных программы
- •Общие сведения о файле ресурсов
- •Меню и сообщения
- •Многозадачность и многопоточность
- •Вытесняющая многозадачность
- •Использование функции Sleep
- •36 Критические разделы
- •37 Использование событий
- •38 Многооконный интерфейс. Элементы mdi. Windows и mdi
- •39 Динамически подключаемые библиотеки. Типы связывания
Многозадачность и многопоточность
Многозадачность ( multitasking ) – это способность операционной системы выполнять несколько программ одновременно. В основе реализации этого принципа на персональных ЭВМ лежит использование операционной системой аппаратного таймера для выделения отрезков времени ( time sliced ) для каждого из одновременно выполняемых процессов. Если эти отрезки времени достаточно малы, и машина не перегружена слишком большим числом программ, то пользователю кажется, что все эти программы выполняются параллельно.
Многопоточность ( multithreading ) – режим, при котором машинная программа содержит в себе параллельно исполняемые участки или процедуры ( threads ). Таким образом, механизм многопоточности дает возможность программе самой быть многозадачной.
Вытесняющая многозадачность
Некоторый прообраз многозадачности, реализованной аппаратно, можно вывести из процессоров, имеющих систему прерываний. Обобщенно прерываниями микропроцессора называют реакцию на особые случаи, которая заключается в передаче управления от текущей программы специальной процедуре обслуживания. К таким требующим обработки случаям относится появление сигналов от аппаратных компонентов (клавиатуры, динамически обновляемой памяти, видеокарты, таймера) о важных внешних событиях и сообщения внутренних блоков микропроцессора об ошибках или затруднениях в работе программы (например, деление на ноль, запрещенный доступ к памяти). Часто под прерываниями узко понимают только запросы первого типа, а запросы второго типа называют исключениями.
Схема обработки прерывания следующая:
• Работа основной программы пользователя.
• Возникновение прерывания.
• Сохранение параметров работающей программы (регистров процессора).
• Переход по адресу процедуры обработки прерывания.
• Выполнение процедуры обработки прерывания.
• Восстановление параметров работающей программы.
• Переход по адресу следующей команды основной программы.
Прерывания с более высоким приоритетом, в свою очередь, могут прервать обработку текущего прерывания и т.д.
Невытесняющая многозадачность
16-и разрядная Windows уже стала поддерживать и вытесняющую многозадачность ( non - preemptive multitasking ). Такой тип многозадачности стал возможен благодаря основанной на сообщениях архитектуре Windows . Windows – программа может находиться в памяти и не выполняться до тех пор, пока не получила сообщение. Ранее, эти сообщения часто являлись прямым или косвенным результатом ввода информации пользователем с клавиатуры или мыши. Сейчас, механизм посылки сообщений широко используется и для обмена данными, инициации какого-либо действия приложения и т.п.
При всем при этом, Windows использовала вытесняющую многозадачность для выполнения DOS – программ, а также позволяла некоторым программам, например, для целей мультимедиа, получать аппаратные прерывания от таймера.
Существенным ограничением такого подхода является то, что время, затрачиваемое программой на обработку сообщения может быть очень большим, а управление операционной системе передается только после обработки сообщения.
Частично преодолеть последнее ограничение, можно, опять таки используя таймер для периодической смене выполняемых программ.
34 Программная реализация многозадачности
Когда пользователь запускает программу, Windows создает в памяти компьютера экземпляр программы, называемый процессом. Процесс не является точной копией *.ехе – файла, как это было, например в операционной системе ДОС. Процесс содержит в себе копию *.ехе – файла, а также некоторую другую информацию о функционировании данного приложения. В этой дополнительной информации хранятся, например, границы выделенной приложению памяти, что помогает аппаратно отслеживать корректности обращения к оперативной памяти со стороны приложения. Так как Windows поддерживает механизм виртуальной памяти, то среди этой информации находятся сведения о расположении сегментов программы. Здесь же содержится командная строка, формируемая при запуске программы.
Запустить процесс можно как при помощи командной строки системного меню Windows , при помощи программы Проводника, так и программно, из другого приложения.
