Составители:
Рубрика:
число читателей уменьшаем на единицу и если оказалось их число,
равным нулю, то разрешается запус тить один процесс-писатель;
3) RW_Contr.request_write — запрос записи: процесс-писатель
хочет писать: если nr>0 или nw>0, ему приходится ждать в очереди
oktowrite, иначе число писателей увеличивается на единицу;
4) RW_Contr.release_write — уведомление о конце записи:
имеется возможность прос игн ализ ировать одного писателя и о за-
пуске всех читателей.
§ 9. Распределение ресурсов по приоритетам
Здесь воспользуемся приоритетным оператором wait(cv,rank),
который располагает приостановленные процессы в порядке возрас-
тания ранга.
Схема “самое короткое задание” предпол агает выполнения зада-
ний в порядке возрастания требуем ого ресурса врем ени .
Для этого требуется две операции: request — запросить,
release — освобод ить.
После получения и использования ресурса процесс вызывает
процедуру release, в результате чего ресурс передается проц есс у,
который будет использовать его самое короткое время; если про-
цессов больше нет, ресурс освобождается.
monitor Shortest_Job {
bool free=true;
cond turn; # получает сигнал, когда ресурс доступен
procedure request(int time) {
if (free)
free=false;
# - процесс получает требуемый ресурс
else
wait(turn,time);
# - процесс ждет в очереди по приоритетам
}
procedure release() {
if (empty(turn))
free=true;
else
signal(turn);
26
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »