Концепция ресурсов

Тупики

Концепция работы семафора

Семафор

Механизмы синхронизации.

Строгое чередование

Запрет прерываний

while

{

запретить прерывания

critical section

разрешить прерывания

remained section

}

переменная «замок».

Берётся переменная доступная всем процессам.

1. процесс может войти в критическую секцию только тогда, когда значение этой переменной равно 0.

2. при входе 0 -> 1

3. другой процесс видит что установлена 1.

4. а другой процесс видит, что в критической секции 1 и не может туда войти

как только там образовался 0, то «вход свободен»

в закрытую секцию по очереди заходят процессы.

Shared turn = 0;

while (some condition)

{

while (harm!=i);

critical section;

turn = 1-I;

remainder section;

}

аппаратная поддержка взаимоисключения -

позволяет упростить алгоритмы и повысить их эффективность

многие вычисления в процессорах позволяют проверить и изменить значение машинного слова.

Команда Swap.

void Swap (int *a, int *b)

{

int tmp = *a;

*a=*b;

*b=tmp;

}

key

shared int lock=0

int key;

Пусть есть 2 процесса:

процесс с высоким приоритетом

с низким

пусть работает 2 процесс, системе появляется 1 поэтому 2 перестает работать.

процесс 2 находится в критической секции, появляется 1, но не может войти к ерит. секцию, при этом 1 забрал процессор. -> происходит зависание

в 60-х годах предложен механизм, использовавший семафор.

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

P(s): while (s==0)

s=s-1;

--------------------------

­­­­­­­V(s): s=s+1

Переменные семафора применяются для решения задач организации взаимодействия процессов.

Очень часто переменная s располагается в коде ядра ОС

6.1.2. решение проблемы производитель -> потребитель

пусть 2 процесса обмениваются информацией через буфер ограниченного размера.

процесс 2
процесс 1
R1
ждет
удерживает
R2
Если средствами синхронизации пользоваться некорректно, то могут возникнуть непредвиденные затруднения.

Такая проблема может возникнуть в базах данных.

Тупики аппаратные и программные.

Программные тупики.

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

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

запрос ресурсов – request

использовать ресурс

освободить ресурс

Если ресурса нет, то процесс должен ждать или блокируется


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



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