русский
Germany.ruForen → Архив Досок→ Computer & Co

Операционка - однопоточность и многопоточность

640  1 2 3 4 alle
Murr коренной житель17.11.09 05:50
Murr
NEW 17.11.09 05:50 
in Antwort MrSanders 16.11.09 15:21
Скорее все же быстрее.
-----
Все же помимо выполнения самой работы будет присутствовать управление
потоками и переключение между ними. Пусть в одну команду, но будет медленнее...
То, что у себя ты описал ниже, легко реализуется не потоками, а аппаратными
прерываниями - тогда действительно все быстро и без потерь... но это не софт,
а железо...
#41 
gendy Dinosaur17.11.09 08:46
gendy
NEW 17.11.09 08:46 
in Antwort Murr 17.11.09 05:34
В ответ на:
Вообще-то, многопоточность вводится тогда, когда надо управлять
процессами обработки. Ожидание внешних сигналов и наличие многих
процессоров - частности. Ибо в больших майнфреймах по одному
процессору и как правило от 4-х до 16-ти задач/процессов/потоков
одновременно...

очень сомневаюсь, что хоть на одной машине процессор сможет обрабатывать все потоки одновремённо.
ну разве если там бегает только один процесс и тот специально оптимирован под систему
В ответ на:
На том же майнфрейме переключение контекста задачи выполняется
одной командой... так что переключение практически не чувствуется.

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

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#42 
megabyte постоялец17.11.09 11:31
megabyte
NEW 17.11.09 11:31 
in Antwort gendy 17.11.09 08:46
В ответ на:
компьютер тоже включается одной кнопкой. а при смене потока процессор должен сменить содержимое кэша, отправить старый кэш и регистры в рам и
забрать оттуда новые, а работа с рам больше всего тормозит процессор
Про какой процессор идет речь? в x86 кеш не трогается http://en.wikipedia.org/wiki/Task_State_Segment
#43 
gendy Dinosaur17.11.09 12:14
gendy
NEW 17.11.09 12:14 
in Antwort megabyte 17.11.09 11:31
первое же предложение
The TSS may reside anywhere in memory.
кеш невозможно оставить. другому потоку нужны свои данные в кеше.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#44 
megabyte постоялец17.11.09 12:21
megabyte
NEW 17.11.09 12:21 
in Antwort gendy 17.11.09 12:14
А если они уже в кеше? т.е., примитивно, два потока и их данные полностью умещаются в кеше.
#45 
gendy Dinosaur17.11.09 12:25
gendy
NEW 17.11.09 12:25 
in Antwort megabyte 17.11.09 12:21
два уместятся, правда и займёт неактивный поток полкеша , чем наполовину снизит его эффективность
а если потоков более 1000 как сейчас на моём компьютере?

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#46 
Kabal коренной житель17.11.09 12:32
Kabal
NEW 17.11.09 12:32 
in Antwort gendy 17.11.09 12:25
Зачем отгружать кеш, если там могут сидеть данные, которые уже не понадобятся никогда и никому? I like to move it, move it?.. Если поток захочет данные и словит промах в кеше, данные подгрузятся. Дешевле обойдется.
- Живем один раз! - Нет, мы умираем один раз. А живем мы каждый день.
#47 
megabyte постоялец17.11.09 12:35
megabyte
NEW 17.11.09 12:35 
in Antwort gendy 17.11.09 12:25, Zuletzt geändert 17.11.09 12:37 (megabyte)
В ответ на:
при смене потока процессор должен сменить содержимое кэша, отправить старый кэш

В ответ на:
два уместятся, правда и займёт неактивный поток полкеша , чем наполовину снизит его эффективность

