Критические области. Семафоры. Мьютексы. Мониторы.

2)

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

Критические области. Семафоры. Мьютексы. Мониторы. - student2.ru

В обоих случ имеем 3 потока,на рис. а) каждый имеет собств адрес пространство, на рис. б)потоки раздел един адрес пр-во.

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

Кажд поток может вызыв различ проц-ры и иметь различ протокол выполн процесса — поэтому кажд потоку необх собств стек.

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

Арг-ты использ потоков: 1)возможь совмест использ параллел объект адрес прост-ва и всех содерж в нем эл-ов. 2)легкость их созда и уничтож(в 100 раз <) 3)произв-сть4)в кач-ве примера текст ред-р.

3)

Иерархия процессов. Процс мож созд дочерн процс,он так же мож созд процс формируя иерарх процс-ов. У процс может быть 1 родит и сколько угодно «детей». В UN процс, все его «дети» и дальнейш потом образ группу про­цессов.Сигнал, посылаем пользоват с клав, доставляется всем чле­нам группы, взаимодейств с клав в данн мом.Кажд из процс может пе­рехват сигнал, игнорир его или вып др действ,предусмот­р по умолч.в Win не сущест понятия иерарх процс и все процс равноправны. созде процс, при кото­ром родительский процс получ спец маркер ( деск­риптор), позвол контрол дочер процс. Но маркер мож пе­редать др-му процс, нарушая иерархию. В UNIX это невозможно.

4)

Реал-ия потоков в простр польз-ля.

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

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

Недостатки:

Проблема реализации блокир сист запросов.Ошибка из-за отсутствия страницы.

При запуске 1 потока ни один другой поток не будет запущен, пока 1-ый поток добровол не отдаст процессор.

Реал-ия потоков в простр ядра.

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

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

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

Основным недостатком управления потоками в ядре является существенная цена системных запросов, поэт постоян ошибки с потоками (созда, заверш и т.п.) приведут к увелич накладных расходов.

5)

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

6)

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

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

При рассмотрении архитектуры микропроцессора мы выяснили, что стек обсуживается тремя регистрами:SS, SP и BP. Микропроцессор автоматич работает с регистр SS и SP в предположении, что они всегда указывают на вершину стека. По этой причине их содержимое изменять не рекомендуется. Для осуществ произвол доступа к данным в стеке архитектура микропроцессора имеет специальный регистр BP(Base Point- указатель базы). Перед использо этого регистра для доступа к данным стека его содержимое необходимо правильно инициализировать, что предполагает формирование в нем адреса, который бы указывал непосредственно на переданные данные.

Таблица процессов.

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

Виртуае адресн пр-во - это система адресации , использ в соврем ОС - в частности - при работе ОС с процессами (/потоками). Такая сист удобна по различ причинам - в том числе и потому, что позвол изолир "рабочие пространства" процессов друг от друга .Объём виртуал адрес прост-ва завис от архитектуры компьютера и ОС. архитектура опред, сколько бит использ для адресации. ависит от ОС, так как в завис от реализации ОС может накладывать дополнит огранич, помимо огранич архитектуры. Виртуад адрес про-во не зависит от:1)объема реал физич(оператив) памяти, установ в комп.2)объема жёсткого диска

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

Критические области. Семафоры. Мьютексы. Мониторы.

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

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

Основ способом предотвращ проблем явл запрет одновремй записи и чтения раздел данных более чем 1 процс.

Часть программы, в которой есть обращ к совместно использ данным, назыв критич областью или критич секцией. Если нам удастся избе­жать одновремен нахождения двух процессов в критич обл, мы сможем избежать состязаний. Несмотря на то что это требование исключает состязание, его недостаточно для прав совмест работы параллел процессов и эффектив использ общих данных. Для этого необходимо выполнение 4 условий:1)2 процс не должны одноврем наход в критиче областях 2)В программе не должно быть предполож о скорости или кол-веве процессоров 3)Процесс, находящ вне критич обл, не может блокир другие процессы.4)Невозмож ситуация, в которой процесс вечно ждет попадания в критич область.

семафоры - тип переменых, знач котор может быть 0 (в случ отсутств сохран сигналов активизации) или некоторым положит числом, соответств кол-ву отложенных сигналов активации.

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

Мьютекс — переменная, кот может находиться в одном из двух сост: блокированном или неблок.

Значение мьютекса устанавл двумя процедурами. Если поток (или процесс) собирается войти в критич обл, он вызывает проц. mutex_lock.

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

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

14. Критические области. Взаимное исключение с активным ожиданием.

Взаимное исключение с активным ожиданием.

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

Запрещение прерываний.Самое простое реш закл в запрещ всех прерываний при входе процесса в критич обл и разреш прерываний при выходе из обл-и.

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

Петерсона скопируешь картинку TSL- Процессор, выполн-ий команду TSL, блокирует шину памяти, чтобы остальн проц-ры не могли обратиться к пам.Команда TSL. Рассм реш, требующее апп обеспеч. Многие комп-ы, особенно разработ-ые с расчетом на нескольк проц-ров, имеют команду TSL RX.LOCK(Test and Set Lock), кот дейст следующ образом. В регистр RX считывается содержимое слова памяти lock, а в ячейке пам lock хранится некот ненулевое значение. Гарантируется, что операция считывания слова и сохранения неделима - др процесс не может обратиться к слову в пам, пока команда не выполнена.

Активация планировщика (когда выполняется планирование).

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

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

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

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

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

Наши рекомендации