OSDev

для всех
Текущее время: 17 май 2024, 04:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18  След.
Автор Сообщение
СообщениеДобавлено: 07 фев 2012, 08:32 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
В системах с вытеснением проблему взаимных блокирок можно решить отказавшись от мутексов в пользу обмена сообщениями. Это самый грамотный подход. Он реализован в концепции микроядра. Различают синхронный обмен (рандеву), когда и приёмник и отправитель должны быть готовы к обмену, и асинхронный когда нет необходимости в рандеву, т.к. сообщения буферизируются. Асинхронный обмен был в микроядре первого поколения - Mach. О проблемах этого микроядра можно почитать отдельно. Микроядра второго поколения используют только синхронный обмен: Minix, L4, QNX/Neutrino... Но синхронный обмен требует частого переключения контекстов. В кооперативной системе сообщения нужно посылать реже (только для обмена данными, синхронизация для работы в кс не нужна), а переключение задач происходит на порядок быстрее. У кого какие мысли?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2012, 12:03 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
И вообще: почему у меня начинает сладываться впечатление, что Химик единственный человек на этом форуме, который адекватно понимает, о чём речь?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2012, 13:57 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
Признаю что не понимаю как конкретно в реальных ос работает механизм многозадачности. А в теории понятно - но в теории специально упрощают.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2012, 14:04 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Если достаточно хорошо знакомы с ассемблером и вообще с архитектурой используемого Вами процессора (поскольку речь о ПК, то это интеловская IA-32), тогда не должно быть проблем с пониманием реализации многозадачности. Если же Вы с ассемблером не "на ты", то многозадачность и всё такое прочее так и будут оставаться туманными.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2012, 16:43 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
SII, на правах администратора давно бы создал раздел "Для новичков" или "Базовые понятия". Только так, чтобы только ты мог изменения вносить в статьи. Мог бы привести список популярной литературы, ссылки полезные. Базовые термины теории ОС и т.д. А то либо люди не понимают о чём говорят, либо говорят об одном и том же, но на разных языках..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2012, 22:22 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Mr.McD. писал(а):
Химик, так ведь именно использование нескольких критических секций, в отсутствие взаимных блокировок и делает честь кооперативке.

Так ведь :-) несколько критических секций делается для достижения настоящей параллельности. А то что ты предлагаешь в качестве синхронизации, не даёт параллельности, потому что является эквивалентом единой критической секции. Именно это я имел ввиду. А у тебя противопоставляется настоящая параллельность с псевдо-параллельностью. Вот. Псевдо-параллельность она конечно не заглючит, но и скорости не даст. А сейчас весь мир интересует именно алгоритмы распределённых вычислений.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 фев 2012, 23:19 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
Т.е. ты имеешь ввиду случаи с единой для нескольких камней памятью? Согласен, тут не прокатит. Только обмен сообщениями, думаю, спасёт. Просто мне сложно представить "критическую секцию" между машинами без общей памяти. Например, по сети соединённых, или ещё как нибудь. Тут по сути тот же обмен сообщениями, разницы особой нет. А в системах с общей памятью вообще "жесть" алгоритмы: всякие транзакции, уровни консистентности и т.п. Специально поищу инфу на эту тему. Интересно стало, как там с "критическими секциями"?..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 фев 2012, 00:09 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Mr.McD. писал(а):
В многопроцессорных вычислениях не используют мутексы. Здесь популярны модели, на основе обмена сообщениями:...

"О, сколько нам открытий чудных!.."
Многопроцессорные системы с архитектурой shared memory (к коим относится вся линейка PC/AT) НЕВОЗМОЖНО организовать без мьютексов. Обмен сообщениями в многопроцессорной системе - это только логическая надстройка над мьютексами, облегчающая программирование.
Что касается критических секций,... чувствую я, ты с ними не работал и рассуждаешь сугубо абстрактно в духе "а вот если взять в руки пассатижи, то можно защемить себе палец". У меня сегодня благостное настроение, поэтому выкрою пару минут, чтобы разъяснить тебе. Конечно любой инструмент можно извратить, использовать не по назначению или не правильно. Но тогда нельзя говорить, что инструмент плохой.
Критическими секциями пользуются так. Вместо того, чтобы блокировать доступ порознь к горстке разных данных, весь код, обрабатывающий эти данные, инкапсулируют в одну функцию. В функции перед началом работы с данными открывают КС, после того, как обработают все данные, как единое целое, закрывают КС и возвращают управление. Если два потока, в т.ч. и на физически разных процессорах/ядрах одновременно вызовут функцию, то сначала отработает одна, потом в критическую секцию войдёт другая. Пересечение [разных] КС, хотя теоретически возможно, на практике не рекомендуется. Точно также, как есть оператор goto, но если пользуешься им, то сам отвечаешь за все последствия и не кричишь, что ОС/язык/процессор неправильные.
При описанном подходе критические секции гарантированно избавляют от взаимной блокировки в т.ч. и в многопроцессорных системах с общей памятью.

Mr.McD. писал(а):
В кооперативной системе ... переключение задач происходит на порядок быстрее.

Если сто раз повторить "на порядок быстрей", то наверно, все безоговорочно поверят )))

Mr.McD. писал(а):
SII, на правах администратора давно бы создал раздел "Для новичков" или "Базовые понятия". Только так, чтобы только ты мог изменения вносить в статьи.

На этом сайте уже есть wiki. Есть время и силы - вноси изменения. :)
(SII, присмотри, чтобы он там лишнего не внёс :)

Mr.McD. писал(а):
Мог бы привести список популярной литературы, ссылки полезные.

Ссылок полно в соответствующей теме форума.

Mr.McD. писал(а):
Базовые термины теории ОС и т.д. А то либо люди не понимают о чём говорят, либо говорят об одном и том же, но на разных языках..

Базовые термины очень хорошо разъяснены в Википедии.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 фев 2012, 01:00 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Mr.McD. писал(а):
Интересно стало, как там с "критическими секциями"?..

Всё нормально. Достаточно применения префикса блокировки (lock), чтобы выполнять атомарные действия с переменными в памяти.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 фев 2012, 01:09 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
Ёда, и чем отличается "инкапсулированный в одну функцию код работы с кс" от мутекса, связанного с кс? Те же яйца, только в профиль.. И те же взаимные блокировки (только с понтами). Зайди в рукипедию и почитай о взаимных блокировках. О том, что сообщения - это "обёртки для мутексов" расскажи Дейкстре:))). Это полноценный и самостоятельный механизм обмена данными и синхронизации. Два трендовых:) подхода в параллельных системах: различные диалекты CSP, и модель акторов (советую глянуть). И почему-то везде обмен сообщениями?! Наверное, эти ребята чего-то не понимают в параллельных системах... А попробуй решить задачу "потребителя и производителя", связанных через один канал (по сути - кс) с помощью мутекса.. Или задачу "читателей и писателей"? Или задачу "обедающих философов"? Это всё самые часто встречающиеся на практике задачи "конкуренции за ресурс". Если пофигу, кого блокировать - подойдёт мутекс. А если система должна работать слаженно - только сообщения! И не нужно быть специалистом по лунному камнеметанию, чтобы сказать: камень на Луне пролетит дальше, чем на Земле. Так и не нужно быть специалистом в области кооперативных систем, чтобы сказать, что они работают быстрее и правильнее. - это очевидный факт! Хотя, может быть и ни для всех:)


Последний раз редактировалось Mr.McD. 08 фев 2012, 03:04, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 179 ]  На страницу Пред.  1 ... 12, 13, 14, 15, 16, 17, 18  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB