Проблема производителя и потребителя (проблема ограниченного буфера)

Рассмотрим проблему производителя и потребителя, также известную как проблема ограниченного буфера.

Два процесса совместно используют буфер ограниченного размера. Один из них, производитель, помещает данные в этот буфер, а другой, потребитель, считывает их оттуда.

Взаимное исключение с активным ожиданием

Рассмотрим различные способы реализации взаимного исключения с целью избежать вмешательства в критическую область одного процесса при нахождении там другого и связанных с этим проблем.

Состояние состязания. Критические области.

В некоторых операционных системах процессы, работающие совместно, могут сообща использовать некое общее хранилище данных.
Каждый из процессов может считывать из общего хранилища данных и записывать туда информацию.
Это хранилище представляет собой участок в основной памяти (возможно, в структуре данных ядра) или файл общего доступа. Местоположение совместно используемой памяти не влияет на суть взаимодействия и возникающие проблемы.

Межпроцессное взаимодействие (IPC)

Процессам часто бывает необходимо взаимодействовать между собой.
Например, в конвейере ядра выходные данные первого процесса должны передаваться второму процессы и т.д. по цепочке. Поэтому необходимо правильно организовать взаимодействие между процессами, по возможности не используя прерываний. Рассмотрим некоторые аспекты межпроцессного взаимодействия (IPC, interprocess communication).

Проблема разбивается на три пункта=

Смешанная реализация потоков.

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

Реализация потоков в ядре

Существует несколько способов реализации потоков:

  • в пространстве пользователя
  • в ядре
  • смешанная реализация.

При реализации потоков в ядре, ядро знает о существовании потоков и управляет ими.
В этом случае=

Реализация потоков в пространстве пользователя

Метод состоит в размещении пакета потоков целиком в пространстве пользователя.

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

Использование потоков (отличия от процессов)

Основной причиной необходимости потоков является выполнением большинством приложений существенного количества действий, некоторые из которых могут время от времени блокироваться. Схему программы можно существенно упростить. если разбить приложение на несколько последовательных потоков. запущенных в квазистационарном режиме.

Модель потока

Модель процесса, которую мы рассматривали ранее, базируется на двух независимых концепциях: группировании ресурсов и выполнении программы. Иногда полезно их разделять, и тут появляется понятие потока.

Потоки

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

ответ не полный - нужно дополнение

Pages

Subscribe to fkn+antitotal RSS