powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Есть ли смысл в потоках, если есть процессы
17 сообщений из 67, страница 3 из 3
Есть ли смысл в потоках, если есть процессы
    #38365314
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДохтаР
Насколько я помню ИМХО , возможно заблуждаюсь
Windoze без окон жить не умеют
Даже если окон не видно ноги евентов от ОС для процессов ростут из окон .


Заблуждаешься, конечно же. Могут винды жить без окон. НО не любят.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365320
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyПод 64-битным линуксом, данное ограничение отсутствует - любая либа может быть загружена в разных процессах по разным адресам и при этом без дубликатов.

Под Виндой - не знаю как. Но думаю что как минимум начиная с Vista (где появился ASLR ) - вполне возможно тоже.
MasterZivВ виртуальном пространстве разных процессов этот сегмент кода может быть по разным адресам, и тем не менее физически это будет один блок и он будет разделяться.
Возможно, я отстал от жизни, но есть один момент, который таки надо прояснить.

Что делать с таблицей перемещения? Конечно, абсолютных адресов в скомпилированном коде очень мало. Но они есть. Если загрузка произошла по одним адресам - все окей, т.к. коррекция одинаковая. А если нет?

...
PS
Хотя... можно разделять только страницы, где есть коррекция, да.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365326
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalЧто делать с таблицей перемещения? Конечно, абсолютных адресов в скомпилированном коде очень мало. Но они есть. Если загрузка произошла по одним адресам - все окей, т.к. коррекция одинаковая. А если нет?


Хотя этот вопрос и не следует обсуждать в отрыве от конкретной архитектуры, OS и компилятора, но всё же...

Абсолютные адреса могут быть в скомпилированной коде.
Но при сборке они все должны быть линкером устранены или положены в таблицу ссылок на перемещаемые
объекты. При загрузке загрузчик делает настройку -- вычисляет реальные адреса и по таблице прописывает на них ссылки.

Это так было типа в DOS/Win16. В Win32/64 вообще адреса все виртуальные, но и тут можно такое проделать.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365332
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalХотя... можно разделять только страницы, где есть коррекция, да.
Так оно именно постранично и происходит в любом случае.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365334
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivjmp_originalЧто делать с таблицей перемещения? Конечно, абсолютных адресов в скомпилированном коде очень мало. Но они есть. Если загрузка произошла по одним адресам - все окей, т.к. коррекция одинаковая. А если нет?


Хотя этот вопрос и не следует обсуждать в отрыве от конкретной архитектуры, OS и компилятора, но всё же...

Абсолютные адреса могут быть в скомпилированной коде.
Но при сборке они все должны быть линкером устранены или положены в таблицу ссылок на перемещаемые
объекты. При загрузке загрузчик делает настройку -- вычисляет реальные адреса и по таблице прописывает на них ссылки.

Это так было типа в DOS/Win16. В Win32/64 вообще адреса все виртуальные, но и тут можно такое проделать.
Хех. Как не повезло приложениям на Delphi (по крайней мере на 7).

Я имею в виду строковые константы прямо в тексте программы. Которые, емнип, попадают в исполняемый сегмент напрямую.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365340
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jmp_original

Я согласен, что это малость оффтоп в C++, но просто как пример.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365475
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого.
По одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет.
Процессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут.
Также будет верными и обратные утверждения
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38365945
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalХех. Как не повезло приложениям на Delphi (по крайней мере на 7).

Я имею в виду строковые константы прямо в тексте программы. Которые, емнип, попадают в исполняемый сегмент напрямую.

Это не только в дельфе. И не понятно, почему не повезло.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38366208
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivjmp_originalХех. Как не повезло приложениям на Delphi (по крайней мере на 7).

Я имею в виду строковые константы прямо в тексте программы. Которые, емнип, попадают в исполняемый сегмент напрямую.

Это не только в дельфе. И не понятно, почему не повезло.
Каждое место, обращающееся к таким строкам, имеет запись в таблице перемещений. И корректируется при загрузке.
Ибо фиксированный адрес в сегменте кода.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38366218
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalКаждое место, обращающееся к таким строкам, имеет запись в таблице перемещений. И корректируется при загрузке.
Ибо фиксированный адрес в сегменте кода.
Не понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных .
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38366448
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понимаю, почему это вообще вас интересует и как это всё связано с С++ и с этим топиком в частности.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38366461
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНе понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных .Только в tiny-модели.
Во flat - уже нет, т.к. адресное пространство одно, часть его занята, а сколько именно будет занято при конкретном запуске - при сборке ещё неизвестно.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38366541
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, я в последний раз.

Anatoly MoskovskyНе понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных .
Только вот этот самый сегмент данных может быть расположен по разным адресам при загрузке. Как следствие, в команде MOV EAX,_адрес_строки_ необходимо корректировать операнд.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38366772
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovAnatoly MoskovskyНе понял, почему требуется релокация именно при загрузке, когда для исполняемого модуля (программа или библиотека) в момент сборки известно относительное смещение его сегмента данных .Только в tiny-модели.
Во flat - уже нет, т.к. адресное пространство одно, часть его занята, а сколько именно будет занято при конкретном запуске - при сборке ещё неизвестно.
Да все там известно.
При загрузке исполняемого модуля через отображение файла в память (а так оно и происходит) все сегменты модуля сохраняют фиксированное смещение относительно друг друга и поэтому достаточно использовать генерацию PIC чтобы в рантайме не было необходимости в релокации.

MasterZivЯ не понимаю, почему это вообще вас интересует и как это всё связано с С++ и с этим топиком в частности.
Ну мало ли топиков было, где обсуждались детали реализации ОС - напрямую это не противоречит форуму, т.к. не запрещено, а всего лишь не рекомендуется :).
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38368025
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyПри загрузке исполняемого модуля через отображение файла в память (а так оно и происходит) все сегменты модуля сохраняют фиксированное смещение относительно друг другаОтносительно друг друга - да, а вот относительно базы (нуля) единственного "плоского" сегмента - уже негарантированно.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38368038
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Так я и говорю - в линуксе все либы компилируются с PIC. Поэтому какая там база не имеет значения, код обращается ко всем функциям и данным по относительным адресам.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38370153
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, если пропустил, но если вопрос производительности стоит ребром, м б кластеризация??

Процессы, потоки.. всё равно упираются в железо. Или там камни на видео карте задействовать.
Имеются вариантики)
...
Рейтинг: 0 / 0
17 сообщений из 67, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Есть ли смысл в потоках, если есть процессы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]