Когда я создаю несколько потоков из процесса, то каждый поток имеет свой собственный стек, или они разделяют стек своего родительского процесса. Что происходит, когда поток выполняет системный вызов? Связаны ли потоки с собственным стеком ядра, например с процессами?Имеет ли каждый поток свой собственный стек?
ответ
Да нити имеют свои собственные стеки и собственные стеки ядра (например, linux).
Когда поток выполняет системный вызов, вы попадаете в режим ядра (из пользовательского режима), вы передаете аргументы в ядро, аргументы проверяются, ядро делает это/стек), возвращает окончательное значение обратно в поток, и вы возвращаетесь в пользовательский режим.
Как ядро «w/e нужно делать» без стека? – avakar
Я уточню в своем ответе – Joohwan
Стек ядра - это только меры предосторожности, добавленные к существующей модели. Несколько стеков являются обязательным условием многопоточности. Ядро по существу обеспечивает параллельную версию того, что происходит в пользовательском пространстве, чтобы предотвратить утечку конфиденциальных данных. – Potatoswatter
- 1. Каждый процесс имеет свой собственный стек ядра, не так ли?
- 2. Что означает «каждый поток JVM имеет свой собственный счетчик программ»?
- 3. Каждый поток, используя свой собственный прокси
- 4. Имеет ли каждый экземпляр облака свой собственный IP
- 5. Имеет ли каждый номер из SqlException свой собственный тип исключения
- 6. Имеет ли каждый объект JSpinner свой собственный объект модели?
- 7. Имеет ли каждый ядро свой собственный набор регистров?
- 8. Сбрасывает ли страницуAsyncTask свой собственный поток?
- 9. Каждый поток создает свой собственный экземпляр журнала, регистрируя собственное событие
- 10. Почему режим супервизора ARM имеет свой собственный стек?
- 11. NSDateFormatter Имеет свой собственный разум
- 12. Два массива, каждый из которых имеет свой собственный список
- 13. Каждый пул php-fpm имеет свой собственный пул памяти?
- 14. Имеет ли каждый CALayer собственный CGContextRef?
- 15. В linux все процессы ядра имеют один и тот же стек ядра, каждый пользовательский процесс имеет свой собственный стек, правильно?
- 16. Имеет ли DCE собственный стек ядра linux или использует ли Linux-стек хост-машины?
- 17. Выполняет ли каждый подзаголовок, созданный ОС, собственный «стек»?
- 18. Запустить RichTextBox на свой собственный поток?
- 19. Создает ли блок Try/Except собственный стек?
- 20. Принимая каждый столбец как свой собственный список
- 21. Может ли поток вызвать SuspendThread, передав свой собственный идентификатор потока?
- 22. JEvent Возможно ли, чтобы каждый пользователь имел свой собственный календарь?
- 23. C# ли каждый экземпляр HttpClient Получить свой собственный ServicePoint
- 24. Получает ли каждый «HttpRequest» собственный поток в ASP.NET?
- 25. .NET Исключения: имеет ли каждый тип исключения свой собственный текст сообщения?
- 26. Имеет ли каждый экземпляр SQL Server в кластере свой собственный LUN?
- 27. Может ли подкласс наследовать также конструктор родительского класса, или каждый класс имеет свой собственный конструктор?
- 28. Имеет ли каждый раздел разделенной таблицы даты в Google Big Query свой собственный кеш?
- 29. Является ли хорошей практикой использовать общий репозиторий или каждый объект имеет свой собственный репозиторий?
- 30. Каждая производная таблица имеет свой собственный псевдоним
yes thread specific stack !, глобальные значения являются общими для потоков (local not) –
@GrijeshChauhan Что происходит, когда мы делаем системный вызов из потока? –
, например, если вы вызываете 'open()' системный вызов для открытия файла. используя 'int f = open()' then of course 'f' является локальным для потока. но помните, что файловые дескрипторы разделены между потоками. Если вы знаете значение 'f', вы можете использовать это значение в другом потоке для доступа к тому же файлу (вам не нужно открывать его снова) –