Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Синхронизация задач в СРВ. 1 страница



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

В большинстве СРВ их элементы способны передавать/принимать синхронные и асинхронные сообщения.

Часть ОП в СРВ называется «почтовый ящик».

- Новое сообщение стирает старое (даже когда старое сообщение не обработано);

- Новое сообщение – в конец очереди сообщений

- Стандартный подход – FIFO.

Связь между процессами – IPC(Inter Process Communication) – ключевой момент при разработке приложений в СРВ. В СРВ каждый процесс выполняет одну определенную функцию. В QNX простой, но функциональный IPC.

ОС передачи сообщений.

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

Сообщение – пакет байтов, передающихся от одного процесса к другому.

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

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

Формы связи между процессами:

1 Сообщения (синхронная связь);

2 Прокси (особый вид передачи сообщений, которые нужны для оповещения и событиях, при которых процесс-отправитель не нуждается во взаимодействии с процессом-получателем);

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

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

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

3 Сигнал выдается процессу при наступлении заранее определенного для данного сигнала события. Процесс может выдать сигнал самому себе.

Существует три варианта обработки сигналов:

– если процессу не предписано выполнение каких-либо специальных действий по обработке сигнала, то по умолчанию поступление сигнала прекращает выполнение процесса;

– процесс может проигнорировать сигнал, тогда выдача сигнала не влияет на работу процесса;

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

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

Определение способа обработки сигналов задается функцией Signal(). Способ можно изменить в любое время выполнения процесса.

Обработчик сигналов может быть запущен во время выполнения любой функции в программе. Если процессу не требуется возврата управления от обработчика сигнала в прерванную точку, то в обработчике сигналов может быть использована функция Longjmp().

Блокировка сигналов. Иногда необходимо задержать выдачу сигнала, не меняя способа его обработки. Для этого в QNX имеется большой набор функций. Во время работы обработчика сигналов QNX автоматически блокирует обрабатываемый сигнал, это значит, что не требуется организовывать вложенные вызовы обработчика сигналов. Таким образом, каждый вызов обработчика сигналов не прерываем остальными сигналами данного типа. При нормальном возврате управления от обработчика сигнал автоматически разблокируется.

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

– процесс разблокируется;

– выполняется обработка сигнала;

– возвращает управление с кодом ошибки предыдущему процессу (функции Send(), Receive(), Reply()).

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

– нормальное завершение первоначального запроса (отправитель будет уведомлен о том, что сообщение было обработано надлежащим образом);

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

Причины взаимодействия процессов

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

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

· Модульная конструкция какой-либо системы. (Микроядерная ОС) Когда различные ее части представляют собой отдельные процессы, взаимодействующие путем передачи сообщений через микроядро.

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

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

· Сигнальные. Передается минимальное количество информации – один бит, "да" или "нет". Используются, как правило, для извещения процесса о наступлении какого-либо события. Степень воздействия на поведение процесса, получившего информацию, минимальна.

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

· Разделяемая память. Два или более процессов могут совместно использовать некоторую область адресного пространства. Созданием разделяемой памяти занимается операционная система. Использование разделяемой памяти для передачи/получения информации осуществляется с помощью средств обычных языков программирования, в то время как сигнальным и канальным средствам коммуникации для этого необходимы специальные системные вызовы. Разделяемая память представляет собой наиболее быстрый способ взаимодействия процессов в одной вычислительной системе.

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

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

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

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

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

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

Про недетерминированный набор программ (и активностей вообще) говорят, что он имеет race condition (состояние гонки, состояние состязания).

P: x=2 Q: x=3

y=x-1 y=x+1

В результате их псевдопараллельного выполнения, если переменные x и y являются для активностей общими возможны четыре разных набора значений для пары (x, y): (3, 4), (2, 1), (2, 3) и (3, 2)

В приведенном выше примере процессы состязаются за вычисление значений переменных x и y.

Важным понятием при изучении способов синхронизации процессов является понятие критической секции (critical section) программы. Критическая секция – это часть программы, исполнение которой может привести к возникновению race condition для определенного набора программ. Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо организовать работу так, чтобы в каждый момент времени только один процесс мог находиться в своей критической секции, связанной с этим ресурсом.

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

P(S): пока S == 0 процесс блокируется; S = S – 1;

V(S): S = S + 1;

Эта запись означает следующее: при выполнении операции P над семафором S сначала проверяется его значение. Если оно больше 0, то из S вычитается 1. Если оно меньше или равно 0, то процесс блокируется до тех пор, пока S не станет больше 0, после чего из S вычитается 1. При выполнении операции V над семафором S к его значению просто прибавляется 1. В момент создания семафор может быть инициализирован любым неотрицательным значением.

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

В мониторах было введено понятие условных переменных, над которыми можно совершать две операции wait и signal, отчасти похожие на операции P и V над семафорами.

Если функция монитора не может выполняться дальше, пока не наступит некоторое событие, она выполняет операцию wait над какой-либо условной переменной. При этом процесс, выполнивший операцию wait, блокируется, становится неактивным, и другой процесс получает возможность войти в монитор. Когда ожидаемое событие происходит, другой процесс внутри функции-метода совершает операцию signal над той же самой условной переменной. Это приводит к пробуждению ранее заблокированного процесса, и он становится активным.

