Составители:
Рубрика:
РЕАЛИЗАЦИЯ МОДУЛЯ СЕРВЕРА ВРЕМЕНИ
module TimeServer
op get_time() returns int; # вызов дать времени
op delay(int); # вызов задержки
op tick(); # вызывается обработчиком прерывания часов
body
process Timer {
int tod=0; # время суток
while(true)
# если для delay(waketime) имеем waketime<=tod,
# то пробуждение, иначе задержка
in get_time() returns time --> time=tod;
[ ] delay(waketime) and waketime<=tod -->
[ ] tick() --> { tod=tod+1; [запуск таймера]}
ni
}
end TimeServer
Здесь операции get_time и delay экспортируются для клиентов,
а tick — для обработчика прерывания часов. При вызове delay
используется условие синхронизации.
В следующем примере наряду с условием синхронизации ис-
пользуется выражение планирования. Это пример распределения
ресурсов по принципу “кратчайшее задание”; в енм фигурирует
условие планирования by time, что при выполнении условия син-
хронизации (в данном случае and free) ведет к первоочередному
выполнению наиболее раннего вызова с минимальным параметром
time.
РАСПРЕДЕЛЕНИЯ РЕСУРСОВ ПО ПРИНЦИПУ
“КРАТЧАЙШЕЕ ЗАДАНИЕ”
module SJN_Allocator
op request(int time), release();
body
process SJN {
bool free=true;
# free - занятость ресурса,
86
Страницы
- « первая
- ‹ предыдущая
- …
- 83
- 84
- 85
- 86
- 87
- …
- следующая ›
- последняя »