Разрабатываю свой проект, связанный с асинхронным и многопоточным вычислением. В основном вычисления происходят в максимальной нагрузке в 10-20 копий одного процесса, около 1 млн. обменов в сек. между каждым процессом и одним приложением-сервером. Проще говоря единственный процесс — босс, остальные — подчиненные, у этих подчиненных есть еще подчиненные. Каждый занят своим делом, и между прочим это один и тот же исполняемый файл.
Почему не многопоток в одном процессе?
1. Очень усложняется архитектура приложения. 2. Исторически сложилось что программа пишется на 32 битах, память ограничена. 3. Задел на будущее, если нужно будет запускать на удаленных машинах.
Конечно пришлось избавляться от некоторых проблем винды, вроде того что ядро системы перегружало процессор до максимума из-за использования мэппинга, но факт в том что упрощая архитектуру приложения можно получить больше гибкости.
Как по мне, к сожалению все «софтовые» доказательства можно подделать очередным патчем (да и часто просто правкой конфига), если уж сильно надо. Ведь должны понимать, что в ВМ окружение можно настроить таким образом, что детект можно полностью обмануть. Вопрос конечно в целесообразности подготовки такой ВМ. Как по мне, единственный выход — поиск и пользование уязвимостей и бэкдоров самих ВМ, остальное — лишь надежда на ВМ с настройкой по-умолчанию.
Почему не многопоток в одном процессе?
1. Очень усложняется архитектура приложения. 2. Исторически сложилось что программа пишется на 32 битах, память ограничена. 3. Задел на будущее, если нужно будет запускать на удаленных машинах.
Конечно пришлось избавляться от некоторых проблем винды, вроде того что ядро системы перегружало процессор до максимума из-за использования мэппинга, но факт в том что упрощая архитектуру приложения можно получить больше гибкости.