Тонкая настройка легких процессов - PullRequest
0 голосов
/ 18 октября 2019

Я узнал о реализации потоков и наткнулся на легкую реализацию процесса гибридной реализации пользователь / ядро. У меня есть несколько вопросов об использовании этого типа модели. Эта модель представлена ​​в книге Распределенные системы - Принципы и парадигмы: 2-е издание книги Tanenbaum & Van Steen. Я не студент, а самообучающийся.

Ситуация 1:

LWP связал себя с работающим потоком и переключил его контексты. Поток выполняет несистемный вызов, который блокирует, и другие потоки недоступны.

Q1: Поскольку другие потоки недоступны, это также должно означать, что также нет доступных LWP. ,Остаётся ли контекст в потоке пользовательского уровня или в LWP уровня ядра?

Q2: Если контекст не переключается в LWP, поток ожидает, пока не станет ни сам, ни другойпоток доступен?

Q3: Если контекст переключается на LWP, это просто в конечном итоге приведет к переключению контекста обратно на исходный поток (поскольку мы можем сделать вывод, что все остальные потокисвязан с LWP)?

Ситуация 2:

Предположим, мы статически назначаем отдельный поток LWP.

Q1: Может ли поток ещепереключать контексты в другой поток, если он блокирует? Может ли поток переключать контексты на связанный с ним LWP и этот контекст переключать на другой поток? Или это привязка LWP-Thread для времени жизни программы?

Q2: Если переключение контекста на уровне пользователя выходит за рамки, это означает, что несистемные вызовы этого блокапо сути, задержать LWP?

...