Linda [1,4,13] jest projektem początkowo rozwijanym przez Yale University; obecnie zajmuje się nim firma Scientific Computing Associates. Linda zapewnia pojedynczą, logiczną pamięć dzieloną dla wszystkich procesów w systemie. Każdy proces widzi tę samą przestrzeń danych i może pisać lub czytać dane, które są współdzielone przez wszystkie procesy. Z Lindą jest związany język zapytań, umożliwiający komunikację między procesami. Istnieje grupa rozszerzeń dla C, C++, Fortranu i Javy, umożliwiających programowanie aplikacji współbieżnych.
Krotka (ang. tuple) to ciąg danych o określonych typach, podobny do sparametryzowanej listy. Zbiór krotek tworzy środowisko określane mianem przestrzeni krotek (ang. tuple space). Procesy korzystające z przestrzeni krotek Lindy wykonują się współbieżnie i wymieniają dane tworząc, czytając i pobierając krotki z przestrzeni. Każdy program napisany w odpowiednim języku programowania może działać współbieżnie z innymi programami i wykonywać następujące pseudooperacje:
Powyższe operacje są operacjami nieblokującymi. Rozszerzeniem dla tych operacji są:
Operacje wykonywane przez procesy są asychroniczne, komunikacja między nimi następuje za pomocą współdzielonej przestrzeni. Aby pobrać lub odczytać krotkę z przestrzeni proces podaje krotkę-szablon, która opisuje wygląd poszukiwanej krotki.
Na rysunku 1.2 można zobaczyć przykład komunikacji procesów w przestrzeni krotek Lindy. Proces 1 pobiera krotkę z przestrzeni kasując ją, przetwarza i następnie zapisuje nową w tej samej przestrzeni. Proces 2 jest zablokowany do momentu, gdy pojawi się poszukiwana krotka. Krotką tą okazuje się krotka zapisana do przestrzeni przez Proces 1. Gdy krotka pojawia się, Proces 2 zostaje uruchomiony, pobiera krotkę, przetwarza i zapisuje ją do drugiej przestrzeni. Proces 3 odczytuje krotkę z przestrzeni i zapisuje nową krotkę. Proces 4 oczekuje na pojawienie się w przestrzeni krotki pasującej do poszukiwanego szablonu.
Z punktu widzenia mojej pracy, przestrzeń krotek Lindy jest sieciowym buforem komunikacyjnym o właściwościach bazy danych, która umożliwia komunikację asynchroniczniczną. Przestrzeń krotek jest idealnym przykładem warstwy pośredniej dla sieciowych usług dostępnych dla dowolnego klienta w sieci.
Ideą systemu, w którym jest możliwa rozproszona komunikacja za pomocą krotek, zainteresowało się kilka zespołów projektowych. Pracując niezależnie, firma IBM opracowała TSpaces [41], zaś Sun Microsystems Jini/JavaSpaces [19]. W obydwu projektach zastosowano pomysł przestrzeni krotek Lindy do stworzenia środowiska dla systemów rozproszonych. W rozdziale 1.3.1 i 1.3.2 przedstawię charakterystykę tych systemów, ponieważ okazały się one najbardziej przydatne dla architektury systemu CoSMoL. Pozostałe systemy, które również opierają się na tej idei, to Mars [24], PageSpace [6], TuCSoN [29].