Процесс Linux “планирование”

Устройства, упомянутые в/etc/fstab, будут рассматривать, как упомянуто там. Это предотвратит любую автосистему, используется для контакта с "неизвестными" устройствами при присоединении.

https://superuser.com/a/439079/139040 включает рекомендацию, которую я придумал для того, как к deal-with/defeat автомонтирующиеся системы OSX, но понятия должны перевести.

4
24.09.2013, 18:34
2 ответа

Попробуйте что-то вроде этого:


Все процессы запускаются со всего одного потока и могут создать больше, с помощью pthread_create например. (Все потоки процесса создали этот путь, совместно используют то же адресное пространство.) Планировщик ядра работает над этими потоками, независимо от того, являются ли они "основным" / начальным потоком процесса или дополнительными - нет по существу никакого различия между ними с точки зрения планировщика.

Linux первоначально не имел потоков вообще, только процессы. Таким образом, часть ОС, которая планирует "работу ЦП", обычно называют планировщиком процесса по историческим причинам. (Это не определенное для Linux, то же самое для большинства (все?) Системы типов Unix. Планировщик потока является просто не обычным используемым словарем.)


Я даже не упомянул бы clone (уже не говоря о vfork) в той точке, если Вы уже не объяснили целый бизнес пространств имен.

6
27.01.2020, 20:51
  • 1
    Спасибо. Это на самом деле хорошо. Я все еще должен дифференцироваться между процессом и потоком (это - смысл объяснения). Клон должен быть упомянут, потому что это - каков pthread_create в ядре. И процесс (адресное пространство) должен быть упомянут, потому что потоки совместно используют все (кроме стека). Я должен смочь потянуть те различия, таким образом, я предполагаю, что буду немного более педантичным в объяснении. Но я рад, что был более или менее в правильной дорожке, Спасибо! –  Dervin Thunk 24.09.2013, 19:15

В ядре Linux нет никакого понятия потока, поскольку Linux реализует все потоки как стандартные процессы.

Ядро Linux не обеспечивает специальной семантики планирования или структур данных для представления потоков.

Вместо этого поток является просто процессом, который совместно использует определенные ресурсы с другими процессами. Каждый поток имеет уникальный task_struct и появляется к ядру как нормальный процесс — потоки просто, оказывается, совместно используют ресурсы, такие как адресное пространство, с другими процессами.

К Linux потоки являются просто способом совместного использования ресурсов между процессами. Например, предположите, что у Вас есть процесс, который состоит из четырех потоков. В Linux существует просто четыре процесса и таким образом четыре нормальных task_struct структуры. Четыре процесса настраиваются для совместного использования определенных ресурсов.

И насколько потоки ядра (которые существуют только в kernelspace) затронуты, единственная разница между потоками ядра и нормальными процессами/потоками - то, что потоки ядра не имеют адресного пространства. Они работают только в пространстве ядра и не делают переключателя контекста в пространство пользователя.

1
27.01.2020, 20:51

Теги

Похожие вопросы