Кто-нибудь знаком с os / 161 и может ответить на несколько вопросов для меня?
Как именно работает дочерний pid, родительский pid.
Я знаю, что когда вы вызываете thread_fork()
, вы создаете другую базу потоков на текущем потоке, новый поток должен иметь уникальный идентификатор для себя и другую таблицу дескрипторов файлов. В то время как sys_fork
создает дочерний элемент из curthread
, дочерний элемент совпадает с родительским, кроме pid. Но я не совсем понимаю, как работает pid и родительский pid.
Это моя интерпретация таблицы процессов. Для всей системы существует только одна таблица процессов. На данный момент у меня есть parent_pid
и my_pid
для каждого потока.
-У родительского потока может быть несколько дочерних элементов (продолжая вызывать sys_fork
).
-Детский ребенок может иметь только одного родителя.
-При каждом вызове sys_fork
создается дочерний элемент, а parent_pid
для этого дочернего элемента устанавливается в pid потока, создавшего этот дочерний элемент.
-pid of 1 - для темы загрузки / меню.
Я даже на правильном пути в понимании того, как работает таблица процессов?
Последний вопрос:
Для sys_waitpid()
: только родитель может использовать waitpid
? и они могут только ждать своих детей? Может ли ребенок использовать waitpid
на родителе (или это приведет к тупику)?
Я искал в Google, но нахожу так много противоречий, что до сих пор не могу найти четкий ответ на свои вопросы.