
- •Системное по. Цели, задачи, классификация
- •Операционная система. Основные функции ос. Структура операционной системы.
- •Общая характеристика операционных систем Microsoft: семейства dos, Windows
- •Интерфейс прикладных программ (api). Apidos (программные прерывания) и Win32
- •Дисковая подсистема в архитектуре ibmpc
- •Низкоуровневая организация дисковой памяти. Сервис bios доступа к дисковой подсистеме.
- •Понятие файловой системы. Назначение, требования, функции. Способы организации фс.
- •Объекты файловой системы: файлы, директории, логические устройства, другие виды объектов.
- •Файловые системы на основе fat
- •X.2 Файловая система ntfs
- •Служебные структуры fat и их использование
- •Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) – dos, Windows Функции общего назначения
- •Файловый ввод-вывод
- •14. Адресное пространство процесса (задачи).
- •15. Приложения Windows (Win 32), разновидности. Структура оконных приложений
- •1. Основные определения
- •2. Особенности приложений Win 32.
- •3. Событийное управление
- •4. Структура приложения
- •16. Окно Win32: назначение, виды, свойства. Оконные классы.
- •17. Создание и управление окнами.
- •18. Событийное управление в Win32. Сообщения и очереди сообщений Windows (Windowsmessages): назначение, структура, отсылка, доставка, обработка Сообщения и очереди сообщений.
- •19. Цикл обработки сообщений. Оконная процедура: назначение, выполнение, способы активизации и завершения.
- •20. Многозадачность, многозадачные операционные системы, особенности выполнения приложений в многозадачной среде. Модель многозадачности Win 32
- •21. Состояния процессов (многозадачная среда). Состояния процессов (потоков)
- •22. Многозадачность в win32. Планирование и выполнения программ в win32
- •23. Процессы win32. Атрибуты и состояния процессов. Порождение процессов и управление ими. Основы управления процессами Win32
- •24. Потоки и многопоточные приложения. Порождение потоков, состояние потоков, управление ими. Основы управления потоками Win32
- •25. Нити – альтернативное управление выполнением программы Управление нитями
- •26. Распределение времени выполнения программ в многозадачной системе. Приоритеты. Распределение времени между потоками (управление приоритетами)
- •27. Приоритеты процессов и потоков win32. Управление приоритетами.
- •28. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
- •29. Реализация взаимного исключения. Механизм criticalsection.
- •30. Синхронизация при управлении процессами и потоками
- •31. Функция ожидания
- •32. Использование каналов и почтовых ящиков для обмена данными
- •33. Использование файловой системы для обмена данными
- •X.2.6. Использование сообщения wm_copydata
- •34. Графическая подсистема win32 – общая характеристика, основные принципы.
- •35. Основные объекты win32 gdi. Средства векторной и растровой графики
- •Растровая графика
- •36. Подсистема памяти. Основные задачи, функции, требования
- •37. Виртуальное адресное пространство, управление памятью.
- •38. Динамическое распределение памяти программами (heap). HeapApiWin32.
- •Функции работы с кучами (heap-область)
- •39. Подсистема памяти win32. Регионы(области) памяти. Группы функций api подсистемы памяти. Адресное пространство процесса.
- •40. Управление на уровне менеджера вирнуальной памяти. (vmm)
- •41. Отображение файлов в память Проецирование файлов в память
- •42. Системный реестр windows: назначение, организация, доступ
28. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
Важнейшими задачами при разработке многозадачных и многопоточных систем, а также организации их функционирования являются:
– общее управление задачами и потоками;
– обмен данными между ними;
– обеспечение их бесконфликтного согласованного взаимодействия.
Возникающие сложности вытекают из таких отличий многозадачных систем, в частности, Win 32, как:
– асинхронное выполнение отдельных задач (процессов) и потоков, причем механизм управления им скрыт, как правило, от прикладной программы;
– разделенные и изолированные адресные пространства отдельных задач (процессов), что исключает простой совместный доступ к элементам данных.
Примечание. Сказанное относится к большинству систем с истинной (вытесняющей) многозадачностью и, вообще говоря, может не быть верным для других.
Для того, чтобы система сохраняла управляемость, контроль за поведением задач и их взаимодействие осуществляется ее ядром, точнее, переключение задач выполняет планировщик, а за синхронизацию и обмен отвечают соответствующие модули межпроцессных интерфейсов. Прикладные программы могут лишь обращаться к системе с запросом того или иного управляющего действия. Напомним также, что в Win 32 "единицей" владения ресурсами является процесс, а единицей распределения процессорного времени – поток; упоминавшиеся выше нити (см. тему процессов и потоков) не вносят в данном случае существенной новизны.
Важнейшими проблемами при взаимодействии задач (процессов) и потоков в многозадачной системе асинхронность их выполнения и возможность одновременного доступа к объектам (ресурсам) при, в то же время, изоляции адресных пространств и, соответственно, множеств собственных объектов задач.
Примечание. Под объектом в данном случае имеется в виду любое образование, над которым программа ("субъект") выполняет какие-либо действия: элементы данных, структуры, файлы и т.д. К понятию объекта как концепции в объектном и объектно-ориентированном программировании это отношения не имеет.
Т.о., могут быть выделены следующие "проблемные" ситуации:
– один и тот же объект должен использоваться несколькими программами, для чего необходим доступ к нему со стороны всех их;
– один и тот же объект используется несколькими программами, но требуется устранить возможные "накладки" и некорректности одновременного (и заранее не предсказуемого) доступа.
В первом случае приходится говорить об обмене данными (объектами), во втором – об организации совместного использования этих данных. Более строго, выделяются следующие 3 основных задачи.
1. Межпроцессный обмен – передача информации (объектов данных) между процессами.
2. Задача синхронизации – определение моментов активизации отдельных задач, имея в виду обеспечение эффективного по ряду критериев функционирования как отдельных задач, так и системы в целом.
3. Задача исключения – предотвращение одновременного и, как следствие, некорректного использования ресурсов, для которых такое использование недопустимо.
Последние две задачи весьма близки. В обоих случаях необходимо воздействовать на момент активизации того или иного участка программы, различие состоит лишь в цели воздействия: управление нормальной работой либо предотвращение конфликтов. Применяемые для этого механизмы также достаточно близки между собой. Поэтому в дальнейшем эти задачи рассматриваются совместно как задача синхронизации потоков. Первая задача существенно отличается от них, хотя отдельные предоставляемые системой механизмы универсальны, т.е. могут решать все три задачи в едином комплексе.
Следует учесть, что почти все средства взаимодействия программ опираются на использование глобальных системных объектов, как специализированных, так и (реже) общего назначения; исключения из данного правила крайне редки и будут отмечены особо.
Ниже рассматриваются в основном механизмы взаимодействия, предлагаемые Win 32 API.