Средства связи: однонаправленные и двунаправленные. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Средства связи: однонаправленные и двунаправленные.



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

Особенности передачи информации с помощью линии связи.

Буферизация. Обладает ли канал буфером и объект буфера. 3 варианта:

1)буфер 0-ой емкости или отсутствует, т.е. на линии связи информация не сохраняется.

2)буфер ограниченной емкости, размер буфера =n, т.е. линия связи не может хранить документы получения более чем n единиц информации.  

3) буфер неограниченной емкости, теоретически возможно, практически нет. Процесс не ждет, когда он получит информацию.

2. Поток ввода-вывода и сообщения

 Существуют две модели передачи данных по каналам связи - поток ввода-вывода и сообщение.

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

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

2. Сообщение

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

Надежность средств связи

Для того чтобы способ коммуникации был надежным не обходимо и достаточно выполнить условие:

1) не должна происходить потеря информации,

2) не должно происходить повреждений информации,

3) не должна появляться лишняя информация,

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

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

Завершение связи

Требуется ли процесса какие-либо действия по прекращению использования средств коммуникации. Влияет ли такое прекращение на поведение других процессов.

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

Нити исполнения

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

 

Пример: пусть есть программа, написанная на псевдоязыке программирования.

 

Процесс 1 Процесс 2
Ввести массив а  
Ввести массив в  
Ввести массив с а=а + в
а = а + в  
с = а + с  
Вывести массив с  

 

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

 

Процесс 1 Процесс 2
Ввести массив а  
Ожидания ввода массива а  
Ввести массив в  
Ожидания ввода массива  
Ввести массив с  
Ожидания ввода массива с а =а + в
с = а +с  
Вывести массив с  
Ожидание вывода массива с  

 

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

Процесс 1 Процесс 2
Ввести массив а Ожидания окончания ввода массива а и в
Ожидания окончания ввода массива а  
Ввести массив в  
Ожидания окончания ввода массива  
Ввести массив с  
Ожидания окончания ввода массива с а =а + в
с = а +с  
Вывести массив с  
Ожидание окончания вывода массива с  

 

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

Создать процесс 2

Переключение контекста

Выделяем общую память

Ожидание окончания ввода а и в

Переключение контекста

1-4

переключение контекста

а =а +в

переключение контекста

5-9

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

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

Состояние процесса.

1)Рождение. Процесс находится в этом состояние, когда рождена всего лишь 1 нить.

2)Готовность, если хотя бы одна из его нитей находится в состояние готовность и не одной в состояние исполнения.

3)Исполнение, если одна из его нитей находится в состояние исполнение.

4) Ожидания, если все его нити находятся в состояние ожидания.

5)Завершил исполнения, если все его нити находятся в состояние завершил исполнение.

Нить1                                                          Нить2

Создать нить 2

     Переключения контекста нитей

                                               Ожидание ввода а,в

     Переключение контекста нитей

Ввести массив а

Ожидание ввода массива а

Ввести массив в

Ожидание ввода массива в

Ввести массив с

Ожидание ввода массива с

      Переключение контекста нитей

                                                               а =а +в

      переключение контекста нитей

                        с =а +с

вывести массив с

Ожидание вывода массива с

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

Тупики

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

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

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

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

Тупики могут иметь место:

1. На аппаратных ресурсах (пример с принтером);

2. На программных ресурсах.

Пример:

В системах управления базами данных (СУБД) могут быть локализованы записи каким-либо процессом. В этом случае может получиться так, что один из процессов заблокировал записи необходимые другому процессу и наоборот.

Ресурсами могут быть:

1. Устройства;

2. Данные.

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

Ресурсы делятся на:

1. Разделяемые;

2. выделенные.

Разделяемыми ресурсами называются ресурсы, которые допускают разделение между процессами (процессор, память, диски).

Выделенные ресурсы - это ресурсы, которые не допускают разделения (лентопротяжный механизм, регистры).

Пример:

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

Традиционная последовательность событий при работе с ресурсами состоит:

1. запрос ресурсов;

2. Использование ресурсов;

3. Освобождение ресурсов.

Тип запроса зависит от ОС и природы ресурса (явные и неявные).



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 196; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.211.66 (0.023 с.)