Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
ДохтаР Насколько я помню ИМХО , возможно заблуждаюсь Windoze без окон жить не умеют Даже если окон не видно ноги евентов от ОС для процессов ростут из окон . Заблуждаешься, конечно же. Могут винды жить без окон. НО не любят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2013, 20:16 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПод 64-битным линуксом, данное ограничение отсутствует - любая либа может быть загружена в разных процессах по разным адресам и при этом без дубликатов. Под Виндой - не знаю как. Но думаю что как минимум начиная с Vista (где появился ASLR ) - вполне возможно тоже. MasterZivВ виртуальном пространстве разных процессов этот сегмент кода может быть по разным адресам, и тем не менее физически это будет один блок и он будет разделяться. Возможно, я отстал от жизни, но есть один момент, который таки надо прояснить. Что делать с таблицей перемещения? Конечно, абсолютных адресов в скомпилированном коде очень мало. Но они есть. Если загрузка произошла по одним адресам - все окей, т.к. коррекция одинаковая. А если нет? ... PS Хотя... можно разделять только страницы, где есть коррекция, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2013, 20:19 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
jmp_originalЧто делать с таблицей перемещения? Конечно, абсолютных адресов в скомпилированном коде очень мало. Но они есть. Если загрузка произошла по одним адресам - все окей, т.к. коррекция одинаковая. А если нет? Хотя этот вопрос и не следует обсуждать в отрыве от конкретной архитектуры, OS и компилятора, но всё же... Абсолютные адреса могут быть в скомпилированной коде. Но при сборке они все должны быть линкером устранены или положены в таблицу ссылок на перемещаемые объекты. При загрузке загрузчик делает настройку -- вычисляет реальные адреса и по таблице прописывает на них ссылки. Это так было типа в DOS/Win16. В Win32/64 вообще адреса все виртуальные, но и тут можно такое проделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2013, 20:30 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
jmp_originalХотя... можно разделять только страницы, где есть коррекция, да. Так оно именно постранично и происходит в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2013, 20:44 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivjmp_originalЧто делать с таблицей перемещения? Конечно, абсолютных адресов в скомпилированном коде очень мало. Но они есть. Если загрузка произошла по одним адресам - все окей, т.к. коррекция одинаковая. А если нет? Хотя этот вопрос и не следует обсуждать в отрыве от конкретной архитектуры, OS и компилятора, но всё же... Абсолютные адреса могут быть в скомпилированной коде. Но при сборке они все должны быть линкером устранены или положены в таблицу ссылок на перемещаемые объекты. При загрузке загрузчик делает настройку -- вычисляет реальные адреса и по таблице прописывает на них ссылки. Это так было типа в DOS/Win16. В Win32/64 вообще адреса все виртуальные, но и тут можно такое проделать. Хех. Как не повезло приложениям на Delphi (по крайней мере на 7). Я имею в виду строковые константы прямо в тексте программы. Которые, емнип, попадают в исполняемый сегмент напрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2013, 20:46 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
jmp_original Я согласен, что это малость оффтоп в C++, но просто как пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2013, 20:51 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivВообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого. По одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет. Процессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут. Также будет верными и обратные утверждения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 00:16 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
jmp_originalХех. Как не повезло приложениям на Delphi (по крайней мере на 7). Я имею в виду строковые константы прямо в тексте программы. Которые, емнип, попадают в исполняемый сегмент напрямую. Это не только в дельфе. И не понятно, почему не повезло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 12:20 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZivjmp_originalХех. Как не повезло приложениям на Delphi (по крайней мере на 7). Я имею в виду строковые константы прямо в тексте программы. Которые, емнип, попадают в исполняемый сегмент напрямую. Это не только в дельфе. И не понятно, почему не повезло. Каждое место, обращающееся к таким строкам, имеет запись в таблице перемещений. И корректируется при загрузке. Ибо фиксированный адрес в сегменте кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 14:27 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
jmp_originalКаждое место, обращающееся к таким строкам, имеет запись в таблице перемещений. И корректируется при загрузке. Ибо фиксированный адрес в сегменте кода. Не понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 14:33 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Я не понимаю, почему это вообще вас интересует и как это всё связано с С++ и с этим топиком в частности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 16:22 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНе понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных .Только в tiny-модели. Во flat - уже нет, т.к. адресное пространство одно, часть его занята, а сколько именно будет занято при конкретном запуске - при сборке ещё неизвестно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 16:25 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
MasterZiv, я в последний раз. Anatoly MoskovskyНе понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных . Только вот этот самый сегмент данных может быть расположен по разным адресам при загрузке. Как следствие, в команде MOV EAX,_адрес_строки_ необходимо корректировать операнд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 17:12 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovAnatoly MoskovskyНе понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных .Только в tiny-модели. Во flat - уже нет, т.к. адресное пространство одно, часть его занята, а сколько именно будет занято при конкретном запуске - при сборке ещё неизвестно. Да все там известно. При загрузке исполняемого модуля через отображение файла в память (а так оно и происходит) все сегменты модуля сохраняют фиксированное смещение относительно друг друга и поэтому достаточно использовать генерацию PIC чтобы в рантайме не было необходимости в релокации. MasterZivЯ не понимаю, почему это вообще вас интересует и как это всё связано с С++ и с этим топиком в частности. Ну мало ли топиков было, где обсуждались детали реализации ОС - напрямую это не противоречит форуму, т.к. не запрещено, а всего лишь не рекомендуется :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2013, 20:11 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПри загрузке исполняемого модуля через отображение файла в память (а так оно и происходит) все сегменты модуля сохраняют фиксированное смещение относительно друг другаОтносительно друг друга - да, а вот относительно базы (нуля) единственного "плоского" сегмента - уже негарантированно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2013, 18:03 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Так я и говорю - в линуксе все либы компилируются с PIC. Поэтому какая там база не имеет значения, код обращается ко всем функциям и данным по относительным адресам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2013, 18:08 |
|
||
|
Есть ли смысл в потоках, если есть процессы
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, если пропустил, но если вопрос производительности стоит ребром, м б кластеризация?? Процессы, потоки.. всё равно упираются в железо. Или там камни на видео карте задействовать. Имеются вариантики) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2013, 21:43 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38368025&tid=2020036]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
79ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 173ms |

| 0 / 0 |
