Это концептуальный вопрос.pthread vs. kthread в ядре Linux v2.6 +
В соответствии с этим post, pthread фактически реализуется с использованием системного вызова clone(). Таким образом, мы можем заключить, что есть поток ядра (или легкий процесс), поддерживающий pthread в пользовательском пространстве. Ядро известно о pthread и может планировать его как процесс.
Что касается KTHREAD, по Robert Love, kthreads также создаются с помощью системного вызова клон():
clone(CLONE_VM| CLONE_FS | CLONE_FILES | CLONE_SIGHAND, 0)
Так и потоковой KTHREAD как вызов использовать клон(). Мой первый вопрос:
- Есть ли разница между этими двумя видами нитей?
Чтобы ответить на мой собственный вопрос, я прочитал:
Существенное различие между потоками ядра и нормальных процессов является то, что ядра потоки не имеют адресное пространство (на самом деле, их мм указатель нулевой).
Это один разница? Я имею в виду, что поток, созданный pthread_create(), разделяет адресное пространство с обычным процессом. Напротив, у kthread нет собственного адресного пространства. Это верно?
Что еще не так?