Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.498


Таненбаум Э.- Архитектура компьютера. стр.498

out("task-bag", job);

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

1n("task-bag", ?job);

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

Существуют различные реализации Linda в мультикомпьютерных системах. Во всех реализациях ключевым является вопрос о том, как распределить кортежи по машинам и как их при необходимости находить. Возможные варианты — широковещание и каталоги. Репликация — это тоже важный вопрос. Подробнее об этом см. [24].

Огса

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

Одна из систем, в которых реализован этот подход, называется Огса [16, 18, 19]. Огса — это традиционный язык программирования (в его основе лежит язык Modula 2), обладающий двумя новыми свойствами — поддержкой объектов и возможностью создавать новые процессы. Объект в Огса — это абстрактный тип данных, аналогичный объекту в Java или пакету в Ada. Объект инкапсулирует внутренние структуры данных и пользовательские методы, которые называются операциями. Объекты пассивны, то есть они не содержат программных потоков, которым можно посылать сообщения, Процессы получают доступ к внутренним данным объекта путем вызова его методов.

Каждый метод в Огса состоит из списка пар предохранитель-блок операторов. Предохранитель — это логическое выражение, которое может принимать

значение истина (true) или ложь (false). Когда вызывается операция, все ее предохранители оцениваются в произвольном порядке. Если все они ложные, вызывающий процесс приостанавливается до тех пор, пока один из них не станет истинным. При нахождении такого предохранителя выполняется следующий за ним блок операторов. В листинге 8.2 показан объект stack с двумя операциями, push и pop.

Листинг 8.2. Упрощенный объект stack с внутренними данными и двумя операциями Object implementation stack;

top:integer; # хранилище для стека

stack:аггау[integer O..N-l]of integer;

operation push(item: integer); # функция, которая ничего не возвращает begin

stack[top] := item; # помещаем элемент в стек

top := top +1; # увеличение указателя стека

end;

operation рор(): integer; # функция, которая возвращает целое begin

guard top>0 do # приостанавливает работу, если стек пуст

top := top - 1; # уменьшает указатель стека

return stackEtop]; # возвращает вершину стека


⇐ Предыдущая страница| |Следующая страница ⇒

.