- •2) Виртуальная память
- •3) Вывод информация в окно с помощью классов из библиотеки mfc.
- •4) Иерархия классов библиотеки mfc.
- •5 Императивное, функциональное и логическое программирование. Сходство и различие.
- •6)Контейнерные классы библиотеки mfc.
- •7)Контекст устройства. Классификация контекстов устройств. Функции работы с контекстами устройств
- •8. Назначение и Классификация ппп
- •9) Направления интеллектуализации пакетов прикладных программ.
- •10.Направления интеллектуализации ппп. Типология задач интеллектуализации.
- •11) Обработка исключений с помощью библиотеки mfc.
- •12)Обработка сообщений в библиотеке mfc
- •13) Общая характеристика ппп. Функциональное и системное наполнение ппп. Типовые проекты ппп.
- •14) Объекты в Win32. Классификация объектов. Функции работы с объектами Win32.
- •16)Организация асинхронного ввода. Сообщения от манипулятора типа «мышь». Сообщения от клавиатуры (см также 33!!!)
- •17 Организация взаимодействия процессов и потоков в Win32.Процессы и потоки в Win32. Приоритеты. Планирование
- •18 Основнные понятия объектно-ориентированного программирования.
- •19) Библиотека stl.
- •21)Полиморфизм. Перегрузка методов и операторов. Виртуальные методы.
- •23) Понятие сериализации.
- •24 Стандартные элементы управления
- •25) Процессы и потоки в Win32. Приоритеты. Планирование процессорного времени. Функции работы с процессами и потоками.
- •26)Архитектура «документ/представление»
- •Глава 20. Документ и его представления
- •Глава 21. Печать и предварительный просмотр документов
- •27) Реализация многопоточных приложений с использованием библиотеки mfc.
- •28 Ресурсы Windows. Способы задания ресурсов Windows-приложения и их использования.
- •29) Системы координат
- •29 Система координат
- •30 Средства реализации взаимного исключения в Win32.
- •31)Стандартные элементы управления и диалоговые панели в библиотеке mfc.
- •32 Структура windows приложения.
- •33) Структура и типология сообщений в Win32. Классиф сообщений. Очередь сооб, ф-ункции работы с ней. (см также 16!)
- •34) Таймер. Назначение, свойства и особенности использования
- •2) Можно заставить Windows пересылать сообщения другой функции этого же приложения.
- •35) Технологии конструирования по
- •36) Шаблоны классов и функций
- •37) Шрифты Типы шрифтов
- •Создание dll
17 Организация взаимодействия процессов и потоков в Win32.Процессы и потоки в Win32. Приоритеты. Планирование
Процесс– это отдельная исполняемая программа с используемой ею памятью и другими выделяемыми ей ресурсами. Многозадачность - это способность операционной системы выполнять несколько программ одновременно. В основе этого принципа лежит использование операционной системой аппаратного таймера для выделения отрезков времени для каждого из одновременно выполняемых процессов.
32-разрядные версии Windows кроме многозадачности поддерживают еще и многопоточность. Многопоточность - это возможность программы самой быть многозадачной. Программа может быть разделена на отдельные потоки выполнения, которые, как кажется, выполняются параллельно между собой и потоками других задач (процессов).
Управление процессами и потоками в ОС Windows производится при помощи приоритетов ( от 0 до 31). Установка приоритета производится функцией SetPriorityClass().
Процессы.
(По приоритету) процессы можно разделить на 4 класса:
Idle (4). Процессор требуется время от времени.(мониторинг системы, фоновая печать). Если порождающий процесс Idle, то и порожденный тоже Idle.
Normal (7-9). Все пользовательские процессы по умолчанию. Это интерактивные процессы , они требуют постоянного внимания пользователя (работа в графическом или текстовом редакторе). Делятся на foreground (переднего плана) и background (фоновые).
High (13). Процессы, которые большую часть времени ожидают какого-либо события.(TaskManager в windows ожидает нажатия комбинации клавиш, чтобы активизироваться).
Realtime (24). Это: Программы, напрямую общающиеся с аппаратурой и операции, которые ни в коем случае нельзя прерывать.
Создание: CreateProcess(); Создается новый процесс и его главный поток ( запускается исполняемый модуль, соответствующий указанному имени файла).
Возвращается булевое значение ( TRUE или FALSE).
Завершение: ExitProcess(); Завершает процесс и все его потоки.
Уничтожение извне: TerminateProcess(); Уничтожает процесс и все его потоки. Возвращает булевое значение.
Другие функции:
GetCommandLine(); Возвращает указатель на коммандную стоку текущего процесса.
GetCurrentProcess(); Возвращает псевдодескриптор текущего процесса, который не может буть унаследован дочерними процессами.
GetCurrentProcessId();Возвр идентификатор текущ. процесса.
OpenProcess(); Возвращает дескриптор процесса по его идентификатору.
GetExitCodeProcess();Воз код завершения указанного процесса.
GetSturtupInfo(); Создает копию структуры STURTUPINFO текущего процесса.
Поток – это последовательность исполняемых команд. Процесс может состоять из единственного потока, а может содержать их несколько
Поток является базовым элементом механизма выполнения программ.
При необходимости одновременного выполнения нескольких операций в рамках одной программы на реализацию каждой из них выделяется отдельный поток. Задача предоставления потоку необходимого процессорного времени возлагается исключительно на ОС, какому потоку отдать предпочтение и сколько выделить ему времени, ОС приходится учитывать немало факторов. Недостаточно просто установить таймер, чтобы каждые несколько миллисекунд управление передавалось следующему очередному потоку.
Основным фактор - приоритет выполнения каждого потока. В Win32 каждому потоку присваивается свой приоритет - от 0 до 31; чем больше число, тем выше приоритет. Приоритет 31 под особенно критичные операции, например, прием данных в реальном режиме времени.
Приоритет 0 назначается операционной системой некоторым второстепенным задачам, выполнение которых происходит в то время, когда нет других задач.
Большинство потоков работают с приоритетом от 7 до 11.
Каждые несколько миллисекунд диспетчер ОС пересматривает все работающие в системе потоки и выделяет процессорное время потоку с наивысшим приоритетом. Если потоков с одинаково высоким приоритетом несколько, то управление передается тому, который простаивает дольше других.
Создание: CreateThread(); Создается новый поток в адресном прострнстве вызывающего процесса. Возвращается дескриптор потока.
Прекращение существования:
Поток самостоятельно завершается.
Поток принудительно завершен другим потоком этого процесса. ЛЮБОЙ ПОТОК МОЖЕТ ВМЕШАТЬСЯ В РАБОТУ ЛЮБОГО ПОТОКА В СИСТЕМЕ,
При завершении процесса все связанные с ним потоки будут завершены системой.
Завершение: ExitThread(); Завершает поток.
Уничтожение извне: TerminateThread (); Уничтожается поток. Возвращается булевое значение.
Объекты: большинство создаваемых потоком объектов являются собственностью процеса, к которому принадлежит данный поток. Принадлежность объекта процессу дает возможность другим потокам процесса доступаться к этому объекту.
Другие функции:
AttacheThreadInput(); Назначает или отменяет вывод одного потока на вход другого.
CreatRemoteThread(); Создает поток в адресном пространстве другого процесса.
GetCurrentThread(); Возвращает псевдодескриптор текущего потока, который не может буть унаследован дочерними процессами.
GetCurrentThreadId(); Возвращает идентификатор текущего процесса.
GetExitCodeThread(); Возвращает код завершения указанного потока.
SuspendThread(); Приостанавливает поток, если он еще не приостановлен, и увеличивает значение счетчика вызовов этой функции на 1.
ResumeThread(); Уменьшает на 1 значение счетчика вызовов SuspendThread(), и если это значение ==0, поток возобновляется.