2015-02-13 2 views
0

Как планировщик Linux определяет, какой процесс находится из пространства ядра и какой процесс выполняется из пользовательского пространства? Предположим, я установил приложение в Linux. Я начал приложение. Одновременно в готовую очередь идут другие процессы пространства ядра. Теперь, как планировщик Linux может определить, какой из процессов, стоящих в очереди, из пространства ядра, а какой - из пользовательского пространства ..?идентификация пространства ядра и идентификатора пространства пользователя

+0

Регистр режима процессора указывает, находится ли процесс в пользовательском или системном режиме. Переключатель процесса сохраняет это вместе со всеми другими регистрами процессора. – Barmar

+0

Спасибо за ответ, я понял. Но могу ли я запросить материал, откуда я могу узнать больше ..? Потому что я пишу код, который связан с этим. Мне нужно знать подробный код, чтобы эффективно его кодировать. – 1993harshil

ответ

0

Я не эксперт, но я начал читать исходный код ядра 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.

Итак, из приведенного выше я предполагаю, что если вы действительно хотите знать, является ли задача ядром, вы можете проверить эту структуру.

Смежные вопросы