Третий вопрос – это буферизация

Для хранения информации при передаче между процессами используется буфер. Можно выделить следующие виды буферов:

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

ü Буфер ограниченной емкости. Размер буфера равен n то есть линия связи не может хранить до момента получения более чем n единиц информации. Если в момент передачи данных в буфере хватает места, то передающий процесс не должен ничего ожидать. Информация просто копируется в буфер. Если же в момент передачи данных буфер заполнен или места недостаточно, то необходимо задержать работу процесса отправителя до появления в буфере свободного пространства.

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

ü Четвертый вопрос – это модели передачи данных по каналам связи.

ü Существует две модели— поток ввода -вывода и сообщения. При передаче данных с помощью потоковой модели, операции передачи/приема информации не интересуются содержимым данных. Процесс, прочитавший 100 байт из линии связи, не знает и не может знать, были ли они переданы одновременно, или порциями по 20 байт, пришли они от одного процесса или от разных. Данные представляют собой простой поток байтов, без какой-либо их интерпретации со стороны системы. Примерами потоковых каналов связи могут служить pipe и FIFO.

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

ü Если разрешить процессу, создавшему трубу, сообщать о ее местонахождении в системе другим процессам, сделав вход и выход трубы каким-либо образом видимыми для всех остальных, например, зарегистрировав ее в операционной системе под определенным именем, мы получим объ­ект, который принято называть FIFO или именованный pipe. Именованный pipe может использоваться для организации связи между любыми процессами в системе.

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

ü И потоковые линии связи, и каналы сообщений всегда имеют буфер конечной длины.





Пятый вопрос – это надежность средств связи.

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

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

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

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

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

Каким образки достигается надежность в вычислительной системе? Например,  при передаче сообщениями. Для обнаружения повреждения информации каждое передаваемое сообщение снабжается некоторой контрольной суммой, вычисленной по посланной информации. При приеме сообщения контрольную сумму вычисляется заново и проверятся ее соответствие пришедшему значе­нию. Если данные не повреждены, то контрольные суммы совпадают и подтверждается правильность их получения. Если данные повреждены (контрольные суммы не совпадают), и считается, что сообщение не поступило. Вместо контрольной суммы также используется специальное кодирование передаваемых данных с помощью кодов, исправляющих ошибки. Такое кодирование позволяет при числе искажений информации, не превышающем некоторого значения, восстановить первоначальные неискаженные данные. Для гарантии правильного порядка получения сообщений их нумеруют. При приеме сообщения с номером, не соответствующим ожидаемому, с ним поступают, как с утерянным.

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

Шестой вопрос – это вопрос прекращения обмена.

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

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

Нити

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

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

Процесс, содержащий всего одну нить исполнения считается «традиционным процессом».

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

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

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

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

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: