Зачем люди интервью берут у будущих сотрудников |
[Oct. 9th, 2009|06:14 pm] |
Вот, скажем, зачем работодателю это нужно, понятно. А зачем оно тому товарищу, что будет задавать кучу "технических" задачек?
Это же головная боль какая, понять как и что человек думает, не ошибиться при этом. Оказывается, всё просто, интервью берут чтобы поглумиться над жалкой тварью, ищущей работу. В управленческой иерархии своей конторы ты в самом низу, а тут есть кто-то ниже, такой шанс нельзя упустить.
Меня в своё время убило заявление интервьювера, что все проблемы синхронизации, что выползают на SMP, можно воспроизвести и на одном процессоре.
Комменты сильно смущают. http://ivan-ghandhi.livejournal.com/1113817.html . |
|
|
Comments: |
From: | joppux |
Date: | October 12th, 2009 - 03:31 am |
---|
| | | (Link) |
|
> Меня в своё время убило заявление интервьювера, что > все проблемы синхронизации, что выползают на SMP, > можно воспроизвести и на одном процессоре.
А какие нельзя?
Утверждение равносильно тому, что все данные в память на всех комбинациях процессор/чипсет записываются в том же порядке, в котором их производит логика программы. В то же время, переключение ниток на одном процессоре добавляет ещё одну точку синхронизации раз, представить себе однопроцессорную систему у которой содержимое кэша физической памяти зависит от выполняемой нитки довольно сложно - два.
Если нужны конкретные примеры, я постараюсь сделать, но не обещаю "прямо щас". Программа будет содержать инструкции, которые необходимы на SMP, но нафиг не нужны на одном процессоре.
From: | joppux |
Date: | October 13th, 2009 - 04:51 am |
---|
| | | (Link) |
|
> Утверждение равносильно тому, что все данные > в память на всех комбинациях процессор/чипсет > записываются в том же порядке, в котором их > производит логика программы.
Что-то непонятно. Как в SMP, так и на одном процессоре порядок труднопредсказуем, какая принципиальная разница?
Синхронизация - да, но она будет "плавающая".
Принципиальная разница в том, что на одном процессоре аппаратура обеспечит видимость "правильности" порядка выполнения команд при переключении нитки, от "команда либо закончилась, либо не начиналась" (строковые как контр-пример не приводить, пожалуйста) и до очерёдности выполнения. Для повышения производительности многопроцессорных систем, требования к очерёдности выполнения ослаблены. что записано в памяти - субьективный взгляд каждого процессора, 38 минутаЕсли не ошибаюсь, это тот тип, что хот-спот для Сана написал. Доставать с полки настоящую SMP и ставить эксперимент мне очень очень лень. А на столе только однокристальные стоят, на них может и не выйти продемонстрировать.
From: | joppux |
Date: | January 31st, 2010 - 03:04 am |
---|
| | | (Link) |
|
Может с точки зрения писателя ядра ОС разница и есть (когда можно запрещать прерывания и т.п.), но уже с точки зрения сколько-нибудь высокоуровневой из-за оптимизаций в компиляторе и процессоре предсказать точный порядок инструкций практически невозможно. С точки зрения одного потока порядок конечно "как бы" правильный, но другой поток может видеть изменения совершенно в другом порядке даже на одном процессоре. Т.е. на уровне инструкций процессора разница есть, но на уровне любого языка выше ассемблера (даже Си, думаю, достаточно высокоуровневый) уже практически нет.
Зря Вы так думаете. Стандарты Си и Цпп довольно точно предписывают, когда сайд-эффекты должны быть произойти.
Сдвиг меня порадовал, уже согласны, что на ассемблере это можно написать. Осталось немного.
From: | joppux |
Date: | January 31st, 2010 - 06:24 am |
---|
| | | (Link) |
|
По-моему в стандартах C/C++ по поводу потоков и синхронизации практически ничего нет (вообще кроме как в Java где-нибудь еще стандартизована модель памяти?). Теоретически можно по всем стандартам написать такой специальный компилятор+рантайм Си, который будет эмулировать на одном процессоре эффекты, которые на "стандартном" компиляторе получаются только на SMP: например кэшировать запись в память в локальной памяти потока. | |