14.Виды информационных технологий. Этапы проектирования информационной системы.

Информационная технология — это процесс, использующий совокупность средств и методов сбора, обработки и передачи данных для получения информации нового качества о состоянии объекта, процесса или явления. Цель информационной технологии — производство информации для ее анализа человеком и принятия на его основе решения по выполнению какого-либо действия.

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

На уровне операционной деятельности решаются следующие задачи:

- обработка данных об операциях, производимых фирмой;

- создание периодических контрольных отчетов о состоянии дел в фирме;

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

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

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

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

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

- оценка планируемого состояния объекта управления;

- оценка отклонений от планируемого состояния;

- выявление причин отклонений;

- анализ возможных решений и действий.

Информационная технология управления направлена на создание различных видов отчетов.

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

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

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

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

1) система поддержки принятия решений в роли вычислительного звена и объекта управления;

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

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

Дополнительно к этой особенности информационной технологии поддержки принятия решений можно указать еще ряд ее отличительных характеристик:

1) ориентация на решение плохо структурированных (формализованных) задач;

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

3) направленность на непрофессионального пользователя компьютера;

4) высокая адаптивность, обеспечивающая возможность приспосабливаться к особенностям имеющегося технического и программного обеспечения, а также требованиям пользователя.

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

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

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

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

Этапы проектирования информационной системы

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

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

Этапы проектирования информационных систем:

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

Стадии и этапы создания ИС в общем случае следующие:

1. Формирование требований к системе.

2. Разработка концепции ИС.

3. Техническое задание на разработку системы.

4. Эскизный проект.

5. Технический проект.

6. Пилотный проект.

7. Рабочая документация.

8. Ввод в действие системы.

9. Сопровождение ИС.

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

Требования к содержанию документов

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

Эскизный проект заканчивается выпуском пояснительной записки и содержит такие разделы как:

1)Общие положения.

2)Описание процесса деятельности системы.

3)Основные технические решения.

4)Мероприятия по подготовке объекта автоматизации к вводу системы в действие.

Стадии и этапы разработки автоматизированной системы определяются ГОСТом 34.601-90 и называется «Автоматизированные системы. Стадии создания».

1. Формирование требований к системе:

1.1. Обследование объекта и обоснование необходимости создания АС.

1.2. Формирование требования к АС.

1.3. Оформление отчета о выполненной работе и заявка на разработку АС.

2. Разработка концепций ИС:

2.1. Изучение объекта.

2.2. Проведение необходимых научно-исследовательских работ.

2.3. Разработка вариантов концепции АС, удовлетворяющих требованиям пользователей.

2.4. Оформление отчета по выполненной работе.

3. Разработка и утверждение технического задания на создание АС:

3.1. Разработка предварительных проектных решений по системе и её частям.

3.2. Разработка документации на АС и её части.

4. Технический проект:

4.1. Разработка проектных решений по системе и её частям.

4.2. Разработка документации на АС и её части.

4.3. Разработка и оформление документации на поставку изделий для комплектования АС и/или технических требований на их разработку.

4.4. Разработка заданий на проектирование в смежных частях проекта объекта автоматизации.

5. Рабочая документация:

5.1. Разработка рабочей документации на систему и её части.

5.2. Разработка или адаптация программ.

6. Ввод в действие:

6.1. Подготовка объекта к автоматизации и вводу в действие АС.

6.2. Подготовка персонала.

6.3. Комплектация АС поставляемыми изделиями (программные и технические средства, программно-технические комплексы, информационные средства).

6.4. Строительно-монтажные работы.

6.5. Пусконаладочные работы.

6.6. Проведение предварительных испытаний.

6.7. Проведение опытной эксплуатации.

6.8. Проведение приемочных испытаний.

7. Сопровождение АС:

7.1. Выполнение работ в соответствии с гарантийными обязательствами. 7.2. Послегарантийное обслуживание.

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

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

Обычно выделяют следующие этапы создания ИС:

1) формирование требований к системе

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

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

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

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

· требуемой пропускной способности системы;

· требуемого времени реакции системы на запрос;

· безотказной работы системы;

· необходимого уровня безопасности;

· простоты эксплуатации и поддержки системы.

2) проектирование

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

Параллельно с проектированием схемы базы данных выполняется проектирование процессов, чтобы получить описание всех модулей ИС. Оба эти процесса проектирования тесно связаны, поскольку часть бизнес-логики обычно реализуется в базе данных (ограничения, триггеры, хранимые процедуры).

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

Конечными продуктами этапа проектирования являются:

· схема базы данных;

· набор спецификаций модулей системы (они строятся на базе моделей функций).

Этап проектирования завершается разработкой технического проекта ИС.

3) реализация - осуществляется создание программного обеспечения системы, установка технических средств, разработка эксплуатационной документации.

4) тестирование

Этап тестирования обычно оказывается распределенным во времени.

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

· обнаружение отказов модуля (жестких сбоев);

· соответствие модуля спецификации (наличие всех необходимых функций, отсутствие лишних функций).

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

Далее группа модулей тестируется на надежность работы

Тесты имитации отказов системы, а во-вторых, показывает, насколько хорошо система восстанавливается после сбоев программного обеспечения, отказов аппаратного обеспечения.





Дата публикования: 2015-10-09; Прочитано: 515 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.024 с)...