Mitä on prosessien välinen viestintä?

Interprosessiviestintä (IPC) on tietokoneohjelmoinnissa käytetty tekniikka, joka mahdollistaa eri ohjelmistojen vuorovaikutuksen. Tietokoneen käyttöjärjestelmä helpottaa usein IPC: tä, vaikka vaihtoehtoisia menetelmiä on olemassa. Tämän ohjelmiston välisen viestinnän tarkka muoto voi vaihdella, ja se vaihtelee suorista viesteistä keskusvarastoon, johon tiedot tallennetaan ja haetaan. Prosessien välinen viestintä voi tarjota etuja, kuten paremman suorituskyvyn, vähemmän tietokoneresursseja ja turvallisuuden parantamisen.

Ohjelmoinnin maailmassa ohjelmistosta puhutaan prosessina tai yksittäisenä koodina, joka voidaan ajaa tai suorittaa tietokoneen keskusyksikössä (CPU). Monet sovellukset käyttävät itse asiassa useampaa kuin yhtä prosessia, mikä voi parantaa suorituskykyä ja vakautta. Verkkoselain, jossa on useita avoimia sivuja, voi käyttää erillistä prosessia kunkin sivun lataamiseen; tämä eristää jokaisen sivun muista ja estää huonosti käyttäytyvän verkkosivun kaatumasta koko selainta. Tässä esimerkissä jokainen verkkosivun hahmontamisesta vastaava prosessi on yhteydessä yhteen tai useampaan prosessiin, jotka käsittelevät muita selaimen ominaisuuksia, kuten käyttöliittymäkomponentteja.

Useimmat tietokoneiden käyttöjärjestelmät tarjoavat useita erilaisia ​​mekanismeja prosessien väliseen viestintään. Jotkin muut ohjelmistotekniikat tarjoavat myös tukea IPC: lle. Lisäksi IPC: tä voidaan käyttää joko yhdessä tietokoneessa tai verkon yli. Nämä mekanismit voivat vaihdella niiden toteutuksessa, mutta useimmat voidaan ryhmitellä muutamaan luokkaan viestinnän tapaan.

Joissakin tapauksissa viestejä vaihdetaan suoraan prosessien välillä, usein yksisuuntaisesti tai asynkronisesti. Muutamia tällä tavalla toimivia IPC -menetelmiä ovat signaalit, putket ja pistorasiat. Prosessien välinen viestintä voi tapahtua myös käyttämällä tiettyä sijaintia, jossa tietoja voidaan käyttää useamman kuin yhden prosessin avulla. Yksi esimerkki tästä on jaettu muisti, tekniikka, jossa useat prosessit käyttävät samaa tietokoneen muistin osaa vaihtaakseen tietoja. Tapa, jonka ohjelmoija voi valita, riippuu tarvittavan tiedonsiirron nopeudesta ja määrästä sekä muista näkökohdista.

On monia syitä, miksi ohjelmoija saattaa haluta hyödyntää prosessien välistä viestintää ohjelmistoluotoissaan. Suuren sovelluksen jakaminen useisiin pienempiin IPC: n kautta kommunikoiviin prosesseihin voi parantaa suorituskykyä ja turvallisuutta. Ohjelma voi käynnistää ja lopettaa prosesseja tarpeen mukaan sen sijaan, että kaikki komponentit toimisivat kerralla ja kuluttavat laitteistoresursseja. Jos osa ohjelmasta tarvitsee erityisoikeuden tietokoneen laitteistoon tai muuhun käynnissä olevaan ohjelmistoon, yksi tai useampi prosessi voi toimia järjestelmänvalvojan tai “root” -tilin alla, kun muu ohjelma toimii tavallisena käyttäjänä.