If (SmbWRITE) or (Очередь(PermWRITE)) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

If (SmbWRITE) or (Очередь(PermWRITE))



then Wait(PermREAD); {ожидание сигнала - читать разрешается}

READERS: = READEARS+1;

Signal(PermREAD); {сигнал, оповещающий о возможности чтения}

end;

Procedure Конец_Чтения;

Begin

READERS:=READERS-1;

If READERS=0 then Signal(PermWRITE); {сигнал, оповещающий о

возможности записи}

end;

Procedure Начало_Записи;

Begin

if (READERS>0) or (SmbWRITE)

then Wait(PermWRITE); {ожидание сигнала - писать разрешается}

SmbWRITE:=true

end;

Procedure Конец­_Записи;

Begin

SmbWRITE:=false;

If Очередь(PermREAD)

then Signal(PermREAD) {сигнал, оповещающий о возможности чтения}

else Signal(PermWRITE); {сигнал, оповещающий и возможности записи}

end;

Begin

READERS:=0;

SmbWRITE:=false

end;

Билет №11

Распределение статическими и динамическими разделами

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

Рис.2. Распределение памяти разделами с фиксированными границами


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

Основным недостатком такого способа распределения памяти является наличие достаточно большого объема неиспользуемой памяти (рис. 2). Такие потери называют фрагментацией памяти. Избежать этого можно двумя способами:

 

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

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

Управление внешней памятью

Управление внешней памятью реализуется с помощью файловой системы, которая содержит такие программные компоненты:

 

1. Средства взаимодействия с процессами пользователей, обеспечивающие прием и интерпретацию запросов на обработку файлов. В операционной системе MS-DOS это файл программы command.com.

2. Средства доступа к составным элементам файла.

3. Средства распределения внешней памяти для хранения данных.

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


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

Существуют такие логические структуры файлов:

 

1. Последовательная.

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

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


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

Рандеву в языке Ада

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

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

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

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

В случаях, когда вызовы к входу задачи-сервера осуществляют сразу несколько задач-клиентов, эти вызовы ставятся в очередь. Порядок обслуживания такой очереди зависит от соответствия конкретной реализации Ада-системы требованиям приложения D (Annex D) стандарта Ada95, в котором указываются требования для систем реального времени. Если реализация Ада-системы не обеспечивает соответствия этим требованиям, то очередь обслуживается в порядке поступления вызовов (FIFO - First-In-First-Out).

Билет № 12

1) Сегментный способ организации виртуальной памяти

Естественным способом разбиения программы на части является её разбиение на логические фрагменты - сегменты. Обычно сегментом является модуль или совокупность программных модулей. Логическое обращение к элементам программы будет означать указание имени сегмента, и смещения относительно его начала. Каждый сегмент, размещенный в памяти, имеет информационную структуру – дескриптор сегмента. Операционная система строит для каждого выполняемого процесса таблицу дескрипторов сегмента и при размещении каждого из сегментов в ОЗУ или внешней памяти в дескрипторе отмечается его текущее местоположение. Для этого используется бит присутствия. В поле «Адрес» диспетчер памяти записывает адрес физической памяти, с которого начинается сегмент, а в поле «Длина сегмента» его размер в байтах. Это поле используется для того, чтобы избежать наложения сегментов друг на друга и для того, чтобы контролировать, не обращается ли подзадача за пределы текущего сегмента (если это так то генерируется прерывание). Если сегмент находится во внешней памяти, то поля адреса и длины используются для указания адреса сегмента в координатах внешней памяти. В дескрипторе сегмента также содержатся данные о его типе (код или данные), права доступа, отметка об обращениях к сегменту. При передаче управления следующей задаче операционная система заносит в соответствующий регистр микропроцессора адрес таблицы дескрипторов сегментов этой задачи. Сама таблица дескрипторов сегмента также является сегментом данных, которые обрабатываются диспетчером памяти.



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 164; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.82.167 (0.006 с.)