Каковы отношения между процессами, потоками ядра, упрощенными процессами и пользовательскими потоками в Unix? [закрыто]

вам нужно добавить кое-что, чтобы использовать X;

Я использую их в задании cron (это то же самое ...)

#*/15 * * * *   export DISPLAY=:0.0 && export XAUTHORITY=/home/mike/.Xauthority && /home/mike/bin/defunct-check.sh

Это должно работать из любого скрипта.

12
01.10.2018, 16:37
1 ответ

См.:Понимание ядра Linux , 3-е издание Даниэля П. Бове, Марко Чезати

.
  • Издатель :О'Рейли
  • Дата публикации :ноябрь 2005 г.
  • ISBN :0 -596 -00565 -2
  • Страницы :942

Во введении Дэниел П. Бове и Марко Чезати сказали:

Technically speaking, Linux is a true Unix kernel, although it is not a full Unix operating system, because it does not include all the applications such as filesystem utilities, windowing systems and graphical desktops, system administrator commands, text editors, compilers, and so on. What you read in this book and see in the Linux kernel, therefore, may help you understand the other Unix variants too.

В следующих абзацах я попытаюсь обратиться к вашей точке зрения, основанной на моем понимании фактов, представленных в «Понимании ядра Linux», которые в очень большой степени аналогичны тем, что есть в Unix.

Что означает процесс?:

Процессы подобны человеческим существам, они генерируются, у них более или менее значимая жизнь, они опционально генерируют один или несколько дочерних процессов и, в конце концов, умирают. Процесс состоит из пяти основных частей :код («текст» ), данные (виртуальная машина ), стек, файловый ввод-вывод и таблицы сигналов

Назначение процесса в ядре — действовать как объект, которому выделяются системные ресурсы (процессорное время, память и т. д. ). Когда процесс создается, он почти идентичен своему родителю. Он получает (логическую )копию адресного пространства родителя и выполняет тот же код, что и родитель, начиная со следующей инструкции, следующей за системным вызовом создания процесса. Хотя родитель и дочерний элемент могут совместно использовать страницы, содержащие код программы (текст ), у них есть отдельные копии стека данных (и кучи ), так что изменения дочерним элементом в ячейке памяти невидимы. к родителю (и наоборот ).

Как работают процессы?

Выполняемой программе требуется нечто большее, чем просто двоичный код, сообщающий компьютеру, что делать. Для работы программе требуется память и различные ресурсы операционной системы.«Процесс» — это то, что мы называем программой, загруженной в память вместе со всеми ресурсами, необходимыми для работы. Поток — это единица выполнения внутри процесса. Процесс может иметь от одного потока до множества потоков. Когда процесс запускается, ему выделяется память и ресурсы. Каждый поток в процессе разделяет эту память и ресурсы. В однопоточных -процессах процесс содержит один поток. Процесс и поток — одно и то же, и происходит только одно. В многопоточных процессах процесс содержит более одного потока и одновременно выполняет ряд действий.

Механика многопроцессорной -системы включает легкие и тяжелые процессы:

В тяжелом процессе несколько процессов выполняются вместе параллельно. Каждый тяжеловесный процесс параллельно имеет свое собственное адресное пространство памяти. Связь между процессами -медленная, так как процессы имеют разные адреса памяти. Переключение контекста между процессами обходится дороже. Процессы не делят память с другими процессами. Связь между этими процессами будет включать дополнительные механизмы связи, такие как сокеты или каналы.

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

Существует два типа потоков :уровня пользователя -и потоков уровня ядра -.Потоки уровня пользователя -избегают ядра и управляют работой самостоятельно. Потоки пользовательского уровня -имеют проблему, состоящую в том, что один поток может монополизировать квант времени, тем самым лишая других потоков внутри задачи. Потоки уровня пользователя -обычно поддерживаются над ядром в пользовательском пространстве и управляются без поддержки ядра. Ядро ничего не знает о пользовательских -потоках уровня и управляет ими, как если бы они были однопоточными -процессами. Таким образом, потоки уровня пользователя -очень быстрые, они работают в 100 раз быстрее, чем потоки ядра.

Потоки уровня ядра -часто реализуются в ядре с использованием нескольких задач. В этом случае ядро ​​планирует каждый поток в пределах временного интервала каждого процесса. Здесь, поскольку такт часов будет определять время переключения, задача с меньшей вероятностью будет отбирать временной интервал от других потоков внутри задачи. Потоки на уровне ядра поддерживаются и управляются непосредственно операционной системой. Отношения между потоками уровня пользователя -и потоками уровня ядра -не являются полностью независимыми, на самом деле между этими двумя уровнями существует взаимодействие. Как правило, потоки уровня пользователя -могут быть реализованы с использованием одной из четырех моделей :. много -до -один, один -до -один, много -до -много и два -уровневые модели. Все эти модели отображают потоки пользовательского уровня -в потоки уровня ядра -и вызывают взаимодействие в разной степени между обоими уровнями.

enter image description here

