Комплексный ответ

eyeofhell
Всего баллов:
45
Зарегистрированный пользователь
23.07.2009 07:22
Рейтинг
 
#12 Ответ на #11
Data decomposition & Functional decomposition

Однажды молодой прораб пришел к гуру и спросил его:
— Скажи, о многомудрый учитель, чем декомпозиция данных отличается от функциональной декомпозиции?
— Иного ли у тебя рабочих? — осведомился учитель.
— Десять!
— Если тебе надо покрасить в доме стены, то ты можешь просто сказать об этом своим рабочим, и тогда они будут красить неделю — один красит, остальные перекуривают. Но ты знаешь, что рабочие могут красить, не мешая друг другу — поэтому ты можешь указать каждому его стену и он будет красить ее. Тогда к вечеру они все покрасят. Это и есть декомпозиция данных — используй ее, если работа одинаковая и твои рабочие могут выполнять ее, не мешая друг другу, — ответил учитель.
— @##$@#, сказал молодой прораб, посмотрев на усердно долбящего стену Джамшута и девять его коллег, с интересом наблюдающих за процессом. А что же тогда функциональная декомпозиция?
— А это если работа разная. Например, нужно тебе сделать евроремонт. Пусть же один рабочий кладет пол, другой — красит стены, третий — белит потолок, четвертый..., — вообщем ты понял.

SIMD & MIMD

Однажды молодой прораб пришел к гуру и спросил его:
— О многомудрый учитель, преисполненный многочисленных достоинств и достигший просветления, скажи мне, недостойному, что означают страшные заклинания SIMD и MIMD?
— Все просто, — спокойно ответил учитель. Когда ты кричишь всем своим рабочим "копать!!!" — они идут и копают. Single Instruction — это что ты им сказал делать. Multiple Data Processors — это твои рабочие, они делают. А вот когда ты говоришь первому — «Джамшут — копай», второму — «Равшид — пили» ну и так далее — то это уже Multiple Instructions, Multiple Data Processors. Оно конечно лучше, — на секунду учитель задумался о чем-то своем, а затем грустно вздохнул, — но иногда рабочих так много, что быстрее их всей толпой посылать, чем говорить каждому что именно ему делать.

Multitasking & Multithreading

Однажды, когда многомудрый гуру спокойно пил чай и медитировал над парадигмой евроремонта, к нему прибежал запыхавшийся прораб.
— Не успеваю! — воскликнул он, с мольбой глядя на учителя.
— Что, опять два десятка рабочих набрал, а работают одновременно только двое? — с улыбкой спросил учитель.
— Опять.
— А ты помнишь, чем отличается многозадачность от многопоточности?, — с еще более широкой улыбкой поинтересовался учитель.
— Ну… э… они все одновременно делать должны. Но ведь не делают!
— Не используй волшебное слово «все», юный подаван, — посерьезнел учитель. — Оккама на тебя нет. Есть задачи — их надо выполнять. Например, сейчас тебе надо выложить кафелем пол торгового центра и покрасить его стены, так?
— Так..., — прораб даже потерял дар речи от проницательности учителя. О нервно сжимаемом в руках куске кафеля он уже давно забыл и свято верил в то, что учитель обладает не только большой мудростью, но и даром телепатии.
— Это твои задач. Их две. И небось, у тебя как обычно Джамшут кладет плитку, Равшид красит стены и еще восемнадцать человек перекуривают?
— Да, — грустно согласился ученик.
— Это потому, что многозадачность — это одновременное выполнение задач. Но если ты хочешь чтобы задачи выполнялись не только одновременно но и быстро — дели каждую из них на части и тоже выполняй эти части одновременно. Это и будет многопоточность — пусть девять человек одновременно с Джамшутом кладут плитку, а еще девять одновременно с Равшидом красят стены. И будет тебе, — учитель ненадолго задумался, — и многозадачность, и многопоточность, и race conditions.

Busy waiting thread & Sleeping thread

Однажды в студеную зимнюю пору молодой прораб пришел к Гуру, и начал жаловаться на рабочих, которые все время спят и ничего не делают.
— А как ты им задания даешь?, — поинтересовался Гуру, выслушав ученика.
— Ну как обычно… Бужу, матерю, выдаю…
— Это только один из способов — «sleeping рабочий», то есть thread. Они сами ждут пока ты подойдешь к ним и скажешь что делать. Есть и второй способ — «Busy waiting». Скажи им, чтобы они сами подходили к тебе, когда выполнят работу, чтобы узнать что им делать дальше. И даже если тебе сейчас Равшиду поручить нечего – пусть через каждые пять минут подходит. Тогда тебе не придется бегать по стройке..., — учитель ненадолго задумался и уточнил, — зато по ней будет бегать много рабочих.

Thread pool

Однажды вечером молодой прораб пришел в гости к Гуру, и, выпив с ним чая, пожаловался, что никак не может заранее выбрать сколько ему нужно рабочих:
— Представляешь, приезжаю на объект, вижу что тут на одного работы, звоню, приезжает Джамшут. Работает. Потом на следующий день вижу — уже на двоих работы. Звоню Равшиду — он тоже приезжает, двое работают. Потом трое, четверо. А потом только на одного работы — я остальных отпускаю. А через час снова оказывается, что пять человек надо — опять звоню, они опять едут… Много времени на дорогу тратят.
— Известная проблема, — отхлебнул ароматного чая учитель, — тебе нужно подумать над пулом потоков.
— А что это?
— Сразу привези несколько рабочих и не отпускай их со стройки, пока она, родимая, не закончится. Для этого даже времянки придумали. И тогда ты всегда сможешь поручить задачу свободным рабочим из времянки, а не звонить и ждать пока они приедут.
— Да, но ведь это накладные расходы — их кормить надо, времянку ставить, — засомневался ученик.
— А вот когда пул потоков использовать эффективно а когда нет — это тебе самому надо решить, — улыбнулся мастер и протянул ученику калькулятор и бланк сметы.

Context Switching

Однажды молодой прораб, беседуя за чашкой чая с многомудрым гуру, спросил:
— Скажи мне, о учитель — что такое переключение контекста и что я должен об этом знать?
— Понимаешь, — глубокомысленно изрек Гуру, отхлебывая чай и задумчиво глядя в окно, — иногда у тебя рабочих мало, а задач много. Вот у тебя Джамшут стену кладет — мастерок там, цемент, все дела — а тут кирпичи подъехали. Он мастерок с цементом оставляет — и бегом за тачкой, разгружать. Разгрузил — опять за мастерок и цемент. Для каждой задачи — свое место, свои инструменты. Вот их то и называют контекстом. А переключается он, когда ты бедного рабочего с одной задачи на другую гоняешь, — укоризненно изрек учитель.


Статистика форума

246 пользователей 277 тем и 2036 сообщений.
За последние 24 часа появилось 0 новых тем 0 новых сообщений и 0 новых пользователей

Самая популярная тема за последние 3 дня Найди ошибки. Пример 2. Больше всего ответов отправлено на сообщение Найди ошибки. Пример 2. Наибольшее количество просмотров у сообщения Здравствуйте,П

Приветствуем нового пользователя kopernikus