СЕТЬ ПОТОКА ДАННЫХ
DATA FLOW NETWORK

Уровень техники
Компьютерные системы могут обеспечивать возможность выполнения множества процессов программы одновременно. Одновременное выполнение процессов может обеспечить для программы более быстрое выполнение или более эффективное увеличение пропускной способности компьютерной системы.
В процессах, которые реализуют модель потока управления, логика потока управления описывает набор условий и модификаций состояния программы и может быть организована, например, посредством блок-схемы последовательности операций. Термин «алгебра процесса» используется для ссылки на методологию обоснования того, как процессы связываются друг с другом для взаимодействия при решении общей задачи и как управляется время существования процесса. Хотя алгебра процесса может в значительной степени отличаться от примитивов, модифицирующих внутреннее состояние процесса, обычно существуют точки взаимодействия, где взаимодействие между процессами обеспечивает выполнение внутренней схемы информационных потоков. Такие точки взаимодействия между процессами в некоторых программах могут быть сложными. Сложные точки взаимодействия могут затруднять процесс планирования для одновременного выполнения и могут привести к менее чем оптимальному выполнению программы.
Раскрытие изобретения
Данный раздел «Раскрытие изобретения» предусмотрен для ввода выбора концепций в упрощенной форме, которые дополнительно описаны ниже в разделе «Осуществление изобретения». Данный раздел «Раскрытие изобретения» не предназначен для идентификации ключевых признаков или существенных признаков заявленного объекта изобретения и не предназначен для использования, для ограничения объема заявленного объекта изобретения.
Предоставлена композиционная модель, упоминаемая как структура источник-цель для соединения процессов в сети процессов обобщенным, гибким и расширяемым способом. Модель обеспечивает возможность комбинирования общих структурных компонентов алгебры процессов с сетями потока данных для формирования сетей процесса. Алгебраические операции процесса могут быть выражены в виде композиционной модели для формирования сетей потока данных, которые предоставляют полностью взаимодействующие между процессами алгебраические операции. Модель может быть применена к широкому массиву простых сетей потока данных, а также к более сложным сетям потока данных.
Краткое описание чертежей
Прилагающиеся чертежи включены для обеспечения более полного понимания вариантов осуществления и приведены здесь и составляют часть настоящего описания. На чертежах иллюстрируются варианты осуществления, и вместе с описанием они служат для пояснения принципов вариантов осуществления. Другие варианты осуществления и множество из предполагаемых преимуществ вариантов осуществления будут легко понятны по мере их пояснения со ссылкой на следующее подробное описание изобретения. Элементы чертежей не обязательно представлены в масштабе относительно друг друга. Одинаковыми номерами ссылочных позиций обозначены соответствующие аналогичные части.
На Фиг. 1A-1C показаны блок-схемы, иллюстрирующие варианты осуществления интерфейсов источника и цели, предназначенных для использования в сети потока данных.
На Фиг. 2A-2C показаны блок-схемы, иллюстрирующие варианты осуществления узлов сети потока данных.
На Фиг. 3 показана блок-схема, иллюстрирующая вариант осуществления сети процесса с сетью потока данных, соединенной с процессами.
На Фиг. 4 показана блок-схема, иллюстрирующая вариант осуществления сети процесса с процессом, соединены с сетями потока данных.
На Фиг. 5 показана блок-схема, иллюстрирующая вариант осуществления инициирующего блока, конфигурированного для реализации операции передачи.
На Фиг. 6 показана блок-схема, иллюстрирующая вариант осуществления блока триггера, конфигурированного для реализации операции приема.
На Фиг. 7 показана блок-схема, иллюстрирующая вариант осуществления сети процесса.
На Фиг. 8 показана блок-схема, иллюстрирующая вариант осуществления сети потока данных, конфигурированной для реализации операции выбора и соединения.
На Фиг. 9 показана блок-схема, иллюстрирующая вариант осуществления сети процесса.
На Фиг. 10 показана блок-схема, иллюстрирующая вариант осуществления сети процесса.
На Фиг. 11 показана блок-схема, иллюстрирующая вариант осуществления компьютерной системы, конфигурированной для реализации выполненной среды выполнения программы с планировщиком процесса.
Осуществление изобретения
В последующем детальном описании делается отсылка на приложенные чертежи, которые формируют его часть и на которых показаны в качестве иллюстрации конкретные варианты осуществления, в которых может быть реализовано изобретение. В этом отношении термины, представляющие направление, такие как «верхний», «нижний», «передний», «задний», «ведущий», «замыкающий» и т.д., используются со ссылкой на ориентацию на описываемом чертеже (чертежах). Поскольку компоненты вариантов осуществления могут быть расположены в целом ряде разных ориентаций, терминология направления используется с целью иллюстрации, но не для ограничения. Следует понимать, что могут использоваться другие варианты осуществления и структурные или логические изменения могут быть выполнены без выхода за пределы объема настоящего изобретения. Поэтому следующее подробное описание изобретения не следует рассматривать как ограничение и объем настоящего изобретение определен приложенной формулой изобретения.
Следует понимать, что признаки различных примерных вариантов осуществления, описанных здесь, могут быть скомбинированы друг с другом, если только не будет специально отмечено другое.
На Фиг. 1A показана блок-схема, иллюстрирующая вариант осуществления структуры 10 источник-цель, которая включает в себя интерфейс 12 источника и интерфейс 14 цели, соединенные с помощью соединения 16.
Структура 10 источник-цель обеспечивает набор операций, которые используются для формирования сети потока данных (например, сети 32 потока данных, показанной на Фиг. 3 и 4), которые соединяют любое количество процессов (например, процессы 40, показанные на Фиг. 3 и 4) и программу, выполняемых в компьютерной системе (например, компьютерную систему 100, показанную на Фиг. 11) в сети процесса. Сети потока данных формируют структурные компоненты алгебры процесса, такие как «передать», «принять», «выбрать», «соединить» и их комбинации, для обеспечения передачи данных между процессами. Структура 10 источник-цель обеспечивает протокол для передачи данных между интерфейсом 12 источника и интерфейсом 14 цели и обеспечивает воплощение структурных компонентов алгебры процесса в сетях потока данных.
Структура 10 источник-цель обеспечивает возможность соединения процессов в случае, когда процессы не имеют или имеют минимальную информацию друг о друге. Один процесс может предоставлять данные в другой процесс, используя структуру 10 источник-цель без какой либо информации о другом процессе. Аналогично, один процесс может принимать данные из другого процесса, используя структуру 10 источник-цель без какой либо информации о другом процессе. Каждый процесс включает в себя набор инструкций, сохраненных в считываемом в компьютере носителе информации (например, в системе 104 памяти, как показано на Фиг. 11) и исполняемых компьютерной системой. Данные, передаваемые между процессами, могут включать в себя любой тип данных, включая в себя указатели, адреса или другую структурированную или кодированную информацию.
Интерфейс 12 источника включает в себя инструкции, сохраненные на считываемом компьютером носителе информации (например, в системе 104 памяти, как показано на Фиг. 11) и исполняемые компьютерной системой для воплощения операций «соединение с целью», «отсоединение от цели», «зарезервировать», «отпустить» и «употребить», где каждая из операций интерфейса 12 источника вызывается с помощью одного или более интерфейсов 14 цели. Интерфейс 14 цели включает в себя инструкции, сохраненные на считываемом компьютером носителе записи (например, в системе 104 памяти, как показано на Фиг. 11) и исполняемые компьютерной системой для воплощения операции «предложение», где операция «предложение» интерфейса 14 цели вызывается с помощью одного или более интерфейсов 12 источника.
Операция «соединение с целью» интерфейса 12 источника устанавливает соединение 16 между интерфейсом 12 источника и интерфейсом 14 цели, которую вызывает операция соединения с целью. Операция «отсоединение от цели» интерфейса 12 источника отсоединяет соединение 16 между интерфейсом 12 источника и интерфейсом 14 цели, который вызывает операцию отсоединения от цели. Операция соединения с целью и отсоединения от цели каждая может возвращать индикатор успешного или неудачного выполнения в интерфейс 14 цели, из которого был принят вызов операции, для обозначения, было или нет соединение 16 успешно установлено или разъединено.
После установления соединения 16 между интерфейсом 12 источника и интерфейсом 14 цели, интерфейс 12 источника вызывает операцию «предложение» интерфейса 14 цели, используя соединение 16, чтобы предоставить данные в интерфейс 14 цели. В ответ на операцию «предложение» интерфейс 14 цели возвращает одно из «принято», «отклонено» или «отложено». Интерфейс 14 цели возвращает «принято» для обозначения, что интерфейс 14 цели употребил данные, предложенные интерфейсом 12 источника. Интерфейс 14 цели возвращает «отклонено» для обозначения, что интерфейс 14 цели не заинтересован в данных, предложенных интерфейсом 12 источника. Интерфейс 14 цели возвращает «отложено» для обозначения, что интерфейс 14 цели не готов к употреблению данных, предложенных интерфейсом 12 источника, в этот момент времени.
Интерфейс 12 источника обеспечивает для интерфейса 14 цели возможность запроса данных, которые периодически предлагаются с использованием операции резервирования. Интерфейс 14 цели вызывает операцию резервирования для размещения резервирования для данных, которые были предложены интерфейсом 12 источника, но были отложены интерфейсом 14 цели. Интерфейс 12 источника возвращает индикатор успеха или неудачи в интерфейс 14 цели, из которого был принят вызов на резервирование, для обозначения, было или нет резервирование выполнено успешно.
После резервирования данных интерфейс 14 цели либо вызывает операцию выпуска интерфейса 12 источника для освобождения раннее размещенного резервирования или операцию потребления для потребления зарезервированных данных. После того как интерфейс 12 источника подтвердит резервирование данных для интерфейса 14 цели, предоставляя индикатор успешного выполнения в интерфейс 14 цели, интерфейс 12 источника удерживает данные для интерфейса 14 цели, который разместил резервирование, до тех пор, пока данные не будут либо освобождены, либо употреблены интерфейсом 14 цели, который разместил резервирование.
Как показано на Фиг. 1B, каждый интерфейс 14 цели может быть подключен к любому количеству интерфейсов 12(1)-12(M) источника, вызывая операцию соединения с целью каждого из интерфейсов 12(1)-12(M) для установления соответствующих соединений 16(1)-16(M), где М представляет собой целое число, большее или равное единице и представляет M-ый интерфейс 12 источника и M-ое соединение 16. В соответствии с этим каждому интерфейсу 14 цели могут быть предложены данные из любого количества интерфейсов 12(1)-12(M) источника.
Как показано на Фиг. 1C, каждый интерфейс 12 источника может быть подключен к любому количеству интерфейсов 14(1)-14(N) цели в ответ на вызовы операции соединения с целью из каждого из интерфейсов 14(1)-14(N) цели, которые устанавливают соответствующее соединение 16(1)-16(N), где N представляет собой целое число, большее или равное единице, и представляет N-ый интерфейс 14 цели и N-ое соединение 16. В соответствии с этим каждый интерфейс 12 источника может предлагать данные в любое количество интерфейсов 14(1)-14(N) цели.
На Фиг. 2A-2C показаны блок-схемы, иллюстрирующие варианты 20A, 20B и 20C исполнения соответственно узла 20 сети потока данных. Как показано на Фиг. 2A, узел 20A может включать в себя один или более интерфейсов 12(1)-12(P) источника, где P представляет собой целое число, большее или равное единице, и представляет P-ый интерфейс 12 источника, но не представляет ни один из интерфейсов 14 цели. Узлы 20A, имеющие только интерфейсы 12 источника, формируют инициаторы данных. Узел 20B может включать в себя один или более интерфейсов 14(1)-14(Q) цели, где Q представляет собой целое число, большее или равное единице, и представляет собой Q-ый интерфейс 14 цели, но не представляет собой ни один из интерфейсов 12 источника, как показано на Фиг. 2B. Узлы 20B, имеющие только интерфейсы 14 цели, формируют приемники данных. Кроме того, узел 20C может включать в себя один или более из интерфейсов 12(1)-12(P) источника и один или более интерфейсов 14(1)-14(Q) цели, как показано на Фиг. 2C. Каждый из узлов 20A, 20B и 20C также может включать в себя один или более пассивных модулей обработки (не показаны), выполненных с возможностью преобразования данных по мере их распространения через узлы 20A, 20B и 20C.
Данные распространяются через сеть потока данных путем передачи из одного узла 20 в один или более других узлов 20, используя структуру 10 источник-цель. Каждое соединение двух узлов 20 в сети потока данных представлено как формирование пары из узла 20, воплощающего интерфейс 12 источника (например, узла 20A или узла 20C), и узла, воплощающего интерфейс 14 цели (например, узла 20B или узла 20C).
Любое количество компонентов сети потока данных может быть определено, используя структуру 10 источник-цель, и компоненты могут быть скомбинированы в значительной степени в произвольные сети потоков данных. Примеры сетей потоков данных включают в себя несвязанные буферы, связанные буферы, блоки единичного назначения, буферы производителя/потребителя, приемники данных (вызов метода), преобразование данных, таймеры и процессоры входа-выхода. Сети потока данных также могут быть составлены из более сложных сетей, используя структуру 10 источник-цель. Например, реализация фиксатора блока считывания/записи или реализация монитора могут быть выражены в отношении сетей потока данных, используя структуру 10 источник-цель.
Любое количество процессов могут представлять данные в сеть потока данных, и любое количество процессов могут принимать данные из сети потока данных, как показано на Фиг. 3. На Фиг. 3 показана блок-схема, иллюстрирующая вариант осуществления сети 30 обработки с сетью 32 потока данных, подключенной к процессам 40(1)-40(R) и 40(R+1)-40(S), где R представляет собой целое число, большее или равное единице, S представляет собой целое число, большее или равное двум, R меньше, чем S, и представляет собой R-ый и S-ый процесс 40.
Сеть 32 потока данных формирует пассивный структурный элемент потока данных, выполненный с возможностью распространения данных из процессов 40(1)-40(R) в процессы 40(R +1)-40(S). Сеть 32 потока данных включает в себя набор 34 из одного или более интерфейсов 14 цели, набор 36 из одного или более интерфейсов 12 источника и набор компонентов 38 сети, который включает в себя узлы 20 и пассивные блоки обработки, и взаимно соединяет набор 34 интерфейсов 14 цели с набором 36 интерфейсов 12 источника. Компоненты 38 сети могут включать в себя любой соответствующий тип, количество и/или комбинацию узлов 20 и пассивных блоков обработки, которые соединяют набор 34 интерфейсов 14 цели с набором 36 интерфейсов 12 источника любым соответствующим способом.
Процессы 40(1)-40(R) включают в себя соответствующие наборы 42(1)-42 (R) из одного или более интерфейсов 12 источника, где каждый набор 42 может включать в себя то же или другое количество интерфейсов 12 источника, что и в других наборах 42. Набор 34 интерфейсов 14 цели устанавливает набор 44 соединения 16 между набором 34 интерфейсов 14 цели и наборами 42(1)-42(R) интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборе 44 может соединяться с любым количеством интерфейсов 12 источника в наборах 42(1)-42(R) и любое количество интерфейсов 14 цели в наборе 44 может соединяться с каждым интерфейсом 12 источника в наборах 42(1)-42(R). Каждый интерфейс 12 источника в наборах 42 (l)-42(R) обеспечивает распространение данных из процессов 40(1)-40(R) в сеть 32 потока данных, предлагая данные в один или более интерфейсов 14 цели в наборе 44, как описано выше со ссылкой на Фиг. 1A. Один или более процессов 40(1)-40(R) также могут включать в себя один или более дополнительных наборов интерфейсов 12 источника (не показаны) и/или один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одной или более другими сетям 32 потока данных (не показаны).
Процессы 40(R +1)-40 (S) включают в себя соответствующие наборы 46(R+1)-46(S) из одного или более интерфейсов 14 цели, где каждый набор 46 может включать в себя то же или другое количество интерфейсов 14 цели, что и в других наборах 46. Наборы 46(R+1)-46(S) интерфейсов 14 цели устанавливают набор 48 соединения 16 между наборами 46(R +1)-46(S) интерфейсов 14 цели и наборов из 36 интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборах 46(R+1)-46(S) может подключаться к любому количеству интерфейсов 12 источника в наборе 36 и любое количество интерфейсов 14 цели в наборах 46(R+1)-46(S) могут подключаться к каждому интерфейсу 12 источника в наборе 36. Каждый интерфейс 12 источника в наборе 36 обеспечивает распространение данных из сети 32 потока данных в один или более процессов 40(R+1)-40(S), предлагая данные одному или более интерфейсам 14 цели в наборах 46(R+1)-46(S), как описано выше со ссылкой на Фиг. 1A. Один или более процессов 40(R+1)-40(S) также могут включать в себя один или более дополнительных наборов интерфейсов 14 цели (не показаны) и/или один или более наборов интерфейсов 12 источника (не показаны), которые соединяются с одной или более другими сетями 32 потока данных (не показаны).
Процессы 40(1)-40(R) могут предоставлять данные в процессы 40(R+1)-40(S), используя сеть 32 потока данных без какой-либо информации о процессах 40(R+1)-40(S). Аналогично, процессы 40(R+1)-40(S) могут принимать данные из процессов 40(1)-40(R), используя сеть 32 потока данных без какой-либо информации о процессах 40(1)-40(R).
Процесс может предоставлять данные в любое количество сетей потока данных и принимать данные из любого количества сетей потоков данных, как показано на Фиг. 4. На Фиг. 4 показана блок-схема, иллюстрирующая вариант осуществления сети 50 процесса с процессом 40, подключенным к сетям 32(1)-32(T) потока данных и 32(T+1)-32(V), где T представляет собой целое число, большее или равное единице, V представляет собой целое число, большее или равное двум, T меньше, чем V, и представляет T-ую и V-ую сети 32 потока данных.
Процесс 40 включает в себя набор инструкций программы, которые конфигурированы для приема данных из сетей 32(1)-32(T) потока данных и предоставления данных в сети 32(T+1)-32(V) потока данных. Процесс 40 включает в себя набор 54 из одного или более интерфейсов 14 цели, набора 56 одного или более интерфейсов 12 источника и набор компонентов 58 процесса и взаимно соединяет набор 54 интерфейсов 14 цели с набором 56 интерфейсов 12 источника. Компоненты 58 процесса могут включать в себя любой соответствующий тип, число и/или комбинацию инструкций и/или структур данных, которые соединяют набор 54 интерфейсов 14 цели с набором 56 интерфейсов 12 источника любым соответствующим способом.
Сети 32(1)-32(T) потока данных включают в себя соответствующие наборы 62(1)-62(T) одного или более интерфейсов 12 источника, где каждый набор 62 может включать в себя то же или другое количество интерфейсов 12 источника, что и в других наборах 62. Набор 54 интерфейсов 14 цели устанавливает набор 64 соединения 16 между набором 54 интерфейсов 14 цели и наборами 62(1)-62(T) интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборе 54 может соединяться с любым количеством интерфейсов 12 источника в наборах 62(1)-62 (T) и любое количество интерфейсов 14 цели в наборе 54 может соединяться с каждым интерфейсом 12 источника в наборах 62(1)-62(T). Каждый интерфейс 12 источника в наборах 62(1)-62(T) обеспечивает распространение данных из сетей 32(1)-32(T) потока данных в процесс 40, предлагая данные в один или более интерфейсов 14 цели в наборе 54, как описано выше со ссылкой на Фиг. 1A. Сети 32(1)-32(T) потока данных каждая включает в себя один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одним или более другими процессами 40 (не показаны). Сети 32(1)-32 (T) потока данных также могут включать в себя один или более дополнительных наборов интерфейсов 12 (не показаны) и/или один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одним или более другими процессами 40 (не показаны).
Сети 32 (T+1)-32 (V) потока данных включают в себя соответствующие наборы 66(T+1)-46(F) одного или более интерфейсов 14 цели, где каждый набор 66 может включать в себя то же или другое количество интерфейсов 14 цели, что и другие наборы 66. Наборы 66(T+1)-46(V) интерфейсов 14 цели устанавливают набор 68 соединений 16 между наборами 66(T+1)-46(V) интерфейсов 14 цели и набором 56 интерфейсов 12 источника. Как показано на Фиг. 1B и 1C, каждый интерфейс 14 цели в наборах 66(T+1)-46(V) может соединяться с любым количеством интерфейсов 12 источника в наборе 56, и любое количество интерфейсов 14 цели в наборах 66(T+1)-46(V) может соединяться с каждым интерфейсом 12 источника в наборе 56. Процесс 40 обеспечивает распространение данных в одну или более сетей 32(T+1)-32(V) потока данных, обеспечивая каждым интерфейсом 12 источника в наборе 56 предложение данных в один или более интерфейсов 14 цели в наборах 66(T+1)-46 (V), как описано выше со ссылкой на Фиг. 1 A. Сети 32(T+1)-32(V) потока данных также могут включать в себя один или боле наборов интерфейсов 12 источника (не показаны) и/или один или более наборов интерфейсов 14 цели (не показаны), которые соединяются с одним или более другими процессами 40 (не показаны).
На Фиг. 5 показана блок-схема, иллюстрирующая вариант осуществления блока 70 инициатора, выполненного с возможностью воплощения операции передачи. Блок 70 инициатора включает в себя интерфейс 12 источника, но не включает в себя какой-либо из интерфейсов 14 цели. Блок 70 инициатора включен в процесс 40 и обеспечивает распространение в процессе 40 данных в сеть 32 потока данных. В соответствии с этим блок 70 инициатора воплощает операцию передачи путем приема данных из процесса 40 и предоставления данных в одну или более подключенных сетей 32 потока данных.
Блок 70 инициатора может взаимодействовать или может не взаимодействовать с основным планировщиком процесса, который планирует процессы 40 для выполнения в компьютерной системе. Таким образом, блок 70 инициатора может не включать в себя интерфейс с планировщиком.
На Фиг. 6 показана блок-схема, иллюстрирующая вариант осуществления блока 80 триггера, выполненного с возможностью воплощения операции приема. Блок триггера 80 включает в себя интерфейс 14 цели, но не включает в себя какой-либо из интерфейсов 12 источника. Блок 80 триггера включен в процесс 40 и обеспечивает возможность приема данных в процессе 40 из сети 32 потока данных. Блок 80 триггера действует как конечная точка завершения или одна из любого количества конечных точек для сетей 32 потока данных. В соответствии с этим блок 80 триггера воплощает операцию приема путем приема данных из сети 32 потока данных и предоставления этих данных в процесс 40.
Блок 80 триггера также включает в себя интерфейс 82 планировщика. Интерфейс 82 планировщика взаимодействует с основным планировщиком процесса, который планирует процесс 40 для выполнения в компьютерной системе. В частности, интерфейс 82 планировщика работает с планировщиком, обеспечивая установку паузы в процессе 40 (например, блокирование) в ответ на прием операции, содержащей запуск блока 80 триггера, когда данные не доступны немедленно. Интерфейс 82 планировщика также работает с планировщиком, обеспечивая возобновление процесса 40 (например, разблокирование) в ответ на данные операции приема, включающий в себя достижение блоком 80 триггера блока 80 триггера.
На Фиг. 7 показана блок-схема, иллюстрирующая вариант осуществления сети 90 обработки, которая включает в себя операции «передать» и «принять». На Фиг. 7 процесс 40(1) принимает данные из процесса 40(2) и предоставляет данные в процесс 40(3). Для приема данных из процесса 40(2) блоку 80(1) триггера процесса 40(1) предлагают данные из блока 70(1) инициатора процесса 40(2) и блок 80(1) триггера принимает данные, как обозначено сетью 32A потока данных, которая воплощает операцию приема. Процесс 40(1) выполняет определенное вычисление в отношении данных и передает полученные в результате данные в процесс 40(3). Для передачи данных в процесс 40(3) блок 70(2) инициатор процесса 40(1) предлагает данные в блок 80(2) триггера процесса 40(3) и блок 80(2) триггера принимает данные, как обозначено сетью 32B потока данных, которая воплощает операцию передачи.
На Фиг. 8 показана блок-схема, иллюстрирующая вариант осуществления сетей 32 потока данных, выполненных с возможностью воплощения операции выбора и соединения. Сеть 32 потока данных включает в себя узлы 20(1)-20(W+1), где W представляет собой целое число, большее или равное двум, и представляет W-ый узел 20, W-ый процесс 40 и W-ый блок 70 инициатора. Каждый узел 20(1)-20(W+1) включает в себя интерфейс 12 источника и интерфейс 14 цели. Интерфейсы 14 цели в узлах 20(1)-20(W) принимают данные из соответствующих блоков 70(1)-70(W) инициатора в соответствующих процессах 40(1)-40(W). Интерфейсы 12 источника в узлах 20(1)-20(W) каждый предоставляет данные в интерфейс 14 цели в узле 20(W+1). Интерфейс 12 источника в узле 20(W+1) предоставляет данные в блок 70 триггера в процессе 40(W+1).
Для воплощения операции выбора узел 20(W+1) принимает данные только из первого из узлов 20(1)-20(W), c тем чтобы предложить данные в узел 20(W+1), и отклоняет предложения данных из всех остальных узлов 20(1)-20(W). Узел 20(W+1) предоставляет данные в блок 80 триггера в процессе 40(W+1).
В одном варианте выполнения каждый узел 20(1)-20(W) выполнен с возможностью использования своего соответствующего интерфейса 12 источника для предложения своей идентичности в качестве данных в узел 20(W+1) в ответ на предложение данных из соответствующих блоков 70(1)-70(W) инициатора. Узел 20(W+1) использует свой интерфейс 14 цели с тем, чтобы принять первую идентичность, предложенную из набора узлов 20(1)-20(W), и отклонить все последующие идентичности, предлагаемые из набора узлов 20(1)-20(W). Узел 20(1)-20(W), который принимает ответ о приеме из узла 20(W+1), используя свой интерфейс 12 источника, принимает данные, предложенные из соответствующего блока 70(1)-70(W) инициатора, используя свой интерфейс 14 цели. Узлы 20(1)-20(W), которые принимают ответы-отклонения из узла 20(W+1), используя свои соответствующие интерфейсы 12 источника, отклоняют данные, предложенные из соответствующих блоков 70(1)-70(W) инициатора, используя свои соответствующие интерфейсы 14 цели. Узел 20(W+1) использует свой интерфейс 12 источника с тем, чтобы предложить принятую идентичность как данные в блок 70 триггера в процессе 40(W+1). Блок 70 триггера отвечает путем приема идентичности из узла 20(W+1). Процесс 40(W+1) затем получает данные операции выбора из узла 20(1)-20(W), используя идентичность, принятую из узла 20(W+1).
В другом варианте выполнения могут быть исключены узлы 20(l)-20(W) и узел 20(W+1) может принимать данные непосредственно из блоков 70(1)-70(W) инициатора. В этом варианте выполнения блоки 70(1)-70(W) инициатора предлагают данные в узел 20(W+1). Узел 20(W+1) использует свой интерфейс 14 цели, с тем чтобы принять первые данные, предложенные из набора блоков 70(1)-70(W) инициатора, и отклонить все последующие данные, предложенные из набора блоков 70(1)-70(W) инициатора. Узел 20(W+1) использует свой интерфейс 12 источника для предложения принятых данных в блок 70 триггера в процессе 40(W+1). Блок 70 триггера отвечает, принимая данные из узла 20(W+1) для завершения операции выбора.
В других вариантах выполнения операция выбора может быть воплощена в сети 32C потока данных, используя другие комбинации структуры 10 источник-цель, которая представляет собой интерфейс с другими комбинациями блоков 70 инициатора и/или блоков 80 триггера.
На Фиг. 9 представлена блок-схема, иллюстрирующая вариант осуществления сети 92 процесса, который включает в себя операцию выбора. На Фиг. 9 операция выбора воплощена между процессом 40(4) и процессами 40(5) и 40(6) путем включения сети 32C потока данных. Используя сеть 32C потока данных, процесс 40(4) принимает данные из первого из процессов 40(5) и 40(6), которые предоставляют данные в сеть 32C потока данных. Процесс 40(4) выполняет некоторые расчеты по данным и передает получаемые в результате данные в процесс 40(7), используя сеть 32D потока данных, которая воплощает операцию передачи.
Вариант осуществления, показанный на Фиг. 8, также можно использовать для воплощения операции соединения. Для воплощения операции соединения узел 20(W+1) ожидает приема данных из всех узлов 20(1)-20(W) перед тем, как будут предложены данные из всех узлов 20(1)-20(W) в блок 80 триггера в процессе 40(W+1).
В одном варианте выполнения каждый узел 20(1)-20(W) выполнен с возможностью предложения своей идентичности как части данных, предложенных в узел 20(W+1), используя интерфейс 12 источника в ответ на предложение данных из соответствующих блоков 70(1)-70(W) инициаторов. Узел 20(W+1) отслеживает предложения, принятые, используя свой интерфейс 14 цели, для определения, когда все узлы 20(1)-20(W) предложили свои идентичности. Узел 20(W+1) использует свой интерфейс 14 цели для ответа на все предложения, за исключением последнего предложения, которое было отложено. В ответ на предложения из всех принятых узлов 20(1)-20(W), узел 20(W+1) использует свой интерфейс 14 цели для вызова операции резервирования по всем узлам 20(1)-20(W), за исключением узла 20(1)-20(W), который предоставил последнее предложение. Узел 20(W+1) ожидает ответа в узел 20(1)-20(W), который предоставил последнее предложение, принятое до момента, когда узел 20(W+1) определяет, все ли резервирование было выполнено успешно, или какие-либо из резервирований были неудачными.
Все узлы 20(1)-20(W), которые приняли вызов на резервирование, используют свои соответствующие интерфейсы 14 цели для вызова операции резервирования по соответствующим блокам 70(1)-70(W) инициатора. Блоки 70(1)-70(W) инициатора отвечают на вызовы резервирования, предоставляя индикатор либо успешного, или неудачного выполнения на соответствующий вызов узлов 20(1)-20(W). Если блок 70 инициатора больше не содержит предложенные данные или предложенные данные были зарезервированы другим узлом 20 (не показан), блок 70 инициатора отвечает на вызов резервирования показателем неудачного выполнения. В противном случае блок 70 инициатора отвечает на вызов резервирования показателем удачного выполнения.
Узлы 20(1)-20(W) детектируют неудачное резервирование в ответ на прием индикаторов неудачного выполнения из соответствующих блоков 10(1)-70(W) инициаторов. Узлы 20(1)-20(W) также могут детектировать неудачное резервирование в ответ на отключение блоков 70(1)-70(W) инициаторов от соответствующих узлов 20(1)-20(W). Каждый узел 20(1)-20(W), который детектирует неудачное резервирование, отвечает на вызов резервирования узла 20(W+1) индикатором неудачного выполнения. Каждый узел 20(1)-20(W), который принял индикатор успешного исполнения из соответствующих блоков 70(1)-70(W) инициатора, отвечает на вызов резервирования узла 20(W +1) индикатором успешного выполнения.
Узел 20(W+1) детектирует любое неудачное резервирование в ответ на прием индикаторов неудачного выполнения из узлов 20(1)-20(W) или в ответ на отключение любого из узлов 20(1)-20(W). Если узел 20(W+1) детектирует какое-нибудь неудачное резервирование, узел 20(W+1) использует свой интерфейс 14 цели для вызова операции высвобождения для всех узлов 20(1)-20(W), которые ответили на вызовы резервирования индикаторами успешного выполнения. Узел 20(W+1) также возвращает показатель отложенного выполнения в узел 20(1)-20(W), который представил последнее предложение, принятое узлом 20(W+1). В ответ на прием вызова высвобождения узлы 20(1)-20(W) высвобождают успешно выполненное резервирование и, в свою очередь, вызывают операции высвобождения для соответствующих блоков 70(1)-70(W) инициатора. Блоки 10(1)-70(W) инициатора высвобождают успешное резервирование в ответ на прием вызова на высвобождение из узлов 20(1)-20(W).
Если узел 20(W+1) детектирует, что все резервирования были выполнены успешно, узел 20(W+1) использует свой интерфейс 14 цели для вызова операции потребления для всех узлов 20(1)-20(W), за исключением узла 20(1)-20(W), который предоставил последнее предложение, принятое узлом 20(W+1). Узел 20(W+1) возвращает «принято» в узел 20(1)-20(W), который предоставил последнее предложение, и этот узел 20(1)-20(W), в свою очередь, возвращает «принято» в соответствующий блок 70(1)-70(W) инициатора. Все узлы 20(1)-20(W), которые приняли вызов на потребление, в свою очередь, используют свои соответствующие интерфейсы 14 цели для вызова операции потребления по соответствующим блокам 70(1)-70(W) инициатора. Узел 20(W+1) использует свой интерфейс 12 источника с тем, чтобы предложить комбинированные данные в блок 70 триггера в процессе 40(W +1). Блок 70 триггера отвечает путем приема данных из узла 20(W+1) для завершения совместной операции.
В другом варианте выполнения узел 20(W +1) передает сигналы в блок 70 триггера в процессе 40(W+1), используя булево значение, когда все данные были зарезервированы или приняты в узлах 20(1)-20(W). Блок 70 триггера получает данные из узлов 20(1)-20(W). В этом варианте выполнения узел 20(W+1) возвращает принятые обозначения в последний из узлов 20(1)-20(W), которые предоставляют данные.
В других вариантах выполнения совместная операция может быть воплощена в сети 32C потока данных, используя другие комбинации структуры 10 источник-цель, которая составляет интерфейс с другими комбинациями блоков 70 инициатора и/или блоков 80 триггера.
На Фиг. 10 показана блок-схема, иллюстрирующая вариант осуществления сети 94 процесса, которая включает в себя операцию соединения. На Фиг. 10 операция соединения воплощена между процессом 40(8) и процессами 40(9) и 40(10) путем включения в них сети 32C потока данных. Используя сеть 32C потока данных, процесс 40(4) принимает данные, предоставляемые из каждого из процессов 40(9) и 40(10) в сеть 32C потока данных. Процесс 40(8) выполняет некоторые расчеты, используя данные, и передает полученные в результате данные в процесс 40(11), используя сеть 32E потока данных, которая воплощает операцию передачи.
Такие операции, как «передача», «прием», «выбор» и «соединение», представленные выше со ссылкой на фигуры 5-10, могут быть скомбинированы в более сложные конфигурации в других вариантах выполнения.
На Фиг. 11 показана блок-схема, иллюстрирующая вариант осуществления компьютерной системы 100, которая выполнена с возможностью воплощения исполнительной программной среды, включающей в себя планировщик процесса.
Компьютерная система 100 включает в себя один или более пакетов 102 процессора, систему 104 памяти, ноль или более устройств 106 ввода/вывода, ноль или более устройств 108 дисплея, ноль или более периферийных устройств 110 и ноль или более сетевых устройств 112. Пакеты 102 процессора, система 104 памяти, устройства 106 ввода/вывода, устройства 108 дисплея, периферийные устройства 110 и сетевые устройства 112 связаны между собой, используя набор взаимных соединений 114, которые включают в себя любой соответствующий тип, количество и конфигурацию контроллеров, шин, интерфейсов и/или других проводных или беспроводных соединений.
Компьютерная система 100 представляет любое соответствующее устройство обработки, выполненное с возможностью использования его для общего назначения или специального назначения. Примеры компьютерной системы 100 включают в себя сервер, персональный компьютер, переносной компьютер, планшетный компьютер, карманный персональный компьютер (PDA, КПК), мобильный телефон и аудио/видео устройство. Компоненты компьютерной системы 100 (то есть пакеты 102 процессора, система 104 памяти, устройства 106 ввода/вывода, устройства 108 дисплея, периферийные устройства 110, сетевые устройства 112 и взаимные соединения 114) могут содержаться в общем корпусе (не показан) или в любом соответствующем количестве отдельных корпусов (не показаны).
Пакеты 102 процессора включают в себя аппаратные потоки 116(1)-116(X), где X представляет собой целое число, большее или равное единице, и представляет X-ый аппаратный поток 116. Каждый аппаратный поток 116 в пакетах 102 процессора выполнен с возможностью доступа и выполнения инструкций, сохраненных в системе 104 памяти. Инструкции могут включать в себя основную систему ввода-вывода (BIOS, ОСВВ) или встроенное программное обеспечение (не показано), операционную систему (OS, ОС) 120, уровень 121 управления ресурсами, исполняемую платформу 122 и приложения 124. Каждый аппаратный поток 116 может выполнять инструкции совместно с или в ответ на информацию, принятую из устройств 106 ввода/вывода, устройств 108 дисплея, периферийных устройств 110 и/или сетевых устройств 112.
Компьютерная система 100 загружает и выполняет OS 120. OS 120 включает в себя инструкции, выполняемые аппаратными потоками 116 для управления компонентами компьютерной системы 100, и предусматривает набор функций, которые обеспечивают доступ и использование приложений 124 компонентов. В одном варианте выполнения OS 120 представляет собой операционную систему Windows. В других вариантах выполнения OS 120 представляет собой другую операционную систему, пригодную для использования с компьютерной системой 100.
Уровень 121 управления ресурсами включает в себя инструкции, которые могут быть выполнены совместно с OS 120, для выделения ресурсов компьютерной системы 100, включая в себя аппаратные потоки 116. Уровень 121 управления ресурсами может быть включен в компьютерную систему 100, как библиотека функций, доступных для одного или более приложений 124, или как интегрированная часть OS 120.
Исполнительная платформа 122 включает в себя инструкции, которые могут быть выполнены совместно с OS 120, и уровень 121 управления ресурсами для генерирования исполнительной программной среды и предоставления исполнительных функций в приложения 124. Эти исполнительные функции включают в себя функцию планировщика. Будучи вызванной, функция планировщика формирует планировщик, который во время работы планирует процессы программ, таких как приложения 124, для выполнения одним или более аппаратными потоками 116(1)-116(A). Исполнительные функции могут быть включены в компьютерную систему 100, как часть приложения 124, как библиотека функций, доступных для одного или более приложений 124, или как интегральная часть OS 120 и/или уровень 121 управления ресурсами.
Каждое приложение 124 включает в себя инструкции, которые могут быть выполнены совместно с OS 120, уровнем 121 управления ресурсами и/или исполнительной платформой 122, для обеспечения выполнения требуемых операций компьютерной системой 100. Каждое приложение 124 представляет одну или более программ, которые могут быть выполнены в планировщике, предусмотренном исполнительной платформой 122.
Система 104 памяти включает в себя любой соответствующий тип, количество и конфигурацию энергозависимых или энергонезависимых устройств-накопителей, выполненных с возможностью сохранения инструкций и данных. Устройства-накопители системы 104 памяти представляют считываемые компьютером носители, которые сохраняют выполняемые компьютером инструкции, включающие в себя OS 120, уровень 121 управления ресурсами, исполнительную платформу 122 и приложения 124. Инструкции могут быть выполнены компьютерной системой для выполнений функций и способов OS 120, уровня 121 управления ресурсами, исполнительной платформы 122 и приложениями 124, описанными здесь. Примеры устройств-накопителей в системе 104 памяти включают в себя приводы жесткого диска, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), приводы и карты запоминающего устройства типа флэш и магнитные и оптические диски.
Система 104 памяти сохраняет инструкции и данные, принятые из пакетов 102 процессора, устройств 106 ввода/вывода, устройств 108 дисплея, периферийных устройств 110 и сетевых устройств 112. Система 104 памяти предоставляет сохраненные инструкции и данные в пакеты 102 процессора, устройства 106 ввода/вывода, устройства 108 дисплея, периферийные устройства 110 и сетевые устройства 112.
Устройства 106 ввода/вывода включают в себя любой соответствующий тип, количество и конфигурацию устройств ввода/вывода, выполненных с возможностью ввода инструкций или данных от пользователя в компьютерную систему 100 и вывода инструкции или данных из компьютерной системы 100 пользователю. Примеры устройств 106 ввода/вывода включают в себя клавиатуру, мышь, сенсорную панель, сенсорный экран, кнопки, наборные диски, клавиши и переключатели.
Устройства 108 дисплея могут включать в себя любой соответствующий тип, количество и конфигурацию устройств дисплея, выполненных с возможностью вывода текстовой и/или графической информации пользователю компьютерной системы 100. Примеры устройств 108 дисплея включают в себя монитор, экран дисплея и проектор.
Периферийные устройства 110 включают в себя любой соответствующий тип, количество и конфигурацию периферийных устройств, выполненных с возможностью работы с одним или более другими компонентами в компьютерной системе 100, для выполнения общих или специфичных функций обработки.
Сетевые устройства 112 включают в себя любой соответствующий тип, количество и конфигурацию сетевых устройств, выполненных с возможностью обеспечения для компьютерной системы 100 передачи данных через одну или более сетей (не показаны). Сетевые устройства 112 могут работать в соответствии с любым соответствующим сетевым протоколом и/или конфигурацией для обеспечения возможности передачи информации компьютерной системой 100 в сеть или приема компьютерной системой 100 информации из сети.
В варианте выполнения, показанном на Фиг. 11, одна или более из OS 120, уровня 121 управления ресурсами, исполнительной платформы 122 и приложений 124 может включать в себя сети процесса с процессами 40, соединенными с использованием сетей 32 потока данных, которые включают в себя любое соответствующее количество структур 10 источник-цель, как описано выше со ссылкой на фигуры 1A-10.
Описанные выше варианты осуществления предоставляют композиционную модель, называемую структурой источник-цель, для соединения процессов в сети процессов, в общем, гибким и расширяемым способом. Модель позволяет комбинировать общие конструкты алгебры процесса с сетями потока данных для формирования сетей процесса. Типичные алгебраические операции процесса, такие как передача, прием, выбор и соединение, могут быть выражены на основе композиционной модели для формирования сетей потока данных, которые предоставляют полностью выполненные с возможностью взаимодействия между процессами алгебраические операции. Такая модель может применяться в широком массиве простых сетей потока данных, а также в более сложных сетях потока данных.
Модель также позволяет использовать свободно соединенные сети процесса. Используя свободно соединенные сети процесса, процесс может не иметь или может иметь ограниченную информацию о других процессах, с которыми данный процесс взаимодействует. Вместо этого процесс имеет информацию о точках соединения с другими процессами и о значимости этих точек соединения.
Свободно соединенные сети процесса можно использовать для достижения в высокой степени пригодных для обслуживания программ и позволяют использовать более сложную и изысканную логику маршрутизации на основе конструктов потока данных. Пассивные сети потока данных могут более эффективно направлять данные из одного процесса в другой, чем активные процессы, действующие как посредники.
Хотя конкретные варианты осуществления были представлены и описаны здесь, для специалистов в данной области техники будет понятно, что различные альтернативные и/или эквивалентные варианты осуществления могут быть представлены для замены конкретных показанных и описанных вариантов осуществления без выхода за пределы объема настоящего изобретения. Данная заявка предназначена для охвата любых адаптаций или вариаций специфичных вариантов осуществления, описанных здесь. Поэтому предполагается, что настоящее изобретение ограничено только формулой изобретения и ее эквивалентами.