Как мы знаем, потоки принадлежат одному и тому же процессу одновременно, используя одно и то же общее адресное пространство для себя, означает ли это, что пространство памяти также распределяется одновременно между потоками, если да, то как? почему нам нужно переключение контекста, если все они способны одновременно использовать пространство памяти?Многопоточное одно и то же адресное пространство
ответ
Каждый поток имеет свой собственный стек и место в исполняемом файле.
Переключение контекста является процессор выборки правильной инструкции для этого потока с правильным стеком и значением для регистров
почему нам нужно переключение контекста, если все они способны использовать пространства памяти одновременно?
Коммутатор контекста темы о времени процессора, а не карте памяти. Представьте, что у вас есть два одинаково важных рабочих потока, чтобы оба потока выполняли свою работу, они должны получать процессорное время от планировщика. Вот почему вам нужен контекстный контекст. Факт, что они работают внутри этого же процесса, делает этот контекст более легким по сравнению с коммутатором контекста процесса, тем не менее необходим контекст контекста потока. Во время потока контекстного коммутатора пространство виртуальной памяти остается таким же, но регистрируется как IP (указатель инструкции), SP (указатель стека), регистры общего назначения перезагружаются, потому что другой «исполнитель» получает процессорное время.
Другая часть ваших вопросов уже ответила в этой теме переполнения стека.
Основное различие между переключателем резьбы и переключателем процесса является , что при переключении потоков, виртуальное пространство памяти остается же, в то время как он не во время процесса переключателя. Оба типа включают , передающие управление ядру операционной системы для выполнения контекстного переключателя . Процесс переключения и выхода из ядра ОС наряду с затратами на выключение регистров - это максимальная фиксированная стоимость выполнения контекстного переключателя .
Более нечеткая стоимость заключается в том, что контекстный переключатель мешает процессорам механизмы кэширования. В принципе, при переключении контекста все адреса памяти , которые процессор «запоминает» в своем кеше , фактически становятся бесполезными. Одно большое отличие здесь заключается в том, что когда вы меняете места в виртуальной памяти, перевод процессора Lookaside Buffer (TLB) или его эквивалент сбрасывается, делая память получает доступ к гораздо более дорогостоящему на некоторое время. Это не происходит во время переключателя потока.
- 1. Каковы случаи, когда программа имеет то же виртуальное адресное пространство
- 2. Обработать виртуальное адресное пространство и адресное пространство ядра? Как?
- 3. несколько потоков виртуальное адресное пространство?
- 4. Fadeout и Fadein в одно и то же пространство
- 5. линкеры, абсолютные ссылки и адресное пространство процессов
- 6. sed - адресное пространство между "{" и "},"
- 7. PThreads Адресное пространство
- 8. Сделать несколько проходов текста занимать одно и то же пространство?
- 9. Адресное пространство @AsyncWebService WebLogic
- 10. адресное пространство Библиотека или процесс
- 11. Internet Explorer Адресное пространство
- 12. Объясните адресное пространство Linux?
- 13. ARM linux: адресное пространство процесса
- 14. Адресное пространство, независимое представление объектов
- 15. Общее адресное пространство в Cython
- 16. Виртуальное адресное пространство в окнах
- 17. Windows 64-разрядное адресное пространство
- 18. адресное пространство процесса и виртуальной памяти
- 19. Зависимость и Ассоциация - одно и то же?
- 20. Адресное пространство для шифрования XML
- 21. , что адресное пространство макета рандомизации
- 22. Адресное пространство системных DLL-адресов
- 23. определить адресность, зная адресное пространство
- 24. PHP, генерирующий одно и то же случайное число в одно и то же время (в секундах)
- 25. обновить одно и то же полевое твиз
- 26. Создано одно и то же создание сокета
- 27. Значение всегда одно и то же
- 28. Логическое значение всегда одно и то же
- 29. Python - суммируя числа, одно и то же
- 30. Всегда поддерживайте одно и то же приложение
Спасибо за ваш ответ, но я хотел бы уточнить, если переключение контекста все о времени процессора, то нити должны использовать его один за другим в соответствии с их приоритетом, который наводит на мысль, что даже пространство памяти не может использовать одновременно, потому что одновременно может быть много потоков в запущенном состоянии, но все равно один будет выполняться перед другими из-за времени процессора, выделенного им. Поэтому, почему мы говорим, что потоки выполняются одновременно. – Manish
Мы говорим, что потоки работают одновременно, потому что они могут запускаться одновременно, но не все потоки запускаются одновременно. Ядро процессора может запускать один поток одновременно. Если у вас есть двухъядерный процессор, тогда два потока могут запускаться одновременно. Поэтому, если у нас есть программа с тремя потоками, для запуска третьего потока должен быть контекстный переключатель. – shf301