Потоки исполнения

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

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

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

Буферизация

Канал связи может иметь или не иметь буфер.

Есть 3-ри варианта:

· буфер 0.

· буфер ограниченной ёмкости, линия связи не может хранить более n байт информации

 

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

Поток ввода/вывода из сообщений

Различают 2-модели передачи данных:

· поток ввода/вывода

· поток сообщений, весь поток делится и передается частями

Важен вопрос о положении канала связи в системе.Если процесс создавший трубу (pipe) сообщит о её положении другому процессу, сделав вход и выход видимым, то будет создан объект называемый FIFO. Все каналы могут иметь или не иметь буфер.

Способ связи будет показывать надежность, если при обмене информацией выполняются 4 условия:

· Не происходит потери информации

· Не происходит повреждение информации

· Не появится лишней информации

· Не нарушается порядок данных в процессе обмена

Считается, что передача данных через буфер – надежный способ.

Как бороться с ненадежностью? Для обнаружения потерь информации каждые передаваемые сообщения снабжаются контрольной суммой. Если обнаружилось, что блок информации не соответствует своему номеру – он перемещается. Действия по контролю над передаваемой информацией могут выполнять:

1. ОС

2. Процессы, которые этими данными обмениваются.

4.3.5 Как завершается связь?

Вопрос прекращения обмена. Важны два аспекта:

· Требуется ли от процесса специальные действия по прекращению использования средств коммуникации

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

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

Как уменьшить накладные расходы?

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

Можно использовать даже при одном процессе

 

 

Во время ввода/вывода ничего не выполняется в процессоре. Вычисляется сумма массивов а+в можно было бы делать параллельно с вводом/выводом массива С

Массив совмещения можно было бы организовать используя два процесса:

    а = а + в
Ожидание ввода массива а и в
Ввод массива А
Ввод массива В
Ввод массива С
с = с + а
Вывод массива С
Ожидание окончания ввода
Ожидание окончания ввода
Ожидание окончания ввода
Ожидание окончания ввода

Нельзя забывать о переключении контекста и о выделении памяти. Вместе с этим схема будет выглядеть так:

Процесс 1   Процесс 2
Создать процесс 2    
Переключение контекста
    Выделение общей памяти
Ожидание ввода А и В
Переключение контекста
Выделение общей памяти    
Ввести массив А
Ожидание ввода А
Ввести массив В
Ожидание ввода В
Ввод массива С
Ожидание ввода С
Переключение контекста
    а = а + в
Переключение контекста
с = с + а    
Вывод С
Ожидание вывода С

 

Для реализации идеи параллелизма вводят новую абстракцию внутри понятия процесс - поток исполнения.

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

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

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