Меня интересует тема операционной системы, и у меня есть фиктивный вопрос. Стандартные исполняемые файлы PE связаны с 0x400000
. Мой вопрос заключается в том, как операционная система может загружать несколько исполняемых файлов с одинаковой базой изображений, когда виртуальная память просто сопоставляет виртуальные адреса с физическими. Он где-то хранит индекс PDE и PTE? Есть ли какое-то дополнение к каждому адресу до запуска? Как это работает?Выполнение нескольких исполняемых файлов, связанных с 0x400000
ответ
Каждый процесс получает свой собственный virtual address space, и, следовательно, конфликта нет. Все виртуальные адресные пространства, которые существуют в любой момент времени в системе, отображаются в физическое адресное пространство. Виртуальная память, которая не может или не отображается в определенной физической памяти, хранится в файле подкачки (раздел подкачки или аналогичный) - это называется paging.
Во время переключения потоков, когда ЦП собирается выполнить поток из другого процесса, чем он выполнял до сих пор, operating system's scheduler информирует CPU (устанавливает соответствующие регистры) о новой таблице преобразования виртуальных адресов. Таким образом, процессор считает, что в данный момент есть только одно виртуальное адресное пространство, а операционная система может управлять гораздо больше, по одному для каждого процесса.
Отказ от ответственности: Мой ответ может быть мысль о том, как немного поверхностным или неточным, в отличие от реальности. Это ради простоты в отношении характера вопроса ОП. Кроме того, эти механизмы зависят от процессора и зависят от операционной системы.
- 1. Выполнение нескольких исполняемых файлов в одном окне
- 2. Выполнение нескольких исполняемых файлов из службы Windows
- 3. Упаковка или выполнение исполняемых файлов в C++
- 4. Выполнение исполняемых файлов Windows из приложений Django
- 5. Выполнение исполняемых файлов python в Ubuntu
- 6. Создание автоматически исполняемых файлов?
- 7. libcurl и curl_global_init() для нескольких исполняемых файлов
- 8. Морфинг нескольких исполняемых файлов в одно приложение
- 9. Помогите упростить Makefile для нескольких исполняемых файлов
- 10. Запуск нескольких исполняемых файлов через python сразу
- 11. Регулярное развертывание исполняемых файлов на нескольких серверах
- 12. CMake fixup_bundle для нескольких исполняемых файлов
- 13. Редактирование файлов исполняемых файлов
- 14. Выполнение нескольких файлов .SQL
- 15. Создание исполняемых файлов в Linux
- 16. Azure WebJob Несколько исполняемых файлов
- 17. Общий Makefile с автоматическими зависимостями make для нескольких исполняемых файлов
- 18. Несколько исполняемых файлов Bluemix
- 19. Запуск исполняемых файлов iOS
- 20. Создание исходных исполняемых файлов
- 21. Объединение двух исполняемых файлов
- 22. Список исполняемых файлов
- 23. Запуск исполняемых файлов с помощью Haskell
- 24. C++ - транспортировка исполняемых файлов
- 25. Отладка/выполнение исполняемых файлов в проекте cmake/Visual Studio
- 26. Выполнение Makefile из двух исполняемых файлов в C++
- 27. CDN для исполняемых файлов
- 28. Xcode Именование исполняемых файлов
- 29. Выполнение нескольких командных файлов C#
- 30. Выполнение команды во всех исполняемых экземплярах emacs
спасибо. – user35443