программирование на колесах или откуда берутся пробки!
Наверняка многие из вас слышали про конкурс компании Intel, в котором нужно объяснить сугубо программистские термины понятными простым людям словами.
Не знаю как простым людям, но автомобилистам, надеюсь это точно будет понятно!
Многие из вас сидя в автобусе задумывались а откуда они берутся эти пробки? Сейчас я вам расскажу.
Во-первых, проблема в том, что не все пользуются общественным транспортом. А кто в этом виноват? Виноваты его создатели, которые плохо рассчитали размер Thread Pool'а. Те, кому не нравится ждать, когда же наконец появится место в автобусе, пользуются личным автотранспортом . А как нам известно, тогда на каждого человека требуется гораздо больше дорожных (читай системных) ресурсов.
Во-вторых, они бывают из-за светофоров. Вот представьте себе едет поток машин через перекресток и тут вдруг бац и загорается желтый. Начинается процесс Context Switching'а. Сначала один поток тормозит, потом другой начинает разгоняться и как только он успеет разогнаться, опять произойдет смена контекста…
Казалось бы из этого можно сделать вывод, что светофоры - зло? Нет, вы просто не сталкивались с регулировщиками! Когда на перекрестке стоят светофоры - это MIMD - для каждого потока свой светофор, а когда на нем стоит регулировщик он один управляет всем перекрестком (SIMD). Надо сказать у него это не всегда хорошо получается!
Бывают еще один тип пробок - пробки из-за декомпозиции данных! Обычно дороги делятся по принципу функциональной декомпозиции (дорога оттуда сюда или дорога отсюда туда). Но бывает, что по какой-то дороге должен проехать определенный тип (необязательно данных) и тогда эта дорога становится временно неприменимой для остальных сущностей.
Кстати, еще бывают дороги, которые поддерживают многопоточность, но не поддерживают многозадачность - они многополосные, но все едут в одну сторону!
А еще бывают пробки из-за тех, кто заснул при выезде из двора и из активно ожидающего освобождения главной дороги (busy-waiting thread) стал пассивно ожидающем того, что его обругают и обсигналят (sleeping thread)
Не знаю как простым людям, но автомобилистам, надеюсь это точно будет понятно!
Многие из вас сидя в автобусе задумывались а откуда они берутся эти пробки? Сейчас я вам расскажу.
Во-первых, проблема в том, что не все пользуются общественным транспортом. А кто в этом виноват? Виноваты его создатели, которые плохо рассчитали размер Thread Pool'а. Те, кому не нравится ждать, когда же наконец появится место в автобусе, пользуются личным автотранспортом . А как нам известно, тогда на каждого человека требуется гораздо больше дорожных (читай системных) ресурсов.
Во-вторых, они бывают из-за светофоров. Вот представьте себе едет поток машин через перекресток и тут вдруг бац и загорается желтый. Начинается процесс Context Switching'а. Сначала один поток тормозит, потом другой начинает разгоняться и как только он успеет разогнаться, опять произойдет смена контекста…
Казалось бы из этого можно сделать вывод, что светофоры - зло? Нет, вы просто не сталкивались с регулировщиками! Когда на перекрестке стоят светофоры - это MIMD - для каждого потока свой светофор, а когда на нем стоит регулировщик он один управляет всем перекрестком (SIMD). Надо сказать у него это не всегда хорошо получается!
Бывают еще один тип пробок - пробки из-за декомпозиции данных! Обычно дороги делятся по принципу функциональной декомпозиции (дорога оттуда сюда или дорога отсюда туда). Но бывает, что по какой-то дороге должен проехать определенный тип (необязательно данных) и тогда эта дорога становится временно неприменимой для остальных сущностей.
Кстати, еще бывают дороги, которые поддерживают многопоточность, но не поддерживают многозадачность - они многополосные, но все едут в одну сторону!
А еще бывают пробки из-за тех, кто заснул при выезде из двора и из активно ожидающего освобождения главной дороги (busy-waiting thread) стал пассивно ожидающем того, что его обругают и обсигналят (sleeping thread)
но думаю не все поймут)
(хотя многие сюда с хабра попали)
Кстати, на физическом уровне требуются также многочисленные fix'ы и анализ bug reports'ов. :)
может жюри конкурса тоже оценит :-[
Сети,«железо» и Fedora — наше все! :))
Скорее это текст, как программистам объяснить, что такое пробки и кто такой регулировщик.
У них там функции сотрудника ГИБДД нет?
только вот, боюсь, половина Автокадабры нифига не понимает в программировании :)
Спасибо, интересно =)
а на форуме интела уже не исправишь =(