Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.498out("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]; # возвращает вершину стека |