Т.е. следуя логике, процессор не должен, а может сменить содержимое кеша.
В ответ на:
два уместятся, правда и займёт неактивный поток полкеша , чем наполовину снизит его эффективность
а если потоков более 1000 как сейчас на моём компьютере?
Для случая с двумя потоками, почему отдельный поток должен занять именно половину кеша? Например один поток требует 100 кб, а второй поток 300 кб.
#48 
megabyte постоялец17.11.09 12:45
megabyte
NEW 17.11.09 12:45 
in Antwort gendy 17.11.09 12:25
К чему я веду. Что кеш не связан с переключениекм задач в процессоре напрямую, т.е. при переключении задачи, процессор не меняет принудительно кеш для новой задачи. Читая вашу фразу
В ответ на:
при смене потока процессор должен сменить содержимое кэша, отправить старый кэш
У читателя складывается впечатление, что кеш обязательно сменится. Кстати кеш в рам никогда не оптравляется, так и до deadlock'а докатититься можно. :-)
#49 
NightWatch коренной житель17.11.09 13:17
NightWatch
NEW 17.11.09 13:17 
in Antwort megabyte 17.11.09 12:45
В ответ на:
Кстати кеш в рам никогда не оптравляется
А куда же он отправляется, если в элементе данных кэша были сделаны изменения (dirty)?
#50 
megabyte постоялец17.11.09 13:38
megabyte
NEW 17.11.09 13:38 
in Antwort NightWatch 17.11.09 13:17
Согласен. Этот аспект я упустил из виду.
#51 
JESSIKA2004 местный житель17.11.09 18:49
JESSIKA2004
NEW 17.11.09 18:49 
in Antwort megabyte 17.11.09 13:38, Zuletzt geändert 17.11.09 18:50 (JESSIKA2004)
Я сегодня подошла к преподавателю с наивным вопросом - пусть хоть намекнет на вариант, когда многопоточность не увеличивает производительность программы - был приведен следующий пример: вы вводите данные, в фоновом режиме идут расчеты, а Вам через каждую минуту выводится окно на экран с промежуточными вычислениями, значения которых Вам не нужны, а нужен лишь конечный результат. Явно от такой многопоточности производительность не повысится.
#52 
megabyte постоялец17.11.09 19:43
megabyte
NEW 17.11.09 19:43 
in Antwort JESSIKA2004 17.11.09 18:49, Zuletzt geändert 17.11.09 19:45 (megabyte)
Формально он прав. Но в данном примере цель второго потока не в увеличении производительности, а ИМХО в обеспечении "незамерзаемости" интерфейса пользователя и 3-й, 4-й и т.д. потоки с расчетами вполне себе могут поднять производительность. А Вы и все участники дисскуссии ломают голову какую бы труднораспараллеливаемую задачу придумать. :-)
Тогда в дополнение еще пример.
1ый поток - GUI
2ой поток - менеджер рабочих потоков
3..N - рабочие потоки (может зависить от кол-ва ЦПУ)
2-ой поток не повышает производительность, он всего лишь управляет рабочими потоками, так чаще всего удобнее.
Вопрос препа из разряда задачки для дошкольников
1 - 0
2 - 0
6 - 1
8 - 2
9 - 1
11 - ?
#53 
NightWatch коренной житель17.11.09 20:04
NightWatch
NEW 17.11.09 20:04 
in Antwort megabyte 17.11.09 19:43
0
Я был в детском садике.
#54 
megabyte постоялец17.11.09 20:14
megabyte
NEW 17.11.09 20:14 
in Antwort NightWatch 17.11.09 20:04
Я был в другом... :-)
#55 
MrSanders местный житель17.11.09 21:46
NEW 17.11.09 21:46 
in Antwort JESSIKA2004 17.11.09 18:49
Я чуствовал, я чесслово чуствовал что препод окажется редкостным ммм... балбесом :)
Единственный неадекватный проф у нас тоже операционные системы читал...
Как уже выше написали прав он только формально. Пример просто ммм.. глупый. Таких примеров можно придумать хоть пиццот мильярдов. Рецепт простой: один поток делает что-то нужное а еще стопиццот потоков рисуют колокольчики, звенять ими и показывают вам картинки котят. От такой многопоточности производительность нашей задачи не повысится, да.
#56 
Murr коренной житель18.11.09 23:31
Murr
NEW 18.11.09 23:31 
in Antwort gendy 17.11.09 08:46
при смене потока процессор должен
-----
Перед описанием того чего процессор "должен" желательно ознакомится с его функциональностью и архитектурой системы... и совсем не плохо - пописать что-нибудь соответствующее на асме...
#57 
Murr коренной житель18.11.09 23:34
Murr
NEW 18.11.09 23:34 
in Antwort megabyte 17.11.09 12:21
А если они уже в кеше?
-----
Врядли. Зависит, разумеется, от проца, но придумать, как управляться с двумя и более потоками в кэше - проблемно. Особенно, если нет аппаратной части для этого...
#58 
Murr коренной житель19.11.09 00:05
Murr
NEW 19.11.09 00:05 
in Antwort JESSIKA2004 17.11.09 18:49
Явно от такой многопоточности производительность не повысится.
-----
Просто у вас препод, который не имеет достаточного понимания предмета.
Дело в том, что он сравнивает разные по фукциональности задачи:
- расчет _и вывод на экран_
- расчет _только_
такое сравнение просто не корректно. Корректным было бы сравнивать производительность двух програм - решающих одну и ту же задачу (имеющих одну и ту же, в том числе и бесполезную, функциональность), но реализованных в форме одного и нескольких потоков.
Хохмы.
Эээ... Я тут подумал - в принципе и первый поток не нужен - нужен только результат расчета... так что его можно исключить для повышения производительности...
Или... хммм... в Выни есть процесс/поток, который гарантировно не делает _ничего_ полезного - можно предложить преподу выключить ненужный поцесс для увеличения производительности системы... Будет интересен сам процесс и достигнутый результат...
#59 
Murr коренной житель19.11.09 00:12
Murr
NEW 19.11.09 00:12 
in Antwort megabyte 17.11.09 19:43
Формально он прав.
-----
Он принципиально не прав. См. выше.
#60 
1 2 3 4 alle