Omgivningskalkyl
Inom datavetenskap är omgivningskalkylen en processkalkyl som utarbetades av Luca Cardelli och Andrew D. Gordon 1998 och användes för att beskriva och teoretisera om samtidiga system som inkluderar mobilitet . Mobilitet innebär här både beräkningar som utförs på mobila enheter ( dvs. nätverk som har en dynamisk topologi), och mobil beräkning ( dvs exekverbar kod som kan flytta runt i nätverket). Omgivningskalkylen ger ett enhetligt ramverk för modellering av båda typerna av mobilitet. Det används för att modellera interaktioner i sådana samtidiga system som Internet .
Sedan starten har omgivningskalkylen vuxit till en familj av närbesläktade omgivningskalkyler.
Informell beskrivning
Omgivningar
Den grundläggande primitiva för omgivningskalkylen är omgivningen . En omgivning definieras informellt som en avgränsad plats där beräkning kan ske. Begreppet gränser anses vara nyckeln till att representera mobilitet, eftersom en gräns definierar en innesluten beräkningsagent som kan flyttas i sin helhet. Exempel på miljöer inkluderar:
- en webbsida (avgränsad av en fil)
- ett virtuellt adressutrymme (avgränsat av ett adresseringsintervall)
- ett Unix-filsystem (avgränsat inom en fysisk volym)
- ett enda dataobjekt (avgränsat av " själv ")
- en bärbar dator (avgränsad av dess fodral och dataportar)
De viktigaste egenskaperna för omgivningar i omgivningskalkylen är:
- Ambients har namn, som används för att styra åtkomsten till omgivningen.
- Ambients kan kapslas in i andra omgivningar (som representerar till exempel administrativa domäner)
- Omgivningar kan flyttas som en helhet.
Operationer
Beräkning representeras som överskridandet av gränser, dvs. omgivningens rörelse. Det finns fyra grundläggande funktioner (eller funktioner) på omgivningar:
- instruerar den omgivande omgivningen att ange någon syskonmiljö och fortsätt sedan som
- instruerar den omgivande omgivningen att lämna sin överordnade omgivning
- instruerar den omgivande omgivningen att lösa upp gränsen för en omgivande som ligger på samma nivå
- gör valfritt antal kopior av något
Omgivningskalkylen ger en reduktionssemantik som formellt definierar vad resultatet av dessa operationer är.
Kommunikation inom ( dvs lokal till) en omgivning är anonym och asynkron. Utdataåtgärder släpper namn eller funktioner till den omgivande omgivningen. Inmatningsåtgärder fångar ett värde från omgivningen och binder det till en variabel. Icke-lokal I/O kan representeras i termer av dessa lokala kommunikationsåtgärder på en mängd olika sätt. Ett tillvägagångssätt är att använda mobila "messenger"-agenter som bär ett meddelande från en omgivning till en annan (med de funktioner som beskrivs ovan). Ett annat tillvägagångssätt är att emulera kanalbaserad kommunikation genom att modellera en kanal i termer av omgivningar och operationer på dessa omgivningar. De tre grundläggande omgivande primitiverna, nämligen in , out och open är tillräckligt uttrycksfulla för att simulera namnöverförande kanaler i π-kalkylen .