Условие освобождении объектов синхронизации
Тип объекта | Условие |
1)Thread | Поток завершен. |
2)Process | Переходит в состояние после завершении последнего потока процесса |
3)File | Объекта файла после завышение операции вода- вывода |
4)Event | Когда поток выполнил функцию SetEvent |
5)Semaphone | Счеттчик ресурсов содержит значение больше 0 |
6)Mutex | Когда поток его выполнил функцию ReleaseMutex |
7)WaitableTimer | После SetWaitableЕimer |
Эффективность многозадачной системы
- количество программ выполняемых в единицу времени(пропускная способность ВЧ).
- время отклика каждой запущенно программы (реактивность ).
- способность обеспечить удобство работы пользователя в динамичной меняющей обстановки (динамичность).
Указанные параметры взаимно исключаемые, по этому ОС разделены на 3 типа, каждый из них обеспечивает наилучше значения одного из названых параметров. С точки зрения одной программы наибольшее пропускной способность имеют ОС с пакетной обработки. Не тратиться временя на сохраннее и восстановления текущего состояния, что имеет место при ее вытеснении другой задачи, в тоже время если процесс не участвует в каких-то операции то оно простаивает.
Многозадачность приводить к значительной уплотнению управлению программ и обеспечивает большую пропускную способность , чем выполнению программ по очереди в пакетном режиме. Таким образом с точки зрении являются ОС с не вытесняющей многозадачностью
Реактивность обеспечивает время отклика(время выполнения программы). Система гарантирует что программа выполниться за определённый отрезок времени.
Динамичность определяет удобство работы пользователя в котором часто хочется одновременно работать с несколькими программами интерактивными, причем заранье не известно с какими именно и когда. В таких системах распределения ресурсов компьютера должны вести себя приемлемо в случае заранее не известных количеством программ и запрещенным им качеством ресурсов. Такие системы называются системами разделения времени, ОС Win, Linux .
Механизм сообщений Windows
В основ Работы ОС Windows и работающи в нем лежит обработка сообщений. Система и приложения выработают такие сообщения на в качестве ответа на каждое события. В wndows каждый поток имеет собственную очередь сообщений, что позволяет потокам работать не зависимо . сообщения имеют структуру данных
typedef struct tagMSG {
HWND hwnd;// дескриптор окна
UNIT message; /// индитфиикатор сообщений
WPARAM wParam; // в каждой сообщений свое значения
LPARAM lParam;//
GWORD time;//количетсво м.сек с момента запуска окна
POINT pt; // положения курсор мыши в экранных координатах
}
MSG;
Основой механизмом сообщения является поток сообщений. Сообщения предназначенные конкретному потоку ставиться в очередь конкретному потоку. Отдельные сообщения могут назначаться несколькими потокам или относиться системе. Для вывода сообщений используется функция MessageBox выводить на эран окно с сообщением и кнопко лии кнопаками выхода
Int MessageBox (
HWND hwnd;//дескриптор окна
LPCTSTR lpText,//сообствено текс содержания сообщений
LPCTSTR lpCaption;// заголовок окна
UNIT uType//тип окна(можно указать использований кнопок)
)
Типы параметром: первый-32 битовой целый, второй 32 битный указатель на строку, 4-ый 32-битное целое. Для работы с окнами в программе выделяют 4 секции : регистрация класса окон, создания главного окна, цикл обработки очереди сообщений, процедура главного окна.
Регистрация классов окон выполняется выполняеться с помощью функции RegisterClassA(WNDCLASS) который содержит один параметр, указатель на структуру в ней содержиться информация о окне. На основе зарегистрированного класса с помощью CreateWindows можно создать экземпляр окна и все его особенность его описать
Цикл обработки очереди сообщений
while(GetMessage(&msg,NULL,0,0))
{
//разрешить использования клавиатуры путем трансляции сообщений о виртуальный клавиш сообщения о цифровых клавиш
TranslateMessage(&msg) ;
//вернуть управления windows и передать сообщения далее процедуре окна
DispatchMessage(&msg) ;
}
GetMessage – выбирает очередное сообщения из цепочек сообщений и помещает в структуру msg.
TranslateMessage –действия касается сообщений WM_KEYDOWN, WM_KEYUP, которые транслируются в WC_CHAR WM_DEADCHAR, WM_SYSKEYDOWN и WM_SYSKEYUP –которые преобразуются в WM_SYSCHAR, WM_SYSDEADCHAR. Смысл преобразования заключаеться в посылке дополнительной сообщений. Выход из цикла ожидания имеет место только в том случае если GetMessage возвращает ноль.
Процедура выполниться необходимые функции для вывода информации в окно , восприятия указаний проявляющий в окне, в том числе в виде выбора пункта меню или указания на очередным шаге диалога и анализ вводим указанных ус клавиатуры , выполнения необходимы действий и вида состояния … Для реализации таких действи надо знать такие функции : прототип функции окна
LRESULT CALLBACK WindowsFunc(
HWND hwnd,//идификатор окна
UINT message,//идификарот сообщений
// уточнают смыл сообщения
WPARAM wParam,
LPARAM lParam,
)