Vad är interprocesskommunikation?

Interprocess communication (IPC) är en grupp tekniker som används i datorprogrammering som gör att olika programvaror kan interagera. IPC underlättas ofta av ett datoroperativsystem, även om alternativa metoder finns. Den exakta formen för denna kommunikation mellan mjukvara kan variera, allt från direktmeddelanden till en central depå där information lagras och hämtas. Kommunikation mellan processer kan ge fördelar som högre prestanda, färre datorresurser förbrukade och förbättrad säkerhet.

I programmeringsvärlden talar man om mjukvara i termer av en process, eller enstaka stycke kod, som kan köras eller exekveras på en dators centrala processorenhet (CPU). Många applikationer använder faktiskt mer än en process, vilket kan öka prestanda och stabilitet. En webbläsare med flera öppna sidor kan använda en separat process för att ladda varje sida; detta isolerar varje sida från de andra och förhindrar att en illa uppförd webbsida kraschar hela webbläsaren. I det här exemplet kommunicerar varje process som är ansvarig för att rendera en webbsida med en eller flera processer som hanterar andra aspekter av webbläsaren, såsom komponenter i användargränssnittet.

De flesta datoroperativsystem tillhandahåller flera olika mekanismer för kommunikation mellan processer. Vissa andra mjukvarutekniker erbjuder även stöd för IPC. Dessutom kan IPC användas antingen på en enda dator eller över ett nätverk. Dessa mekanismer kan variera i hur de implementeras, men de flesta kan grupperas i några kategorier baserat på hur kommunikationen sker.

I vissa fall utbyts meddelanden direkt mellan processer, ofta på ett enkelriktat eller asynkront sätt. Några få IPC-metoder som fungerar på detta sätt inkluderar signaler, rör och uttag. Kommunikation mellan processer kan också ske genom användning av en specifik plats där data kan nås av mer än en process. Ett exempel på detta är delat minne, en teknik där flera processer kommer åt samma del av en dators minne för att utbyta information. Metoden en programmerare kan välja beror på hastigheten och volymen av datautbyte som behövs samt andra överväganden.

Det finns många anledningar till att en programmerare vill använda kommunikation mellan processer i sina programvaruskapelser. Att dela upp en stor applikation i många mindre processer som kommunicerar via IPC kan öka såväl prestanda som säkerhet. Ett program kan starta och avsluta processer efter behov istället för att alla komponenter körs samtidigt och förbrukar hårdvaruresurser. Om en del av ett program behöver särskild åtkomst till en dators hårdvara eller annan programvara som körs, kan en eller flera processer fungera under ett administratörs- eller ”root”-konto medan resten av programmet körs som en vanlig användare.