После недельной реанимации модных комиксов по теории ос, являю Миру плоды беспечного отступнечества от коллизий традиционных заповедей осестроения. Краткое отступление. ***Механизмы синхронизации разделённого доступа*** Семафоры, Мутексы, Мониторы, Сообщения, Перименные состояния и т.д. Принцип: Единовременно в критической секции может находиться только один поток. Решают проблемы: Состояние гонок, "Проблема читателей и писателей". Создают проблемы: Взаимная блокировка, Инверсия приоритетов.
А вот, что предлогаю добавить в джентельменский набор юного осестроителя: ***Синхронизация фазы доступа*** Принцип: Фаза входа и выхода из критической секции протекает в пределах предоставленного кванта времени. (Т.к. с точки зрения потока квантования "не существует", то даже если время находения в к/с меньше предоставленного кванта, поток "не знает" о времени истечения кванта, и поэтому не может синхронизировать фазу нахождения в к/с с рамками предоставленного кванта. Но он может оповестить об этом диспетчер, который, в случае прерывания предоставит потоку дополнительный смежный! квант. Таким образом время для потока становится не непрерывным, а гранулированным (или дискретным). Если поток не успевает выйти из к/с по истечению дополнительного кванта, то работа продолжается по традиционным принципам разделения времени (Привет Чижу:), а поток помечается как "Поток с непредсказуемым временем нахождения в К/С!", что может служить напутствием программисту на выпрямление рук. Размер дополнительного кванта выбирается при конфигурации системы и определяется исходя из средних значений скорости IPC и др.) Решает проблемы: Состояние гонок, "Проблема обедающих философов" и проблемы содаваемые "Механизмами синхронизации разделённого доступа". Повышает производительность системы за счёт исключения простоев в ожидании занятых объектов. Создаёт проблемы: Противоречит принципам параллелизма, ???, ???.
***Синхронизация скорости потоков*** Проблема: Если группа потоков разделяет один объект, то по причине того, что скорости исполнения потоков различны (Разная периодичность вхождения в к/с), то "быстрые" потоки будут находиться бОльшую часть времени в сосоянии блокировки. А скорость группы будет равна скорости самого медленного потока. Принцип: Быстрым потокам необходимо уменьшать квант времени (на разность собственной и средней групповой скорости), а медленым соответственно, увеличивать. Средяя скорость группы становится равна средней общей скорости потоков. Пропадает необходимость в изменении приоритетов. Решает проблемы: "Проблема производителя и потребителя", повышает производительность системы за счёт выравнивания скоростей. Создаёт проблемы: Противоречит принципам параллелизма, ???, ???.
Жду отзывов.
Последний раз редактировалось Mr.McD. 04 июн 2010, 00:51, всего редактировалось 1 раз.
|