Код документа: RU2142158C1
Настоящее изобретение относится к распределенным вычислительным системам "клиент-сервер". Такие вычислительные системы находят применение в системах типа мультимедиа.
Ранние вычислительные системы представляли собой изолированные системы, состоящие в основном из больших ЭВМ. Позднее отдельные вычислительные системы из больших ЭВМ связывались между собой или группировались для того, чтобы решать большие вычислительные задачи, например обслуживать большое количество пользователей в режиме разделения времени. С появлением персональных компьютеров оказалось, что большое количество изолированных вычислительных систем с относительно низкой производительностью управлялись непосредственно их пользователями. Вскоре большое количество этих персональных компьютеров были объединены в сети компьютеров, что обеспечило разделение ресурсов и возможность передачи данных пользователям индивидуальных персональных компьютеров, а также обмен данными между этими пользователями и уже существующими большими ЭВМ.
Одна из форм такой сети содержит центральный компьютер, называемый сервером, который, как правило, имеет в своем составе большой объем массовой памяти. Программы, используемые пользователями сети, хранятся централизованно в массовой памяти сервера. Когда пользователю требуется запустить программу, его компьютер посылает запрос на пересылку из сервера копии этой программы к себе. В ответ на этот запрос сервер посылает копию требуемой программы из своей массовой памяти в основную память персонального компьютера этого пользователя и далее программа выполняется в персональном компьютере. Данные также могут централизованно храниться в сервере и находиться в распоряжении всех пользователей сети. Эти данные хранятся в массовой памяти сервера и к ним возможен доступ со стороны всех пользователей сети по их запросу. Сервер также может служить центральным узлом для передачи сообщений (электронная почта) между пользователями сети. Сервер в такой системе осуществляет функции хранения и распределения программ, данных и сообщений, но его вычислительные ресурсы не используются для решения текущих вычислительным задач какого-либо пользователя, т.е. пользователь не может рассчитывать на то, что вычислитель сервера будет выполнять какие-либо задачи обработки по программе, выполняемой в персональном компьютере. Хотя такие сети выполняют важную функцию, они не являются распределенными вычислительными системами, в которых соединенные между собой компьютеры объединяются для выполнения единой вычислительной задачи.
Для усовершенствования таких сетей конфигурацию сети можно задать таким образом, что пользователи в сети могут запрашивать сервер сети или другой персональный компьютер, присоединенный к сети, выполнить программу. Это называется удаленным выполнением, потому что компьютер (сервер или другой персональный компьютер), удаленный от источника запроса, в ответ на этот запрос осуществляет выполнение программы. В такой системе программа, удаленное выполнение которой запрашивается, либо посылается от источника запроса в удаленный компьютер, либо извлекается из сервера по запросу от удаленного компьютера. Когда программа принята, она выполняется. Таким образом несколько компьютеров могут быть объединены для совместной работы по выполнению вычислений.
Не так давно существовали программы, которые распределяли текущие вычислительные задачи, необходимые для выполнения единой вычислительной функции. Например, в такой программе как управление базой данных, когда база данных хранится в массовой памяти сервера, при обращении пользователя к базе данных часть программы управления базой данных, которая имеется в персональном компьютере данного пользователя, формирует запрос на обращение, который пересылается в сервер. Часть программы управления базой данных, которая находится в сервере, обрабатывает это обращение, например, анализирует запрос на обращение, определяет местоположение заданных в за просе данных в устройстве массовой памяти сервера, обращается к этим данным и по сети отсылает результаты в тот персональный компьютер, который формировал запрос. Далее часть программы управления базой данных в персональном компьютере обрабатывает данные, полученные от сервера, то есть выполняет их форматирование и отображает на экране или распечатывает на принтере. Когда сервер осуществляет обработку запроса, персональный компьютер свободен и может выполнять другую обработку, а когда персональный компьютер формирует запрос на обращение и обрабатывает результирующие данные, полученные от сервера, сервер свободен и может обрабатывать запросы на обращение от других персональных компьютеров.
Другие виды программ также могут быть легко приспособлены к этому типу распределенных вычислений, называемому вычислением по типу "клиент-сервер". Распределение задач по обработке между персональным компьютером и сервером увеличивает эффективность вычислений в сети. Такие вычислительные системы "клиент-сервер" и сети для удаленного выполнения могут быть названы распределенными вычислительными системами, поскольку несколько компьютеров (сервер и/или соответствующие периферийные компьютеры) объединяются для выполнения вычислительной функции, например для управления базой данных.
Не так давно были предложены вещательные программы типа мультимедиа, в частности программы интерактивного телевидения (ТВ). Программы интерактивного ТВ обеспечат зрителю телевизионной программы возможность взаимодействия с этой программой. В интерактивной ТВ системе в центральной вещательной станции (ТВ сеть, Местная ТВ студия, кабельная система и т.д) будет иметься центральный компьютер, соответствующий серверному компьютеру, который будет формировать сигналы, относящиеся к программе интерактивного ТВ, подлежащей передаче, одновременно с ТВ сигналами звука и изображения. Эти сигналы несут данные, представляющие интерактивную ТВ программу, и могут содержать команды, рабочие программы и/или данные для управления взаимодействием со зрителем. Там, где находится зритель, будет иметься компьютер, соответствующий компьютеру-клиенту, который будет получать команды, рабочую программу и/или данные от центрального компьютера, выполнять рабочую программу, обрабатывать полученные данные, принимать данные, вводимые пользователем, и обеспечивать пользователя данными на ТВ экране. Введенные пользователем данные могут быть посланы обратно в компьютер центральной вещательной станции, давая возможность пользователю взаимодействовать с программой интерактивного ТВ.
Патент USA 4965825 описывает систему интерактивного ТВ, в которой центральная вещательная станция передает сигналы, несущие команды, рабочую программу и данные в интервалах гашения обратного хода кадровой развертки для приема компьютерными системами, находящимися у зрителей. Компьютер у зрителя извлекает команды, рабочую программу и данные и выполняет программу обработки данных и взаимодействия с пользователем. Такая система сравнима с функцией удаленного выполнения распределенной вычислительной системы, описанной выше, в которой компьютер зрителя включен в программу интерактивного ТВ и управляется из центральной станции.
Во всех вышеописанных системах центральный компьютер управляет запросами периферийных компьютеров, которые подсоединены к нему через сеть, или отвечает на эти запросы, то есть периферийный компьютер (персональный компьютер) запрашивает удаленное выполнение программы, файл или сообщение от другого компьютера или посылает запрос на обращение к другому компьютеру. Только в ответ на запрос другой компьютер производит ответные действия, например, осуществляет удаленное выполнение программы, выдает запрошенный файл, сообщения или найденные в результате поиска данные. Кроме того, в общем случае персональный компьютер должен иметь все ресурсы, необходимые для полного или почти полного выполнения требуемой программы, при этом сервер действует лишь как дополнительное устройство хранения или, самое большее, как распределитель вычислительных заданий.
Авторы данного изобретения предлагают распределенную вычислительную систему, в которой серверный компьютер непрерывно формирует поток данных. Этот поток играет роль устройства массовой памяти для принимающих его компьютеров-клиентов. Этот поток данных содержит повторяющиеся данные, представляющие рабочую программу, и данные, которые относятся к прикладной задаче, решаемой на основе распределения функций, в которой может участвовать компьютер-клиент. Средства транспортировки, включающие высокоскоростную однонаправленную линию связи, переносят поток данных от сервера к компьютеру- клиенту. Компьютер-клиент принимает этот поток данных, извлекает из него данные, относящиеся к распределенным вычислениям, и выполняет прикладную задачу на основе распределения функций (распределенную вычислительную прикладную задачу).
В соответствии с принципами настоящего изобретения распределенная вычислительная система содержит источник непрерывного потока данных, который включает повторяющиеся данные, представляющие прикладную задачу, решаемую на основе распределения функций, и компьютер-клиент, который принимает этот поток данных для извлечения из него данных, представляющих указанную прикладную задачу, и решения этой прикладной задачи.
В распределенной вычислительной системе, соответствующей изобретению, для системы компьютеров-клиентов нет необходимости иметь все ресурсы, в частности, основную память и массовую память, необходимые для выполнения всей программы. Массовая память не требуется потому, что ее функцию выполняет поток данных, а требования к основной памяти снижены, поскольку в памяти необходимо хранить лишь ту часть программы, которая выполняется в текущий момент. Когда выполнение части программы в текущий момент завершено, объем памяти, который она занимала, освобождается, и из потока данных извлекается следующая часть рабочей программы, которая загружается в освободившийся объем памяти и затем начинает выполняться.
Кроме того, распределенная вычислительная система, соответствующая настоящему изобретению, дает пользователю компьютера-клиента возможность выбора на предмет участия в решении распределенной вычислительной прикладной задачи. Если требуется принять участие, то компьютер-клиент извлекает данные, относящиеся к распределенной вычислительной задаче, и выполняет эту задачу, как описано выше. Если участия не требуется, то поток данных просто игнорируется и выполняется обработка по желанию пользователя или вообще не выполняется никакой обработки. Такая распределенная вычислительная система также дает возможность участвующему компьютеру-клиенту присоединиться к распределенной вычислительной задаче в любое время и выполнять свою собственную вычислительную функцию со своей скоростью.
Распределенная вычислительная система, соответствующая настоящему изобретению, особенно подходит для интерактивного телевидения, так как она позволяет зрителю настроиться на канал интерактивного ТВ в любое время, вступать во взаимодействие всякий раз, когда потребуется (или не вступать вообще), и работать со своей скоростью. Это особенно выгодно в случае, условии, когда в интерактивной программе имеется интерактивная коммерческая программа со своей собственной рабочей программой и данными, или когда зритель хочет изменить каналы.
Изобретение поясняется чертежами, на которых
фиг. 1 изображает блок-схему распределенной
вычислительной системы, выполненной в соответствии с настоящим изобретением;
фиг. 2 изображает блок-схему серверного компьютера, показанного на
фиг. 1;
фиг. 3 изображает временную
диаграмму, которая показывает поток данных, формируемый компьютером-сервером в распределенной вычислительной системе, приведенной на фиг. 1, и
фиг. 4 изображает блок-схему компьютера-клиента,
показанного на фиг. 1.
На фиг. 1 показана блок-схема распределенной вычислительной системы в соответствии с настоящим изобретением. На фиг.1 источник непрерывного потока данных в виде серверного компьютера 10, который может включать в себя большую вычислительную систему, соединен с множеством компьютеров-клиентов 20 через средства 30 транспортировки. Серверный компьютер 10 может быть соединен более чем с тремя компьютерами-клиентами 20, показанными на фиг. 1, а компьютеры-клиенты 20 географически могут находиться далеко друг от друга. Компьютер-клиент 22 связан двунаправленной линией с местным компьютером 40, системой 50 обработки вспомогательнных данных и с центральным устройством 60 обработки. Центральное устройство 60 обработки двунаправленной линией связано с серверным компьютером 10. Центральное устройство обработки может быть соединено не только с серверным компьютером 10, как показано на фиг. 1, но и с другими устройствами. Местный компьютер 40 также соединен с устройством 70 массовой памяти двунаправленной линией. Компьютер-клиент 22 взаимодействует с пользователем 80, предоставлял ему информацию на экране дисплея или через другое устройство вывода (не показано) и принимая от него информацию через клавиатуру или через иное устройство ввода (тоже не показано).
Компьютеры-клиенты 24 и 26 также взаимодействуют со своими пользователями (не показаны для упрощения чертежа). Кроме того, компьютеры-клиенты 24 и 26 двунаправленной линией связаны с центральным устройством 60 обработки. Однако такие линии связи не являются обязательными. Единственными требованиями к компьютерам-клиентам 20 является взаимодействие с пользователем и связь со средствами 30 транспортировки. Связи с местными компьютерами, системами обработки вспомогательных данных и центральным устройством 60 обработки являются факультативными и иметь их каждому из компьютеров-клиентов 20 нет необходимости.
Средства 30 транспортировки содержат однонаправленную высокоскоростную цифровую линию связи, такую как прямая оптоволоконная или цифровая спутниковая связь, от сервера 10 до компьютеров-клиентов 20. Данные могут передаваться через средства 30 транспортировки в виде системы пакетных данных. В такой системе поток пакетов данных, каждый из которых содержит идентификационную информацию, которая, помимо прочего, указывает тип данных, содержащихся в пакете, и текущие данные, передается по линии передачи данных. Такая система пакетных данных позволяет выполнять временное мультиплексирование нескольких независимых потоков данных, каждый из которых распознается с помощью идентификационной информации, содержащейся в его пакетах, в одном потоке пакетов.
Кроме того, возможно мультиплексирование множества таких пакетов данных по соответствующим каналам в той же физической среде (оптоволоконный канал или спутниковый радиоканал связи), образующей средства 30 транспортировки. Например, различные потоки данных могут модулировать несущие с различными частотами. Эти модулированные несущие могут быть переданы через соответствующий преобразователь непрерывных данных в цифровые (транспондер), например по спутниковой линии связи. Кроме того, если данный транспондер имеет достаточную пропускную способность, становится возможным временное мультиплексирование нескольких потоков данных, передаваемых на одной несущей.
Каждый из компьютеров-клиентов 20 содержит приемник данных, который выбирает один из потоков пакетов, передаваемых через средство 30 транспортировки, принимает выбранный поток пакетов и извлекает находящиеся в нем данные. Для примера, приведенного выше, приемник может содержать настраиваемый демодулятор для приема одной из модулированных несущих, которые поступают по спутниковой линии связи. Кроме того, приемник данных может содержать схему для временного демультиплексирования соответствующих потоков данных, которые несет модулированная несущая.
В процессе работы сервер 10 формирует непрерывный поток данных в виде потока пакетов для компьютеров-клиентов 20. Сервер 10 периодически вводит в поток данных пакет или следующие один за другим пакеты, содержащие данные, представляющие прикладную задачу, решаемую на основе распределения функций (распределенную вычислительную прикладную задачу), причем эти данные включают по крайней мере один модуль рабочей программы. Этот программный модуль содержит рабочую программу для компьютеров-клиентов 20. Приемник данных, например в компьютере-клиенте 22, постоянно следит за пакетами в потоке данных, передаваемом средствами 30 транспортировки. Когда в потоке данных присутствует пакет, идентификационная информация которого указывает на то, что данный пакет содержит требуемый компьютером-клиентом 22 программный модуль (или часть программного модуля), компьютер-клиент 22 обнаруживает его присутствие, извлекает программный модуль (или часть программного модуля) из этого пакета и записывает его в основную память. Когда программный модуль полностью принят, компьютер-клиент 22 начинает его выполнение.
В непрерывный поток данных может быть помещено более одного программного модуля, каждый из которых содержит различные части распределенной вычислительной прикладной задачи. Например, возможно разделение прикладной задачи на небольшие части таким образом, что сразу необходимо выполнять лишь одну часть задачи. Эта часть загружается в память компьютера-клиента 22. Когда завершается выполнение этой части задачи, программный модуль, содержащий рабочую программу для следующей части распределенной вычислительной прикладной задачи, извлекается из потока данных, записывается в память и выполняется. Каждая часть задачи извлекается из потока данных по мере необходимости. Если компьютер-клиент 22 имеет достаточно памяти, то возможно загрузить в память несколько программных модулей и переходить от одного к другому без извлечения их из потока данных, но это не обязательно. Путем такого структурирования прикладной задачи, решаемой на основе распределения функций, требуемый размер памяти компьютера-клиента 22 может быть минимизирован.
Сервер 10 может также включать в поток данных повторяющийся пакет или пакеты, содержащие один или более модулей данных. Модули данных содержат данные, которые требуется обработать рабочей программой из программного модуля. Перед выполнением или в процессе выполнения программы из предварительно извлеченного программного модуля компьютер-клиент 22 может затребовать доступ к данным, которые находятся в модуле или в модулях данных. Если это так, то компьютер-клиент 22 контролирует поток данных на предмет наличия требуемого модуля или модулей данных. Если пакеты, содержащие модуль или модули данных (или части модуля или модулей данных), присутствуют в потоке данных, они извлекаются и их содержимое запоминается в основной памяти компьютера-клиента 22. Когда все требуемые модули данных полностью приняты, компьютер-клиент 22 начинает или продолжает выполнение программы из программного модуля по обработке данных, полученных в модуле или в модулях данных. Как и в случае программных модулей, возможна запись в память более чем одного модуля данных, если в памяти компьютера-клиента 22 достаточно места.
Сервер 10 может дополнительно включать в поток данных повторяющиеся пакет или пакеты, содержащие каталог программных модулей и модулей данных, включенных в поток данных в текущий момент. Каталог содержит список всех программных модулей и модулей данных, которые имеются в потоке данных, вместе с информацией об этих модулях. Если в потоке данных есть каталог, то до извлечения любого программного модуля или модуля данных из потока данных компьютер-клиент 22 контролирует поток данных на предмет наличия в нем каталога. Если пакеты, содержащие каталог (или части каталога) присутствуют в потоке данных, то они извлекаются и информация из них запоминается в основной памяти компьютера-клиента 22. Когда каталог полностью получен, компьютер-клиент 22 проверяет соответствие записей в каталоге, а затем запрашивает первый программный модуль и/или модуль данных из потока данных и производится выполнение так, как описано выше.
Любой из компьютеров-клиентов 20 может вступать в реализацию распределенной вычислительной функции, представленной потоком пакетов, в любой момент времени, и каждый из компьютеров-клиентов 20 может работать со своей обычной скоростью, обычно под управлением пользователя 80. Для этого сервер 10 периодически помещает каталог и все модули программ и данных, которые компьютеры-клиенты 20 могут затребовать для выполнения своей части распределенной вычислительной функции, в поток данных, передаваемый по средствам 30 транспортировки. Всякий раз, как только один из компьютеров-клиентов 20 вступает в реализацию распределенной вычислительной функции, он отслеживает в средствах 30 транспортировки вновь выбранный поток пакетов для выделения модуля каталога, извлекает его и обрабатывает так, как описано выше. В процессе выполнения как только один из компьютеров-клиентов 20 потребует новый программный модуль и/или модуль данных, он проверяет поток данных в средствах 30 транспортировки на наличие этого требуемого программного модуля и/или модуля данных, извлекает его и либо выполняет его, если это программный модуль, либо обрабатывает, если это модуль данных, так, как описано выше.
Поток пакетных данных может также содержать пакеты вспомогательных данных. Эти данные не нужны компьютеру-клиенту 22 для выполнения программы, хотя они могут относиться к выполнению, поскольку пользователь 80 может взаимодействовать с рабочей программой в компьютере-клиенте 22, основываясь на полученных вспомогательных данных. Приемник потока данных в компьютере-клиенте 22 распознает пакеты вспомогательных данных, передаваемых средствами 30 транспортировки, и посылает их непосредственно в процессор 50 обработки вспомогательных данных. Процессор 50 обработки вспомогательных данных осуществляет обработку предназначенных для него пакетов независимо от компьютера-клиента 22. Если вспомогательные данные должны быть представлены пользователю 80, то процессор 50 обработки вспомогательных данных можно обеспечить своим собственным дисплеем (не показан), который может быть использован и для компьютера-клиента 22, или дисплей (не показан), связанный с компьютером-клиентом 22, может быть использован процессором 50 обработки вспомогательных данных для обеспечения единого отображения информации пользователю 80. Процессор 50 обработки вспомогательных данных может иметь связи (не показаны) с другими изображенными элементами, но это зависит от вида данных.
В одной из форм осуществления настоящего изобретения источник потока данных формирует поток данных в виде последовательностей пакетов; причем первая из последовательностей пакетов содержит данные, представляющие распределенную вычислительную прикладную задачу, и включает идентификационную информацию, указывающую на то, что первая последовательность пакетов содержит данные, представляющие распределенную вычислительную прикладную задачу, а вторая последовательность пакетов содержит вспомогательные данные и включает идентификационную информацию, указывающую на то, что вторая последовательность пакетов содержит вспомогательные данные.
В другой из форм осуществления настоящего изобретения источник потока данных формирует поток данных в виде последовательностей пакетов; причем первая из последовательностей пакетов содержит данные, представляющие модуль рабочей программы и включает идентификационную информацию, указывающую на то, что первая последовательность пакетов содержит данные, представляющие модуль рабочей программы; вторая последовательность пакетов содержит данные, представляющие модуль данных, и включает идентификационную информацию, указывающую на то, что вторая последовательность пакетов содержит информацию, представляющую модуль данных; а третья последовательность пакетов содержит вспомогательные данные и включает идентификационную информацию, указывающую на то, что третья последовательность пакетов содержит вспомогательные данные.
В еще одной из форм осуществления настоящего изобретения источник потока данных формирует поток данных в виде последовательностей пакетов; причем первая из последовательностей пакетов содержит данные, представляющие модуль рабочей программы, и включает идентификационную информацию, указывающую на то, что первая последовательность пакетов содержит данные, представляющие модуль рабочей программы; вторая последовательность пакетов содержит данные, представляющие модуль данных, и включает идентификационную информацию, указывающую на то, что вторая последовательность пакетов содержит данные, представляющие модуль данных; третья последовательность пакетов содержит данные, представляющие модуль каталога, и включает идентификационную информацию, указывающую на то, что третья последовательность пакетов содержит данные, представляющие модуль каталога; а четвертая последовательность пакетов содержит вспомогательные данные и включает идентификационную информацию, указывающую на то, что четвертая последовательность пакетов содержит вспомогательные данные.
Например, в интерактивных ТВ системах вспомогательные данные включают составляющие изображения и звукового сопровождения основного телевизионного сигнала. Вспомогательные данные, к примеру, могут содержать видеопакеты данных, кодированных согласно протоколу MPEG (или аналогичному) и представляющих телевизионное изображение, и аудиопакеты, содержащие сигналы звукового сопровождения в цифровом коде. Более того, возможно наличие нескольких различных потоков аудиопакетов, несущих соответствующие стереофонические каналы, вторую звуковую программу или обеспечивающие возможность многоязычного звукового сопровождения. В такой системе в процессоре 50 обработки вспомогательных данных видеопакеты изображения поступали бы на известный MPEG (или подобный) декодер (не показан), который воспроизводил бы стандартные видеосигналы для передачи в телевизионный приемник или на видеомонитор (не показаны). Аудиопакеты поступали бы на известный декодер звука (не показан), который формирует стандартные звуковые сигналы для телевизионного приемника или для звуковоспроизводящего устройства (не показано).
В такой системе интерактивного ТВ компьютер-клиент 22 может в результате выполнения программного модуля снабжать пользователя 80 информацией в виде графических изображений. Эти графические изображения могут комбинироваться со стандартным видеосигналом от MPEG декодера известным способом, при этом суммарное изображение отображается на экране телевизионного приемника или видеомонитора. Компьютер-клиент 22 может также создавать звуковые сигналы, предоставляющие зрителю другую информацию. Формируемый звук может объединяться известным способом со стандартными звуковыми сигналами от звукового декодера, при этом суммарный звуковой сигнал воспроизводится в телевизионном приемнике или в устройствах воспроизведения звука.
Кроме того, в поток вспомогательных телевизионных пакетных данных или в поток пакетных данных, представляющих прикладную задачу в виде интерактивного ТВ, или в оба эти потока могут быть включены данные временного кода. Это дает возможность синхронизировать во времени любые графические изображения или звуки, формируемые компьютером-клиентом 22, и телевизионный сигнал, несущий вспомогательные данные. В этом случае компьютер-клиент 22 будет иметь доступ к данным временного кода и управлять формированием графического изображения и/или звука с целью обеспечить их появление в требуемые моменты времени в соответствии с данными временного кода.
В такой системе интерактивного ТВ как компьютер-клиент 22, так и процессор 50 обработки вспомогательных данных могут быть помещены в одном корпусе, например в телевизионном приемнике или в устанавливаемой на приемнике декодерной приставке. Телевизионный приемник или декодерная приставка к нему могут иметь соединители для подключения к местному компьютеру или другим устройствам.
Пользователь 80 обеспечивает ввод данных в программу, запущенную на компьютере-клиенте 22, в процессе ее выполнения. Эти данные могут потребоваться серверу 10 для того, чтобы реализовать распределенную вычислительную функцию. В интерактивной ТВ системе, например, пользователь 80 может обеспечить ввод данных в компьютер-клиент через ручной пульт дистанционного управления.
Данные пользователя передаются в компьютер-сервер 10 через центральное устройство 60 обработки. В одном из вариантов изобретения данные посылаются от компьютеров-клиентов 20 в компьютер-сервер 10 через модемы по телефонной системе, действующей как центральное устройство 60 обработки. Компьютер-сервер 10 принимает и обрабатывает данные, полученные от компьютеров-клиентов 20, в процессе выполнения своей части распределенной вычислительной функции.
Компьютер-сервер 10 может формировать новые или модифицировать существующие модули программ и/или данных в потоке данных, передаваемом средствами 30 транспортировки способом, описываемом ниже, на основе полученных данных. Альтернативным вариантом может быть немедленный возврат информации компьютером-сервером 10 компьютерам-клиентам 20 в другом направлении через центральное устройство 60 обработки. Информация во вновь сформированных программных модулях и/или модулях данных обрабатывается всеми компьютерами-клиентами 20, участвующими в реализации распределенной вычислительной функции, в то время как информация, посланная от компьютера-сервера 10 в компьютеры-клиенты 20 через центральное устройство 60 обработки, относится к тому компьютеру-клиенту (20, 24, 26), которому эта информация была направлена.
В другом варианте реализации центральное устройство 60 обработки может содержать свою собственную вычислительную систему, подключенную отдельно с помощью модема как к компьютерам-клиентам 20, так и к компьютеру-серверу 10 через телефонную систему. В любом из вариантов реализации, описанных выше, центральное устройство 60 обработки обеспечивает доступ к другим компьютерам или устройствам обработки (не показаны) через телефонную систему. Таким образом, если для реализации распределенной вычислительной функции необходима информация от других вычислительных систем, то доступ к этим системам через модемы по телефонной сети может быть либо со стороны компьютеров-клиентов 20, либо со стороны компьютера-сервера 10.
Порт ввода/вывода в компьютере-клиенте 22 соединен с соответствующим портом местного компьютера 40. Местный компьютер 40 расположен в том же месте, что и компьютер-клиент 22. Местный компьютер 40 может быть персональным компьютером, который используется пользователем 80 компьютера-клиента 22, или может быть большим компьютером или компьютерной сетью, расположенной в том же самом месте, что и компьютер-клиент 22. Это позволяет компьютеру-клиенту 22 иметь доступ к данным в массовой памяти 70 связанного с ним персонального компьютера или компьютерной сети, которые расположены в том же месте, где находится компьютер-клиент 22. Кроме того, компьютер-клиент 22 может пользоваться массовой памятью 70 местного компьютера 40 для хранения данных, которые должны отыскиваться позже. Это эквивалентно тому, что местный компьютер 40 будет содержать как выходное устройство (не показано), например монитор компьютера, так и входное устройство (тоже не показано), например клавиатура компьютера. Оба эти устройства могут также использоваться для компьютера-клиента 22 и/или процессора 50 вспомогательных данных, как описано выше.
Например, распределенная вычислительная систем, изображенная на фиг. 1, может быть частью распространенной корпоративной вычислительной системы, а сервер 10 может быть размещен в центре этой системы. Компьютер-клиент 22 может быть расположен в отдалении, а местный компьютер 40 может быть подсоединен к сети персональных компьютеров в этом месте. Работающие здесь служащие могут хранить совместно используемые данные (например, финансовую информацию) в сервере, подсоединенном к этой сети. Распределенная вычислительная функция может включать сбор местных финансовых данных от компьютеров-клиентов, находящихся в удаленных пунктах, обработку этих финансовых данных и возврат итоговых финансовых данных, полученных в результате обработки, в компьютеры-клиенты. В такой системе рабочая программа, запущенная в компьютере-клиенте 22, производит выборку данных из местного компьютера 40 (либо из подключенной к нему массовой памяти 70, либо через сеть) через порт ввода/вывода и посылает ее в компьютер-сервер 10 через центральное устройство 60 обработки. Компьютер-сервер 10 продолжает ее обработку на основе информации, полученной от компьютера-клиента 22 (и от других компьютеров-клиентов 20), и возвращает результаты обработки в компьютеры-клиенты 20 либо через центральное устройство 60 обработки, либо через поток данных в средствах 30 транспортировки.
В другом примере распределенная вычислительная система может быть интерактивной телевизионной системой, осуществляющей передачу для выполнения покупок не выходя из дома, представляющую распределенную вычислительную задачу. В этом случае вспомогательные данные несут составляющие изображения и звука телевизионного сигнала, которые могут показывать и описывать товары, предлагаемые на продажу, при этом может быть предусмотрено как участие "живых" исполнителей, так и наложение графических изображений, создаваемых на центральной студии. Программные модули и модули данных, составляющие прикладную задачу интерактивного телевидения, могут содержать информацию о товарах, которые будут предлагаться к продаже в течение этой передачи или части передачи, и рабочую программу для взаимодействия с пользователем способом, описываемом ниже.
Когда зритель желает заказать товар, нажимается кнопка, расположенная на пульте дистанционного ТВ управления. Эта кнопка сигнализирует компьютеру-клиенту 22, что надо отобразить последовательность команд и меню, необходимых для того, чтобы затребовать информацию, необходимую для размещения заказа, например, номер предмета, имя и адрес зрителя, способ оплаты, номер кредитной карточки (если нужно) и т.д. Эти команды формируются в компьютере-клиенте в графическом виде и накладываются на телевизионное изображение. Также возможно формирование компьютером речевого сигнала, который может объединяться с телевизионным звуковым сопровождением либо путем наложения на звуковое сопровождение, либо путем его замещения. Зритель отвечает на команды, сообщая требуемую информацию через пульт дистанционного управления. Когда информация, запрашиваемая командами с экрана дисплея и/или голосом, введена зрителем, она пересылается в центральный компьютер через модем, который находится в компьютере-клиенте. От центрального компьютера в обратном направлении может быть послано подтверждение о приеме заказа.
Возможно также предварительное однократное введение зрителем неизменной, относящейся к нему информации (т.е. его имя, адрес, вид оплаты и номер кредитной карточки), при этом отсутствует необходимость запрашивать эту информацию каждый раз, когда делается заказ. Информация хранится в постоянной памяти в компьютере-клиенте. В этом случае, когда делается заказ, эта информация выбирается из постоянной памяти, дополняется к номеру продаваемого предмета и передается в центральный компьютер. Кроме того, имеется возможность посредством использования временных кодов или других команд, внесенных в поток данных, дать знать компьютеру-клиенту какой предмет в текущий момент времени выставляется на продажу. В этом случае зритель может заказать его простым нажатием кнопки на пульте дистанционного управления. В ответ компьютер-клиент может объединить предварительно полученную информацию, относящуюся к предмету, который предлагается к продаже в данный момент времени, с предварительно записанной в память персональной информацией, касающейся зрителя, передать заказ в центральный компьютер и получить обратно подтверждение.
Зритель может настроиться на программу покупки, не выходя из дома, и взаимодействовать с этой программой в любое время, поскольку программные модули и модули данных, которые относятся к этой программе, периодически вносятся в поток данных. По этой же причине зрителю нет необходимости участвовать во взаимодействии, он может просто проигнорировать интерактивную часть телевизионной передачи.
Компьютер-клиент 22 также имеет возможность получить управляющую информацию от местного компьютера 40. Например, пользователь 80, который использует местный компьютер 40, может управлять компьютером-клиентом 22 через порт ввода/вывода для выбора из потоков данных, передаваемых по средствам 30 транспортировки, нужного потока данных и обработки программы, передаваемой в этом потоке данных, при взаимодействии с пользователем 80 через устройства ввода и вывода (не показаны), присоединенные к местному компьютеру 40.
Кроме того, для пользователя 80 имеется возможность заставить компьютер-клиент 22 обратиться к компьютеру-серверу 10 через центральное устройство 60 обработки, а не через поток данных, передаваемый по средствам 30 транспортировки, и принять программные модули и модули данных по двунаправленной линии связи.
На фиг.2 представлена блок-схема компьютера-сервера 10, приведенного на фиг. 1. На фиг. 2 источник 101 программы и данных распределенной вычислительной прикладной задачи содержит компилятор прикладной задачи и блок управления программным обеспечением (не показан) и имеет выходной вывод, который подсоединен ко входному выводу построителя 102 потока. Выходной вывод построителя 102 потока подсоединен ко входному выводу транспортного формирователя 104 пакетов. Выходной вывод транспортного формирователя 104 пакетов подсоединен к первому входному выводу мультиплексора 106 пакетов. Выходной вывод мультиплексора 106 пакетов подсоединен ко входному выводу транспортного мультиплексора 110. Выходной вывод транспортного мультиплексора 110 подсоединен к физической среде, образующей средства 30 транспортировки (фиг. 1). Второй входной вывод мультиплексора 106 пакетов подсоединен к источнику 107 пакетов вспомогательных данных. Тактовый генератор 109 имеет соответствующие выходные выводы, соединенные с соответствующими входными выводами транспортного формирователя 104 пакетов и источника 107 вспомогательных данных. Приемопередатчик 103 данных имеет первый двунаправленный вывод (вход/выход), соединенный с центральным устройством 60 обработки (фиг. 1), и второй двунаправленный вывод, соединенный с источником 101 программы и данных прикладной задачи.
Источник 101 программы и данных прикладной задачи, формирователь 102 потока, транспортный формирователь 104 пакетов, источник 107 вспомогательных данных, тактовый генератор 109 и мультиплексор 106 пакетов образуют, вместе взятые, канальный источник 108 для средств транспортировки, который изображен в виде прямоугольника из пунктирных линий. Другие канальные источники, включающие элементы, аналогичные элементам канального источника 108, но не показанные на фиг. 1, представлены другим, обведенным пунктирной линией, прямоугольником 108а. Канальные источники 108a имеют выходные выводы, соединенные с другими входными выводами транспортного мультиплексора 110, и могут иметь входные выводы, соединенные с центральным устройством обработки через приемопередатчики данных.
В процессе работы данные, представляющие программу распределенной вычислительной прикладной задачи, и данные, относящиеся к передаче программы через средства 30 транспортировки, подаются в построитель 102 потока от источника 101 прикладной задачи. Эти данные могут подаваться либо в виде файлов, содержащих данные, представляющие программные модули и модули данных, либо в виде описаний, из которых можно получить информацию о том, как сконструировать модули программы и данных, или другую подобную информацию. Программные модули и модули данных могут быть либо постоянными, либо динамически изменяться в зависимости от входных данных, полученных от компьютеров-клиентов 20 через центральное устройство 60 обработки и/или от других источников. Файлы модулей рабочей программы и модулей данных могут формироваться компилятором, интерпретатором или ассемблером известным образом в соответствии с исходным языком программирования, используемым прикладным программистом. Файл данных, относящийся к передаче модулей, содержит следующую информацию: требуемые частоты повторения каталога и модулей программы и данных, подлежащих введению в поток данных; размер основной памяти в компьютерах-клиентах 20, требуемой для хранения каждого модуля и для полного выполнения прикладной программы; уровень приоритета для модуля, если этот модуль программный, и т.д.
Построитель 102 потока обрабатывает данные от источника 101 прикладной задачи. На основе этих данных построитель 102 потока составляет модуль каталога, в котором представлена общая картина прикладной программы. Информация в модуле каталога включает, например, идентификацию всех модулей программы и данных, периодически передаваемых в потоке данных, их размер и возможно другую информацию, относящуюся к этим модулям. Затем данные, представляющие прикладную программу, обрабатываются для генерации модулей программы и данных.
Составленные таким образом модули каталога, программы и данных форматируются путем добавления в каждый модуль его заголовков и кодов обнаружения ошибок и/или корректирующих кодов. Формируется также расписание передачи. После этого обработка завершается и данные, представляющие модуль каталога и модули программы и данных, периодически передаются в транспортный формирователь 104 пакетов согласно предварительно составленному расписанию.
Транспортный формирователь 104 пакетов формирует поток пакетов, представляющих собой модуль каталога и модули программы и данных, по мере их выхода с построителя 102 потока. Каждый пакет имеет заранее заданную длину и формируется путем разделения потока данных от построителя потока на группы битов с добавлением в каждую группу заголовка пакета с информацией, идентифицирующей данные, содержащиеся в пакете, код обнаружения и/или коррекции ошибок и т. д., так что каждый пакет имеет одну и ту же заранее заданную длину. (Если данных от построителя 102 потока недостаточно, чтобы полностью заполнить пакет, то пакет дополняется нулями). Эти пакеты подвергаются временному мультиплексированию с пакетами вспомогательных данных известным способом для формирования единого пакетного потока в мультиплексоре 106 пакетов. Возможен вариант когда формируемые пакеты будут иметь переменные длины. В этом случае пакетный заголовок в каждом пакете будет содержать значение длины этого пакета. Кроме того, в пакеты потока данных помещаются пакеты с данными временного кода и/или пакеты вспомогательных данных, на основе данных, полученных от тактового генератора 109.
Потоки пакетов от всех канальных источников (108, 108a) мультиплексируются в единый транспортный канал, который передается через средства 30 транспортировки. Как описано выше, потоки пакетов могут мультиплексироваться с разделением по частоте, когда каждый пакетный поток модулирует несущую с отличающейся от других частотой, причем все несущие передаются в компьютеры-клиенты 20 по спутниковой линии связи известным способом. Кроме того, если один канал, по которому передается несущая, обладает достаточной пропускной способностью, то несколько потоков пакетов могут статистически мультиплексироваться с разделением во времени и модулировать одну несущую, также известным способом. Например, было предложено мультиплексировать с разделением по времени до восьми потоков данных интерактивного ТВ для передачи по одному спутниковому каналу связи.
Данные от компьютеров-клиентов 20 через центральное устройство 60 обработки (фиг. 1) принимаются приемопередатчиком 103 в компьютере-сервере 10, который может иметь свой собственный процессор (не показан). Если формируется немедленный ответ, то приемопередатчик 103 возвращает этот ответ через центральное устройство 60 обработки определенному компьютеру-клиенту (22-26), определенной группе компьютеров-клиентов 20 или всем компьютерам-клиентам по очереди. Однако, если требуется общий ответ всем компьютерам-клиентам 20, то прикладной программист может внести изменения в файлы программы и данных в источнике 101 программ и данных прикладной задачи, используя прикладной компилятор. Затем исправленные файлы снова обрабатываются построителем потока для генерации другого потока. Кроме того, возможно автоматическое и динамическое (то есть в реальном масштабе времени) изменение файлов программы и данных в источнике 101 прикладной задачи в ответ на данные, принятые от приемопередатчика 103 и обновление потока по мере поступления данных от компьютеров-клиентов 20.
Фиг. 3 представляет временную диаграмму, иллюстрирующую потоки данных, формируемые компьютером-сервером 10 в распределенной вычислительной системе, приведенной на фиг. 1. На фиг. 3 показан компьютер-сервер 10, формирующий одновременно несколько пакетных потоков 32-38. Каждый пакетный поток (32-38) показан в виде горизонтальной полосы, разделенной на пакеты, которые имеют одинаковую длительность и одинаковое количество битов. Как описано выше, размер пакетов в любом пакетном потоке может изменяться в зависимости от объема данных. На фиг. 3 видно, что начала пакетов по времени не синхронизированы. Можно синхронизировать пакеты, но в этом нет необходимости. На фиг. 3 пакеты, которые несут данные, представляющие каталоги, обозначены DIR, пакеты с данными, представляющими программные модули, обозначены СМ, пакеты с данными, представляющими модули данных, обозначены DM, и пакеты, которые несут вспомогательные данные, обозначены AUX.
В верхней последовательности пакетов 32 крайний слева пакет содержит данные, представляющие программный модуль СМ. За ним следуют три пакета, содержащих вспомогательные данные AUX, за ними следует пакет, содержащий программный модуль СМ. Можно видеть, что программный модуль в последовательности пакетов 32 формируется повторяющимся. В промежутке между последовательно повторяющимися пакетами программных модулей СМ может быть больше или меньше пакетов. Шаг повторения может быть задан программистом во время программирования прикладной задачи и может изменяться в процессе ее решения.
В следующей последовательности пакетов 34 крайний левый пакет содержит вспомогательные данные AUX. Следующие два пакета содержат соответствующие части программных модулей (СМ1, СМ2). Последний пакет содержит вспомогательные данные AUX. Из рассмотрения последовательности пакетов 34 можно заметить, что если программный модуль слишком велик для упаковки в один пакет, то он может содержаться в двух или более пакетах, в каждом из которых помещается часть программного модуля. Хотя в последовательности пакетов 34 показаны только два пакета, которые вмещают программный модуль (СМ1, СМ2), для передачи программного модуля может быть использовано любое количество пакетов, зависящее от размера модуля. Два пакета, несущих программный модуль (СМ1, СМ2), периодически передаются (не показано) в последовательности пакетов 34, как описано выше.
В последовательности пакетов 36 крайний левый пакет содержит данные, представляющие программный модуль (СМ). Следующий пакет (DM1) является первым пакетом, содержащим данные, представляющие модуль данных. Следующий пакет содержит вспомогательные данные AUX. Следующий пакет (DM2) является вторым пакетом, содержащим оставшиеся данные, относящиеся к модулю данных. Из приведенной последовательности пакетов 36 можно видеть, что модуль данных (DM1, DM2), связанный с программным модулем (СМ), также может быть включен в поток пакетов. Как программный модуль (СМ), так и модуль данных (DM1, DM2) периодически передается (не показано) в последовательности пакетов 36. Частота повторения программного модуля (СМ) может отличаться от частоты повторения модуля данных (DM1, DM2), причем обе частоты могут быть заданы прикладным программистом и изменяться в процессе выполнения прикладной задачи.
Кроме того, можно видеть, что если модуль данных слишком велик для помещения его в один пакет, то для его передачи может быть использовано более одного пакета, при этом в каждый пакет включается часть такого модуля данных. Хотя в последовательности пакетов 36 показаны только два пакета, которые содержат модуль данных (DM1, DM2), для передачи модуля данных может быть использовано любое количество пакетов в зависимости от размера модуля данных. Кроме того, можно видеть, что нет необходимости последовательно передавать пакеты, несущие модули данных, можно вклинивать их в поток пакетов. То же самое справедливо для пакетов, которые содержат программный модуль или модуль каталога (не показаны).
В последовательности пакетов 38, которые находятся внизу, крайний левый пакет содержит данные, представляющие каталог (DIR). Следующий пакет содержит данные, представляющие программный модуль (СМ), за которым следует пакет, содержащий вспомогательные данные (AUX) и пакет, содержащий данные, представляющие модуль данных (DM). В последовательности пакетов 38 в отдельном потоке можно видеть все модули: модуль каталога (DIR), программный модуль (СМ) и модуль данных (DM). Соответствующие периоды повторения этих трех модулей могут различаться, что задается программистом данной прикладной задачи, и могут быть изменены в процессе выполнения этой задачи.
На фиг. 4 изображена блок-схема компьютера-клиента 22, показанного на фиг. 1. На фиг. 4 средства 30 транспортировки (фиг. 1) соединены со входным выводом селектора 202 потока данных. Средства 30 транспортировки образуют входной терминал для приема непрерывного потока данных, который содержит повторяющиеся данные, представляющие распределенную вычислительную прикладную задачу.
Входной терминал принимает поток данных в виде последовательностей пакетов, содержащих пакеты, несущие данные, представляющие распределенную вычислительную прикладную задачу или множество потоков данных, каждый из которых включает данные, представляющие соответствующую распределенную вычислительную прикладную задачу. Входной терминал принимает представляющие распределенную вычислительную прикладную задачу данные, включающие модуль рабочей программы, а также дополнительно включающие модуль каталога, содержащий информацию, относящуюся к модулю рабочей программы. Последовательности пакетов в потоке данных дополнительно включают пакеты, несущие вспомогательные данные.
Выходной вывод селектора 202 потока данных соединен с соответствующими входными выводами экстрактора 204 вспомогательных данных и экстрактора 206 пакетных данных. Выходной вывод экстрактора 204 вспомогательных данных соединен с процессором 50 вспомогательных данных (фиг. 1). Двунаправленный вывод экстрактора 206 пакетных данных соединен с соответствующим выводом адаптера 208 ввода/вывода потока. Управляющий выходной вывод адаптера 208 ввода/вывода потока соединен с соответствующим управляющим входным выводом селектора 202 потока. Селектор 202 потока данных, экстрактор 204 вспомогательных данных и экстрактор 206 пакетных данных образуют приемник 207 потока данных для компьютера-клиента 22, выделенный пунктирной линией на фиг. 4 и присоединенный ко входному терминалу для приема потока данных и извлечения данных, представляющих распределенную вычислительную прикладную задачу. Таким образом, приемник потока данных содержит селектор 202 потока данных, присоединенный ко входному терминалу, для формирования потока данных, выбранного из множества потоков данных в ответ на сигналы управления от блока 224 обработки; и экстрактор пакетных данных, т.е. данных, представляющих распределенную вычислительную прикладную задачу, включенный между селектором потока данных и блоком обработки, для извлечения данных, представляющих распределенную вычислительную прикладную задачу, из потока данных, выбранного из множества потоков данных. Если входной терминал принимает поток данных (а не множество потоков данных), приемник потока данных содержит подсоединенный ко входному терминалу экстрактор пакетных данных для извлечения пакетов, несущих данные, представляющие распределенную вычислительную прикладную задачу.
Адаптер 208 ввода/вывода потока данных в компьютере-клиенте 22 является частью блока 224 обработки, который на фиг.4 выделен пунктирной линией. Кроме адаптера блок 224 обработки содержит процессор 210, память 212, допускающую чтение/запись (память с произвольным доступом) и постоянное запоминающее устройство 214, соединенные вместе известным образом через системную шину 216. Кроме того, средства ввода и вывода включают порт 218 ввода/вывода, присоединенный к местному процессору 40 (фиг. 1), адаптер 220 ввода/вывода данных пользователя для связи с пользователем 80 и модем 222, соединенный с центральным устройством 60 обработки (фиг. 1). Все эти устройства также подключены к системной шине 216 известным образом. С системной шиной 216 могут быть соединены другие адаптеры (не показаны) для обеспечения блока 224 обработки иными возможностями.
Как описано выше, в соответствии с настоящим изобретением экстрактор 204 вспомогательных данных, порт 218 ввода/вывода и модем 222 для компьютера-клиента 20 не требуются. Они показаны на фиг.1 и фиг. 4 для того, чтобы показать возможность выполнения дополнительных функций.
При работе процессор 210 блока 224 обработки извлекает команды программы из постоянного запоминающего устройства 214, в котором они хранятся постоянно, или из памяти 212 с произвольным доступом, где они хранятся временно, и выполняет извлеченные команды для чтения данных из ПЗУ 212 и/или памяти 214 с произвольным доступом, для записи данных в память 214 и/или приема данных от внешнего источника или для передачи ему данных через порт 218 ввода/вывода, адаптер 220 ввода/вывода данных пользователя и/или модем 222 известным образом. Под управлением программы процессор 210 может также запросить программный модуль и/или модуль данных из потока данных, который передается в компьютер-клиент 22 через средства 30 транспортировки (фиг. 1). Для получения этих данных процессор 210, во-первых, дает команду адаптеру 203 ввода/вывода потока послать сигнал управления выбором в потоковый селектор 202, возможно в ответ на сигнал ввода, поданный пользователем, со стороны адаптера 220 ввода/вывода данных пользователя. Затем процессор 210 выдает запрос на определенный модуль программы или данных адаптеру 208 ввода/вывода потока.
Средства 30 транспортировки (фиг. 1) подают множество потоков пакетов (32-38 на фиг.3) к селектору 202 потока, который пропускает только выбранный поток пакетов. Экстрактор 204 вспомогательных данных просматривает выбранный поток пакетов, извлекает из него пакеты вспомогательных данных и передает их непосредственно в процессор 50 вспомогательных данных (фиг. 1). Экстрактор 206 пакетных данных подобным же образом просматривает выбранный поток пакетов, извлекает пакеты каталога, модуля программы и/или данных, затребованные адаптером 208 ввода/вывода потока, и подает их на этот адаптер 208. Данные в пакетах, направленные адаптеру 208 ввода/вывода потока, поступают в память 212 с произвольным доступом. Когда весь модуль извлечен из потока пакетов (для этого может потребоваться несколько пакетов, как описано выше), процессор 210 уведомляется о его получении адаптером 208 ввода/вывода потока. Процессор 210 может далее продолжить выполнение своей программы.
Поток данных в распределенной вычислительной системе, показанной на фиг. 1, подобен системе массовой памяти в известных системах. Прикладная программа, выполняемая в процессоре 210, формирует запрос на модуль, имеющийся в каталоге, тем же самым способом, что и запрос на файл, который содержит программный модуль или модуль данных, предварительно записанный в устройстве массовой памяти в известных системах. Приемник 207 потока данных аналогичен устройству массовой памяти, а адаптер 208 ввода/вывода потока действует аналогично адаптеру массовой памяти в известных системах, путем определения местоположения требуемых данных, передачи их в предварительно заданное место (буфер ввода/вывода) в системной памяти и информирования процессора о завершении выборки. Однако адаптер 208 ввода/вывода потока может осуществлять лишь поиск программы и данных в потоке данных, а данные не могут быть записаны в поток данных.
Как описано выше, распределенная вычислительная прикладная задача может быть разделена более чем на один программный модуль, каждый из которых содержит рабочую программу для данной части этой прикладной задачи. Когда требуется программный модуль, соответствующий этой части, процессор 210 запрашивает этот модуль от адаптера 208 ввода/вывода потока. По завершении выполнения этого программного модуля процессор 210 запрашивает следующий модуль от адаптера 208 ввода/вывода потока. Поскольку программные модули и модули данных в потоке данных повторяются, то модуль может быть удален из памяти 212 с произвольным доступом, если в текущий момент он не нужен, так что нет необходимости его временно хранить, потому что если он позже потребуется, его снова можно будет получить из потока данных. Однако если память 212 с произвольным доступом имеет достаточный объем, то процессор 210 может затребовать у адаптера 208 ввода/вывода потока одновременной загрузки нескольких программных модулей в эту память 212. Если это осуществимо, то процессор 210 может получать эти программные модули из памяти, не ожидая, пока адаптер 208 ввода/вывода извлечет их из потока данных.
Как описано выше, с системной шиной 216 могут быть соединены известным способом другие адаптеры ввода/вывода. Например, в интерактивной ТВ системе с системной шиной 216 может быть соединен графический адаптер. Графический адаптер формирует сигналы, представляющие графические изображения, известным способом по команде от процессора 210. Далее эти сигналы могут объединяться со стандартным видеосигналом, формируемым видеодекодером (описан выше) в процессоре 50 вспомогательных данных интерактивной ТВ системы. Когда сигнал, представляющий графические изображения, и стандартный видеосигнал объединяются, результирующий сигнал представляет изображение, в котором изображение, сформированное графическим адаптером, наложено на изображение, представленное вещательным видеосигналом. Также возможно избирательное объединение этих двух содержащих изображение сигналов под управлением процессора 210.
Интерактивная ТВ система может также содержать звуковой адаптер, соединенный с системной шиной 216. Звуковой адаптер формирует сигнал, представляющий сформированный компьютером звук (такой как музыка, синтезированный голос или какой-либо иной звук) известным способом по команде от процессора 210. Далее эти сигналы могут быть объединены со стандартным звуковым сигналом, формируемым декодером звука (описан выше) в процессоре 50 вспомогательных данных интерактивной ТВ системы. Когда сигнал, несущий звук, и стандартный звуковой сигнал объединяются, результирующий сигнал представляет собой объединение сигнала, сформированного звуковым адаптером, и вещательного звукового сигнала. Существует возможность избирательного объединения этих двух несущих звук сигналов под управлением процессора 210.
Согласование во времени формирования и отображения сигналов графического изображения и звука может осуществляться путем приема данных временного кода из потока данных. Это дает возможность модулю рабочей программы синхронизировать отображение изображения, сформированного процессором, и воспроизведение сформированного процессором звука с вещательными видео- и аудиосигналами. Кроме того, возможна синхронизация работы интерактивной ТВ системы путем внесения специальных пакетов в поток данных, что приводит к прерыванию программы, выполняемой в данный момент времени в процессоре 210. Адаптер 208 ввода/вывода потока контролирует поток данных на предмет наличия таких специальных пакетов и формирует прерывание процессора 210 известным способом. Процессор 210 реагирует на это прерывание путем выполнения подпрограммы обслуживания прерывания также известным способом. Подпрограмма обслуживания прерывания может быть использована для синхронизации системы интерактивного ТВ или для других целей.
Для компьютера-клиента 22 в распределенной вычислительной системе, показанной на фиг. 1, не требуется массового запоминающего устройства или большого объема памяти 212 с произвольным доступом. Такая система снижает стоимость компьютера-клиента и увеличивает функциональные возможности компьютеров-клиентов низкой стоимости. Кроме того, такой компьютер-клиент обладает возможностью выбора участвовать в реализации распределенной вычислительной функции, может вступать в реализацию этой функции в любое время (или может отключиться и подключиться позже), и работать со своей скоростью.
Изобретение относится к распределенным вычислительным системам "клиент-сервер". Техническим результатом является возможность участвующему компьютеру-клиенту присоединиться к распределенной вычислительной задаче в любое время и выполнять свою собственную вычислительную функцию со своей скоростью. Система содержит источник непрерывного потока данных, включающего повторяющиеся данные, представляющие распределенную вычислительную прикладную задачу, и компьютер-клиент, принимающий поток данных для извлечения из него данных, представляющих распределенную вычислительную прикладную задачу, и выполнения этой задачи. 2 с. и 18 з.п.ф-лы, 4 ил.