Как планировщик Linux определяет, какой процесс находится из пространства ядра и какой процесс выполняется из пользовательского пространства? Предположим, я установил приложение в Linux. Я начал приложение. Одновременно в готовую очередь идут другие процессы пространства ядра. Теперь, как планировщик Linux может определить, какой из процессов, стоящих в очереди, из пространства ядра, а какой - из пользовательского пространства ..?идентификация пространства ядра и идентификатора пространства пользователя
ответ
Я не эксперт, но я начал читать исходный код ядра 2 дня назад, и когда дело доходит до процессов, вы почти всегда можете найти все данные, которые вам нужны из одной структуры. Структура называется task_struct
и определена в файле include/linux/sched.h исходного дерева ядра.
Вы можете посмотреть его здесь: https://github.com/torvalds/linux/blob/master/include/linux/sched.h#L1274
Из того, что я понимаю, хотя я могу ошибаться, ядро понятия не имеет, если процесс/нить, что она планирует это пользовательский процесс или нить ядра.
Согласно Robert Love's book в ядре Linux, основное отличие от точки зрения системы между пользовательским процессом и потоком ядра заключается в том, что потоки ядра не имеют адресного пространства. Их указатель mm
в их task_struct
NULL.
Итак, из приведенного выше я предполагаю, что если вы действительно хотите знать, является ли задача ядром, вы можете проверить эту структуру.
- 1. как Асесс и изменить переменную пространства ядра из пространства пользователя
- 2. IOCTL из пространства ядра
- 3. Портирование кода пространства пользователя в пространство ядра
- 4. Зачем приложениям пространства пользователя нужны заголовки ядра?
- 5. пространства ядра и пользовательского пространства макет в таблицу страниц
- 6. Как получить размер пространства ядра?
- 7. Встраиваемые Linux: драйверы ядра и драйверы пространства пользователя?
- 8. Ядро linux и адресные пространства пользователя
- 9. Что такое командная строка linux для проверки пространства ядра и пространства пользователя Используемая память
- 10. Доступ GPIO из пространства ядра
- 11. Драйвер ядра и mmap из пользовательского пространства
- 12. Пользовательский буфер пространства и буфер ядра
- 13. Как написать функцию пространства ядра, которая вызывается функцией пользовательского пространства?
- 14. Пространства имен и пространства подпространств
- 15. идентификация ведущего пространства строки - сценарий оболочки
- 16. Передача адреса в пространство пользователя из пространства ядра
- 17. Как обратный вызов поддерживается из пространства пользователя в пространство ядра
- 18. Указатели, заданные из пространства пользователя в пространство ядра, равны 0:
- 19. Из пространства ядра в пространство пользователя: внутренние обработки прерываний
- 20. Как выделить буфер пространства пользователя в драйвере ядра?
- 21. сопоставление пространства пользователя с памятью ядра с использованием shm_open & mmap
- 22. xslt идентификация пространства имен in out put
- 23. Копирование 2D-массива char * в пространство пользователя из пространства ядра?
- 24. Обратный звонок из пространства пользователя в пространство ядра
- 25. Модуль ядра, периодически вызывающий программу пользовательского пространства
- 26. компиляция кода пространства пользователя в linux
- 27. Пространства пространства семантических различий
- 28. Реализовать «tee», не покидая пространства ядра
- 29. Настройка параметров светодиодного триггера из пространства ядра
- 30. Чтение содержимого страницы пользовательского пространства из ядра
Регистр режима процессора указывает, находится ли процесс в пользовательском или системном режиме. Переключатель процесса сохраняет это вместе со всеми другими регистрами процессора. – Barmar
Спасибо за ответ, я понял. Но могу ли я запросить материал, откуда я могу узнать больше ..? Потому что я пишу код, который связан с этим. Мне нужно знать подробный код, чтобы эффективно его кодировать. – 1993harshil