Информационная валентность процессов и средств связи
Сколько процессов можно задействовать между процессами?
Связь бывает однонаправленной и двунаправленной:
Под однонаправленной связью понимают связь при которой каждый процесс ассоциирован может использовать связь только для приёма, либо только для передачи. Принято называть однонаправленную связь симплексной, двунаправленную связь с передачей информации в разных направлениях – полудуплексной, а двунаправленную связь с возможностью одновременной передачи информации в обоих направлениях – дуплексной.
Особенности передачи информации с помощью линии связи.
Обмен наиболее безопасен. Разделяемую память трудно использовать процессом, запущенным в разных ВС, поэтому каналы сязи получили более широкое применение.
Буферизация
Канал связи может иметь или не иметь буфер.
Есть 3-ри варианта:
· буфер 0.
· буфер ограниченной ёмкости, линия связи не может хранить более n байт информации
При использовании канального средства связи при непрямой адресации, под ёмкостью буфера понимают количество информации, которую можно поместить в буфер
Поток ввода/вывода из сообщений
Различают 2-модели передачи данных:
· поток ввода/вывода
· поток сообщений, весь поток делится и передается частями
Важен вопрос о положении канала связи в системе.Если процесс создавший трубу (pipe) сообщит о её положении другому процессу, сделав вход и выход видимым, то будет создан объект называемый FIFO. Все каналы могут иметь или не иметь буфер.
Надежность средств связи
Способ связи будет показывать надежность, если при обмене информацией выполняются 4 условия:
· Не происходит потери информации
· Не происходит повреждение информации
· Не появится лишней информации
· Не нарушается порядок данных в процессе обмена
Считается, что передача данных через буфер – надежный способ.
Как бороться с ненадежностью? Для обнаружения потерь информации каждые передаваемые сообщения снабжаются контрольной суммой. Если обнаружилось, что блок информации не соответствует своему номеру – он перемещается. Действия по контролю над передаваемой информацией могут выполнять:
1. ОС
2. Процессы, которые этими данными обмениваются.
4.3.5 Как завершается связь?
Вопрос прекращения обмена. Важны два аспекта:
· Требуется ли от процесса специальные действия по прекращению использования средств коммуникации
· Влияют ли сообщения о прекращении использования связи на прекращение других процессов
Если один из взаимодействующих процессов не завершал общения, находится в ожидании получения данных, то ОС должна предпринимать действия для исключения блокирования этого процесса.
Потоки исполнения
Как уменьшить накладные расходы?
Даже в режиме мультипрограммирования процесс выполняется медленно. Для ускорения можно ввести понятие потока или задействовать внутренний параллелизм.
Можно использовать даже при одном процессе
tT dHlsZTEueG1sUEsBAi0AFAAGAAgAAAAhAOWae5E+BAAAGxEAABgAAAAAAAAAAAAAAAAAjRoAAGRy cy9kaWFncmFtcy9sYXlvdXQxLnhtbFBLAQItABQABgAIAAAAIQDnVaA+1gQAADslAAAZAAAAAAAA AAAAAAAAAAEfAABkcnMvZGlhZ3JhbXMvZHJhd2luZzEueG1sUEsFBgAAAAAKAAoAmwIAAA4kAAAA AA== ">
Во время ввода/вывода ничего не выполняется в процессоре. Вычисляется сумма массивов а+в можно было бы делать параллельно с вводом/выводом массива С
Массив совмещения можно было бы организовать используя два процесса:
а = а + в |
Ожидание ввода массива а и в |
Ввод массива А |
Ввод массива В |
Ввод массива С |
с = с + а |
Вывод массива С |
Ожидание окончания ввода |
Ожидание окончания ввода |
Ожидание окончания ввода |
Ожидание окончания ввода |
Нельзя забывать о переключении контекста и о выделении памяти. Вместе с этим схема будет выглядеть так:
Процесс 1 | Процесс 2 | |
Создать процесс 2 | ||
Переключение контекста | ||
Выделение общей памяти | ||
Ожидание ввода А и В | ||
Переключение контекста | ||
Выделение общей памяти | ||
Ввести массив А | ||
Ожидание ввода А | ||
Ввести массив В | ||
Ожидание ввода В | ||
Ввод массива С | ||
Ожидание ввода С | ||
Переключение контекста | ||
а = а + в | ||
Переключение контекста | ||
с = с + а | ||
Вывод С | ||
Ожидание вывода С |
Для реализации идеи параллелизма вводят новую абстракцию внутри понятия процесс - поток исполнения.
Потоки исполнения процесса разделяют его программный код, глобальные переменные и системные ресурсы, но каждый поток имеет свой программный счетчик, свое содержимое регистра и свой собственный стек.
Теперь процесс оказывается как совокупность взаимодействующих потоков и выделенных ресурсов. Потоки могут порождать потомков. При рождении процесс имеет один потом. Этот параллелизм и приводит к выигрышу во времени.
Потоки различают процессы так же, как это делают традиционные процессы и могут быть использованы те же алгоритмы планирования.
Алгоритмы синхронизации
Взаимодействия процессов необходимо особым образом организовывать. В этом случае говорят об организации.