Работает ли поддерживаемый ядром поток в состоянии ядра? - PullRequest
1 голос
/ 13 октября 2019

Я немного запутался по поводу пространства ядра, пространства пользователя, потока ядра, потока пользователя. Можете ли вы думать, что потоки ядра поддерживаются ядром, работающим в пространстве ядра?

Java,

`Thread t = new Thread(new Runnable...)`,

Этот поток с именем 't' называется облегченным процессом (поток ядра)в линуксеРаботает ли он в состоянии ядра?

1 Ответ

0 голосов
/ 15 октября 2019

Нужно уточнить некоторые основные понятия ОС:

  • Поток ядра - это объект потока, который управляется и распределяется непосредственно ядром ОС. Программа уровня пользователя может получить доступ к потоку ядра через системные вызовы, такие как API-интерфейсы pthread. Если пользовательская программа связывает выполнение своего кода с потоком ядра, то это - поток пользователя, который сопоставлен с потоком ядра.
  • Облегченный процесс не является четко определенным термином, но обычно он относится к потоку ядра, который открыт пользовательскому пространству, в отличие от обычного процесса, который тяжелее потока. В этом смысле вы можете считать поток ядра таким же, как и легкий процесс.
  • Поток Java - это объект пользовательского потока, который обычно поддерживается потоком ядра (или его можно назвать легким процессом). ). Это означает, что выполнение потока Java может быть запланировано непосредственно ядром ОС.

Таким образом, вы правы, что поток Java сопоставлен с потоком ядра, но поток Java не запускается в ядрепространство. Это запланировано ядром ОС напрямую, и, несомненно, содержит данные потоков ядра в пространстве ядра. И иногда пользовательский поток может работать в пространстве ядра, когда он вызывает системный вызов ...

...