Скачать 0.75 Mb.
|
Тупик возникает при перестановке местами операций P(e) и P(b) в примере с процессами “читатель” и “писатель”, рассмотренном выше – ни один из этих потоков не сможет завершить начатую работу и возникнет тупиковая ситуация, которая не может разрешиться без внешнего воздействия.Тупиковые ситуации следует отличать от простых очередей хотя те и другие возникают при совместном использовании ресурсов и внешне выглядят схоже. Однако очередь – неотъемлемый признак высокого коэффициента использования ресурсов при случайном поступлении запросов а тупик – “неразрешимая” ситуация. Проблема тупиков требует решения следующих задач: -распознавание тупиков,-предотвращение тупиков,-восстановление системы после тупиков.Распознавание тупиковВ случаях, когда тупиковая ситуация образована многими процессами, использующими много ресурсов, распознавание тупика является не тривиальной задачей. Существуют формальные, программно-реализованные методы распознавания тупиков, основанные на ведении таблиц распределения ресурсов и таблиц запросов к занятым ресурсам, анализ которых позволяет обнаружить взаимные блокировки.Предотвращение тупиковТупики могут быть предотвращены на стадии проектирования и разработки программного обеспечения, чтобы тупик не мог возникнуть ни при каком соотношении взаимных скоростей процессов.Существует подход динамического предотвращения тупиков, заключающийся в использовании определенных правил при назначении ресурсов процессам (например, ресурсы могут выделяться в определенной последовательности, общей для всех процессов, как диск и принтер в примере).Восстановление системы после тупиковПри возникновении тупиковой ситуации не обязательно снимать с выполнения все заблокированные процессы, а можно:снять только часть из них, при этом освобождая ресурсы, ожидаемые остальными процессамивернуть некоторые процессы в область «свопинга»совершить «откат» некоторых процессов до т.н. контрольной точки, в которой запоминается вся информация, необходимая для восстановления выполнения программы с данного места.Контрольные точки расставляются в программе в местах, после которых возможно возникновение тупика. 11. Механизмы межпроцессного взаимодействия (каналы, очереди сообщений, разделяемая память) Каналы Один из методов взаимодействия между процессами получил название канал связи, конвейер или транспортер (pipe) - однонаправленный механизм передачи данных (неструктурированного потока байтов) между процессами без необходимости создания файла на диске. Канал представляет собой буфер в ОП, поддерживающий очередь байт согласно FIFO. Для программиста, использующего канал, этот буфер выглядит как безымянный файл, в который можно писать и читать, осуществляя тем самым обмен данными. Обычный канал получил развитие – появился именованный канал или именованный конвейер – зарегистрированный в системе, которой разрешено использовать различным процессам или потокам. Реализуется это путем создания одним, а чтения – другим процессом (потоком) файла типа FIFO с одним и тем же указанным в процессах именем. Именованный канал существует в ОС и после завершения процесса, поэтому после окончания использования он должен быть «отсоединен» или удален. Следует иметь в виду, что именованные каналы используют файловую систему только для хранения имени конвейера, а данные между процессами передаются через буфер в оперативной памяти, как и в случае обычного канала. Очереди сообщений Механизм очередей сообщений (queues) в целом схож с механизмом каналов, но позволяет процессам и потокам обмениваться структурированными сообщениями. При этом синхронизация осуществляется по сообщениям, то есть процесс, пытающийся прочитать сообщение, переводится в состояние ожидания в том случае, если в очереди нет ни одного полного сообщения (в распределенных системах, состоящих из нескольких процессоров и неразделяемых блоков памяти, использование таких средств синхронизации как блокирующие переменные, семафоры, сигналы является непригодным, а синхронизация реализуется с помощью очереди сообщений). Один или несколько процессов независимым образом могут посылать сообщения процессу – приемнику. При этом только процесс-приемник может читать и удалять сообщения из очереди, а процессы-клиенты имеют право лишь помещать в очередь свои сообщения. Таким образом, очередь работает только в одном направлении, а если необходима двухсторонняя связь, то следует создать две очереди. Работа с очередями сообщений имеет ряд отличий от работы с каналами: Очередь сообщений представляет возможность использовать несколько дисциплин обработки сообщений (FIFO, LIFO, приоритетный доступ, произвольный доступ); каналы обеспечивают лишь дисциплину FIFO Если при чтении сообщений оно удаляется из канала, то при чтении сообщения из очереди этого не происходит, и сообщение может быть прочитано несколько раз В очереди присутствуют не сами сообщения, а их адреса в памяти и размер. Эта информация размещается системой в сегменте памяти, доступном для всех задач, общающихся с помощью данной очереди Основные функции управления очередью: Создание новой очереди Открытие существующей очереди Чтение и удаление сообщений из очереди Чтение без последующего удаления Добавление сообщения в очередь Завершение использование очереди Удаление из очереди всех сообщений Определение числа элементов в очереди Разделяемая память(РП) Представляет собой сегмент физической памяти, отображенной в виртуальное адресное пространство двух или более процессов. Механизм разделяемой памяти поддерживается подсистемой виртуальной памяти, которая настраивает таблицы отображения адресов для процессов, запросивших разделение памяти так, что одни и те же адреса некоторой области физической памяти соответствует виртуальным адресам разных процессов. Для работы с разделяемой памятью используют четыре системных вызова: shmget - создает новый сегмент РП или находит существующий сегмент с тем же ключом shmat - подключает сегмент с указанным дескриптором к виртуальной памяти обращающегося процесса shmdt - отключает от виртуальной памяти ранее подключенный к ней сегмент с указанным виртуальным адресом начала shmctl - служит для управления разнообразными параметрами, связанными с существующим сегментом 12. Управление памятью: задачи управления, типы адресации Задачи по управлению памятью отслеживание свободной и занятой памяти выделение и освобождение памяти процессам вытеснение процессов из ОП на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов возвращение процессов в оперативную память, когда в ней освобождается место настройка адресов программы на конкретную область физической памяти зашита памяти (не позволит выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу). Функция, как правило, реализуется программно – аппаратными средствами Типы адресации Между первым и вторым этапами обращения к памяти имеют форму виртуального адреса. Множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство. Возможны различные варианты перехода от символьных имен к физическим адресам. Частным случаем отображения пространства имен является полная тождественность виртуального адресного пространства и физической памяти (система программирования генерирует абсолютную двоичную программу) Часть программных модулей любой ОС обязательно должны быть абсолютными двоичными программами (например, программы загрузки) 13. Распределение памяти: общие принципы управления памятью в однопрограммных ОС, распределение памяти фиксированными, динамическими, перемещаемыми разделами Распределение памяти в однопрограммных ОС: Непрерывное Оверлейное (структура с перекрытием) Непрерывное распределение – это самая простая и распространенная схема, согласно которой вся память условно может быть разделена на три области: Область, занимаемая ОС Область, в которой размещается исполняемый процесс Свободная область памяти Такая схема распределения влечет за собой два вида потерь вычислительных ресурсов: Потерю процессорного времени, потому что процессор простаивает, пока задача ожидает завершения операций ввода-вывода Потерю самой ОП, потому что далеко не каждая программа использует всю память, а режим работы в этом случае однопрограммный (+) Недорогая реализация, которая позволяет отказаться от многих второстепенных функций ОС, например, защита памяти – единственное, что следует защищать - программные модули и области памяти самой ОС) Оверлейное распределение. Если логическое адресное пространство программы должно быть больше, чем свободная область памяти, или весь возможный объем ОП, то вся программа может быть разбита на главный и второстепенные сегменты, а в ОП одновременно могут находится только ее главная часть и один или несколько неперекрывающихся сегментов (структуры с перекрытием) Образное представление организации памяти с использованием структуры с перекрытием Поочередно можно загружать в память ветви А-В, А-С-D и А-С-Е программы Мультипрограммные ОС Для организации мультипрограммного режима необходимо обеспечить одновременное расположение в ОП нескольких задач (целиком или частями) При решении этой задачи ОС должна учитывать целый ряд моментов: Следует ли назначать каждому процессу одну непрерывную область физической памяти или фрагментами Должны ли сегменты программы, загруженные в память, находится в одном месте в течении всего периода выполнения процесса или можно ее время от времени сдвигать Что следует предпринять, если сегменты программы не помещаются в имеющуюся память Распределение памяти фиксированными разделами Простейший способ управления ОП состоит в том, что память разбивается на несколько областей фиксированной величины, называемых разделами. Разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. В каждом разделе и в каждый момент времени может располагаться по одной задаче, и к каждому разделу в отдельности можно применить методы, используемые при распределении памяти в однопрограммных ОС. Очередной новый процесс, поступивший на выполнение помещается либо в общую очередь(а), либо в очередь к некоторому разделу(б) Подсистема управления памятью в этом случае выполняет следующие задачи: Сравнивает объем памяти, требуемый для вновь поступившего процесса, с размерами свободных разделов и выбирает подходящий раздел Осуществляет загрузку программы в один из разделов и настройку и настойку адресов (+): простота (-):Существенные потери памяти от внутренней фрагментации Учитывая то, что в каждом разделе может выполняться только один процесс, то уровень мультипрограммирования заранее ограничен числом разделов, так как независимо от размера программы она будет занимать весь раздел Применялся в ранних мультипрограммных ОС, сейчас – в ОСРВ за счет детерминированности вычислительного процесса и небольших затрат на реализацию Распределение памяти Перемещаемыми разделами Чтобы уменьшить потери от внутренней фрагментации, целесообразно размещать в ОП задачи «плотно», одну за другой, выделяя ровно столько памяти, сколько задача потребует (распределение памяти динамическими разделами) Обобщенный алгоритм: Вся память свободна. Каждому вновь поступающему процессу выделяется вся необходимая память (если достаточный объем памяти отсутствует, то процесс не создается) После завершения процесса память освобождается, и на это место может быть загружен другой процесс Задачами операционной системы при реализации данного метода управления памятью является: ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти, при поступлении новой задачи - анализ запроса, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения поступившей задачи, загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей, после завершения задачи корректировка таблиц свободных и занятых областей. Выбор раздела для вновь поступившей задачи может осуществляться по разным правилам. Например: "первый попавшийся раздел достаточного размера"(first fit) "раздел, имеющий наименьший достаточный размер"(best fit) "раздел, имеющий наибольший достаточный размер"(worst fit) (+) Значительная гибкость (-) Внешняя фрагментация памяти – наличие большого числа несмежных участков свободной память небольшого Распределение памяти динамическими разделами Одним из методов борьбы с фрагментацией является перемещение всех занятых участков («сжатие», «уплотнение», «дефрагментация») в сторону старших либо в сторону младших адресов, так, чтобы вся свободная память образовывала единую свободную область (рисунок). Дефрагментация может выполняться: При каждом завершении задачи (меньше однократной вычислительной работы) В случае, когда для вновь поступившей задачи нет свободного раздела достаточного размера (процедура выполняется реже) (+) более эффективное использование памяти (-) требует значительных временных затрат 14. Сегментное распределение памяти Первым среди разрывных методов распределения памяти был сегментный: Программу необходимо разбивать на части и уже каждой такой части выделять физическую память. Естественным способом разбиения программы на части является разбиение её на логические элементы – сегменты. Разбиение на сегменты позволяет дифференцировать способы доступа к разным частям программы(сегментам). Можно запретить обращаться с операциями записи и чтения в кодовый сегмент программы, а для сегмента данных разрешить только чтение. Разбиение программы на «осмысленные» части делает принципиально возможным разделением одного сегмента несколькими процессами. Логически обращение к элементам программы в этом случае будет состоять из имени сегмента и смещения относительно начала этого сегмента. Вся информация о текущем размещении сегментов задачи в памяти сводится в таблицу сегментов (таблицу дескрипторов сегментов задачи), формируемую для каждого исполняемого процесса. При размещении каждого из сегментов в оперативной или внешней памяти ОС отмечает в дескрипторе текущее местоположение сегмента. При передаче управления следующей задаче ОС должна занести в соответствующий регистр адрес таблицы дескрипторов сегментов этой задачи. Сама таблица дескрипторов сегментов, в свою очередь, также представляет собой сегмент данных, который обрабатывается диспетчером памяти ОС. Поэтому: общий объём виртуального адресного пространства задачи может превосходить объём физической памяти компьютера, на котором эта задача будет выполняться. Даже если потребности в памяти не так велики, можно размещать в памяти больше задач, поскольку любой задаче, как правило, все её сегменты одновременно не нужны. Решение проблемы замещения (определения того сегмента, который должен быть либо перемещён во внешнюю память, либо просто замещён новым) используются следующие дисциплины: FIFO (First In First Out) первый пришёл – первый ушёл LRU (Least Recently Used ) не используемый дольше других LFU (Least Frequently Used) используемый реже других Random-случайный выбор сегмента 15. Страничное распределение памяти страничный способ при котором все фрагменты задач считаются равными, причем длина фрагмента в идеале должна быть кратна степени 2, чтобы операции сложения можно было заменить операциями конкатенации. |
2. Структура информационного канала. Информационно-логическая структура доказывания 3 Процессуально-познавательные функции общей информационной модели механизма расследуемого события |
Программа государственного экзамена. Направление “Туризм” «Теория и организация туризма» Эволюция понятия «туризм». Виды туризма, их характеристика и перспективы развития. Типы классификации видов туризма. Специфика делового... |
||
План цикла по теме "химия и функции белков" Для педиатрического факультета Основные правила работы в биохимической лаборатории. Работа с мерной посудой, дозаторами, аппаратурой. Техника безопасности (сдача... |
Правительство Российской Федерации федеральное государственное автономное... Понятие бренд и его эволюция. Значение бренда для фирм и потребителей |
||
План: Основные понятия Функции гис классификация гис эволюция гис Это может быть план здания, карта экологического мониторинга территории, атлас земельного кадастра или карта природных ресурсов... |
План: Основные понятия Функции гис классификация гис эволюция гис Это может быть план здания, карта экологического мониторинга территории, атлас земельного кадастра или карта природных ресурсов... |
||
I. Понятие преступлений против несовершеннолетних и их законодательная эволюция Развитие законодательства об ответственности за преступления против несовершеннолетних в России |
Ooo "св-робот" Компьютерные курсы рабочая программа Переменные, операции, выражения в php. Типы переменных. Изменение типа переменной. Динамические переменные. Константы. Комментарии.... |
||
Теоретические вопросы: Общая характеристика организационных звеньев... Общая характеристика организационных звеньев (понятие, цели, функции). Формирование целевых подсистем |
Медицинский колледж Вопросы к квалификационному экзамену Мз рф, его структура и функции. Нормативные документы. Фармакологический и фармакопейный комитеты. Департамент государственного контроля... |
||
Студента 2 курса магистратуры группы «Медицинское право» очной формы... Понятие, эволюция и генезис оборота фальсифицированных лекарственных средств 14 |
Методические указания составлены в соответствии с рабочей программой... ПМ. 03. Выполнение работ по профессии «оператор электронно-вычислительных и вычислительных машин» |
||
Контрольная работа по дисциплине Трудовое право Понятие, содержание и структура коллективного договора. Порядок разработки его проекта |
Материально-техническое обеспечение кабинета №6 по профессии «Оператор... Материально-техническое обеспечение кабинета №6 по профессии «Оператор электронно-вычислительных и вычислительных машин» |
||
Российской Федерации Старооскольский технологический институт им. А. А. Угарова ПМ. 03. Выполнение работ по профессии «оператор электронно-вычислительных и вычислительных машин» |
Российской Федерации Старооскольский технологический институт им. А. А. Угарова ПМ. 03. Выполнение работ по профессии «оператор электронно-вычислительных и вычислительных машин» |
Поиск |