Потоки и процессы

  1. Программа запускается как текстовый файл программного кода,
  2. Программа компилируется или интерпретируется в двоичную форму,
  3. Программа загружается в память,
  4. Программа становится одним или несколькими запущенными процессами.
  5. Процессы обычно независимы друг от друга,
  6. Пока потоки существуют как подмножество процесса.
  7. Потоки могут взаимодействовать друг с другом легче, чем процессы,
  8. Но потоки более уязвимы для проблем, вызванных другими потоками в том же процессе

Ссылки:

Понимание ядра Linux, 3-е издание

Еще 12345

......................................................

Теперь давайте упростим все эти термины(этот абзац с моей точки зрения). Ядро — это интерфейс между программным и аппаратным обеспечением. Другими словами, ядро ​​действует как мозг. Он манипулирует отношениями между генетическим материалом (, т. е. кодами и их производными программами ), и системами организма (, т. е. аппаратными средствами или мышцами ).

Этот мозг (, то есть ядро ​​), посылает сигналы процессам, которые действуют соответствующим образом. Некоторые из этих процессов подобны мышцам (, т. е. нитям ), каждая мышца выполняет свою функцию и задачу, но все они работают вместе, чтобы завершить работу. Связь между этими нитями (, то есть мышцами ), очень эффективна и проста, поэтому они выполняют свою работу плавно, быстро и эффективно. Некоторые потоки (, то есть мышцы ), находятся под контролем пользователя (, например, мышцы наших рук и ног ). Другие находятся под контролем мозга (, например мышцы желудка, глаз, сердца, которые мы не контролируем ).

Пользовательские -пространственные потоки избегают ядра и сами управляют задачами. Часто это называют «совместной многозадачностью», и действительно, это похоже на наши верхние и нижние конечности, оно находится под нашим собственным контролем и работает все вместе для выполнения работы (, то есть упражнений или... )и не нужны прямые приказы из мозга. С другой стороны, потоки ядра -Space полностью контролируются ядром и его планировщиком.

.......................................................

В ответ на ваши вопросы:

  1. Всегда ли процесс реализуется на основе одного или нескольких облегченных процессов? Рисунок 3.4, кажется, говорит да. Почему на рис. 3.5 (и )процессы показаны непосредственно поверх процессоров?

    Да, есть легковесные процессы, называемые потоками, и тяжеловесные процессы.

    Тяжеловесный процесс (вы можете назвать его процессом сигнального потока )требует, чтобы сам процессор выполнял больше работы, чтобы упорядочить его выполнение, поэтому на рис. 3.5 (a )процессы показаны непосредственно поверх ЦП..

  2. Всегда ли облегченный процесс реализуется на основе потока ядра? Рисунок 3.4, кажется, говорит да. Почему на рис. 3.5 (b )упрощенные процессы показаны непосредственно поверх процессов?

    Нет, упрощенные процессы делятся на две категории :Процессы уровня пользователя -и процессы уровня ядра -, как упоминалось выше. Процесс уровня пользователя -полагается на собственную библиотеку для выполнения своих задач. Ядро само планирует процесс уровня ядра -. Потоки уровня пользователя могут быть реализованы с использованием одного из четырех смоделированных :много -до -один, один -до -один, много -до -много и два -уровень. Все эти модели отображают потоки уровня пользователя -в потоки уровня ядра -.

  3. Являются ли потоки ядра единственными объектами, которые можно планировать?

    Нет, потоки уровня ядра -создаются самим ядром. Они отличаются от потоков уровня пользователя -тем, что потоки уровня ядра -не имеют ограниченного адресного пространства. Они живут исключительно в пространстве ядра -, никогда не переключаясь на область пользовательской -земли. Однако они являются полностью планируемыми и вытесняемыми сущностями,точно так же, как обычные процессы (примечание :можно отключить почти все прерывания для важных действий ядра ). Цель собственных потоков ядра — в основном выполнять обязанности по обслуживанию системы. Только ядро ​​может запустить или остановить поток ядра. С другой стороны, процесс пользовательского уровня -может планировать себя на основе своей собственной библиотеки, и в то же время он может планироваться ядром на основе двух уровней -и многих ---многих. модели (, упомянутые выше ), которые позволяют привязывать определенные потоки уровня пользователя -к одному потоку уровня ядра -.

  4. Планируются ли легковесные процессы только косвенно через планирование базовых потоков ядра?

    Потоки ядра контролируются самим планировщиком ядра. Поддержка потоков на уровне пользователя означает, что существует библиотека уровня пользователя, связанная с приложением, и эта библиотека (, а не ЦП ), обеспечивает все управление поддержкой потоков во время выполнения. Он будет поддерживать структуры данных, необходимые для реализации абстракции потоков, и обеспечивать всю синхронизацию планирования и другие механизмы, необходимые для принятия решений по управлению ресурсами для этих потоков. Теперь некоторые процессы потока пользовательского уровня могут быть отображены в нижележащие потоки уровня ядра, включая один с -по -один, один с -по -много и много с -по -много отображение.

  5. Планируются ли процессы только косвенно через планирование лежащих в их основе облегченных процессов?

    Это зависит от того, является ли процесс тяжелым или легким. Тяжелые — это процессы, запланированные самим ядром. легким процессом можно управлять на уровне ядра и на уровне пользователя.

15
27.01.2020, 19:56

Теги

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