blue_slonopotam - Зачем люди интервью берут у будущих сотрудников [entries|archive|friends|userinfo]
blue_slonopotam

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Зачем люди интервью берут у будущих сотрудников [Oct. 9th, 2009|06:14 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Вот, скажем, зачем работодателю это нужно, понятно. А зачем оно тому товарищу, что будет задавать кучу "технических" задачек?

Это же головная боль какая, понять как и что человек думает, не ошибиться при этом.
Оказывается, всё просто, интервью берут чтобы поглумиться над жалкой тварью, ищущей работу. В управленческой иерархии своей конторы ты в самом низу, а тут есть кто-то ниже, такой шанс нельзя упустить.

Меня в своё время убило заявление интервьювера, что все проблемы синхронизации, что выползают на SMP, можно воспроизвести и на одном процессоре.

Комменты сильно смущают.
http://ivan-ghandhi.livejournal.com/1113817.html
.
LinkLeave a comment

Comments:
From:[info]joppux
Date:October 12th, 2009 - 03:31 am
(Link)
> Меня в своё время убило заявление интервьювера, что
> все проблемы синхронизации, что выползают на SMP,
> можно воспроизвести и на одном процессоре.

А какие нельзя?
From:[info]blue_slonopotam
Date:October 12th, 2009 - 11:49 pm
(Link)
Утверждение равносильно тому, что все данные в память на всех комбинациях процессор/чипсет записываются в том же порядке, в котором их производит логика программы.
В то же время, переключение ниток на одном процессоре добавляет ещё одну точку синхронизации раз, представить себе однопроцессорную систему у которой содержимое кэша физической памяти зависит от выполняемой нитки довольно сложно - два.

Если нужны конкретные примеры, я постараюсь сделать, но не обещаю "прямо щас". Программа будет содержать инструкции, которые необходимы на SMP, но нафиг не нужны на одном процессоре.
From:[info]joppux
Date:October 13th, 2009 - 04:51 am
(Link)
> Утверждение равносильно тому, что все данные
> в память на всех комбинациях процессор/чипсет
> записываются в том же порядке, в котором их
> производит логика программы.

Что-то непонятно. Как в SMP, так и на одном процессоре порядок труднопредсказуем, какая принципиальная разница?

Синхронизация - да, но она будет "плавающая".
From:[info]blue_slonopotam
Date:January 18th, 2010 - 02:15 am
(Link)
Принципиальная разница в том, что на одном процессоре аппаратура обеспечит видимость "правильности" порядка выполнения команд при переключении нитки, от "команда либо закончилась, либо не начиналась" (строковые как контр-пример не приводить, пожалуйста) и до очерёдности выполнения.
Для повышения производительности многопроцессорных систем, требования к очерёдности выполнения ослаблены.

что записано в памяти - субьективный взгляд каждого процессора, 38 минута
Если не ошибаюсь, это тот тип, что хот-спот для Сана написал.

Доставать с полки настоящую SMP и ставить эксперимент мне очень очень лень. А на столе только однокристальные стоят, на них может и не выйти продемонстрировать.
From:[info]joppux
Date:January 31st, 2010 - 03:04 am
(Link)
Может с точки зрения писателя ядра ОС разница и есть (когда можно запрещать прерывания и т.п.), но уже с точки зрения сколько-нибудь высокоуровневой из-за оптимизаций в компиляторе и процессоре предсказать точный порядок инструкций практически невозможно.
С точки зрения одного потока порядок конечно "как бы" правильный, но другой поток может видеть изменения совершенно в другом порядке даже на одном процессоре. Т.е. на уровне инструкций процессора разница есть, но на уровне любого языка выше ассемблера (даже Си, думаю, достаточно высокоуровневый) уже практически нет.
From:[info]blue_slonopotam
Date:January 31st, 2010 - 05:14 am
(Link)
Зря Вы так думаете. Стандарты Си и Цпп довольно точно предписывают, когда сайд-эффекты должны быть произойти.

Сдвиг меня порадовал, уже согласны, что на ассемблере это можно написать.
Осталось немного.
From:[info]joppux
Date:January 31st, 2010 - 06:24 am
(Link)
По-моему в стандартах C/C++ по поводу потоков и синхронизации практически ничего нет (вообще кроме как в Java где-нибудь еще стандартизована модель памяти?).
Теоретически можно по всем стандартам написать такой специальный компилятор+рантайм Си, который будет эмулировать на одном процессоре эффекты, которые на "стандартном" компиляторе получаются только на SMP: например кэшировать запись в память в локальной памяти потока.