#multithreading #operating-system #green-threads
#многопоточность #операционная система #зеленые потоки
Вопрос:
Я понимаю, что потоки пользовательского уровня или зеленые потоки управляются некоторой библиотекой потоков пользовательского уровня и должны быть «связаны» с некоторым потоком операционной системы для выполнения его задачи. Я понимаю, что потоки — это просто абстракция для последовательности независимого кода. Потоки представлены некоторыми структурами данных, хранящимися в памяти. В случае пользовательского уровня или зеленые потоки присутствуют в пользовательском пространстве и управляются библиотекой потоков пользовательского уровня. В случае потоков уровня ОС или уровня ядра они хранятся и управляются ядром или ОС. Чего я не понимаю, так это то, что на самом деле подразумевается под связыванием зеленого потока с потоком ОС?? Я знаю о схемах 1: 1, n: 1, n: m, и это не то, о чем мой вопрос. Мой вопрос заключается в том, какие структуры данных копируются или совместно используются (или что-то еще) между зеленым потоком и потоком ядра, к которому он привязан?? И что библиотека потоков пользовательского уровня делает с этими структурами, когда зеленые потоки должны переключаться по контексту??
Комментарии:
1. Вы можете изучить исходный код библиотеки green threads — en.wikipedia.org/wiki/Green_threads
2. Знаете ли вы какую-нибудь простую библиотеку green threads в python?
Ответ №1:
Есть ПОТОКИ и есть ИМИТИРУЕМЫЙ ПОТОК. То, что вы называете «зеленым потоком», является ИМИТИРУЕМЫМ ПОТОКОМ.
Ядро вообще не знает о существовании моделируемого потока.
Мой вопрос заключается в том, какие структуры данных копируются или совместно используются (или что-то еще) между зеленым потоком и потоком ядра, к которому он привязан?
Тогда ответ — НЕТ; по крайней мере, на уровне операционной системы. Процесс должен отслеживать потоки в пользовательском пространстве.
Я знаю о схемах 1: 1, n: 1, n: m, и это не то, о чем мой вопрос.
Схемы 1: 1, n: 1 и n: M являются полными и полными академическими ошибками * amp; T, предназначенными для запутывания студентов. В потоковой обработке нет такого понятия, как n: M . Это невыполнимая теоретическая бессмыслица. 1: 1 просто означает реальные ПОТОКИ. n: 1 означает ИМИТИРОВАННЫЕ ПОТОКИ.
В реальной жизни существуют только две модели:
В классической модели процесс состоял из потока выполнения и адресного пространства.
В текущей модели процесс состоит из нескольких потоков выполнения и адресного пространства.
В классической модели потоков нет. Если вам нужны потоки, вы должны имитировать их, используя библиотеки с таймерами; тема, которая не подходит для курса по операционным системам, за исключением исторического фона.
В текущей модели множественные потоки выполнения называются потоками. Нет никаких причин использовать имитированные / зеленые / пользовательские потоки в текущей модели. Учебники, в которых говорится, что имитированные / зеленые / пользовательские потоки имеют какое-либо преимущество, подходят только для использования в cat box liner.