Ero sivun ”Prosessi (tietotekniikka)” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Kahvat eivät liity prosessikäsitteeseen, vaan ovat siitä täysin irrallinen abstraktio.
Fri13 (keskustelu | muokkaukset)
Tarkennusta -än ja -ssä kanssa ym.
Rivi 1:
[[Tietotekniikka|Tietotekniikassa]] '''prosessi''' on [[käyttöjärjestelmä]]ssän ajossa oleva [[tietokoneohjelma|ohjelma]]. Jokaisella prosessilla on yleensä käytössä oma muistialue ja muita resursseja, joihin muut prosessit eivät pääse käsiksi. UseimmissaUseimmat käyttöjärjestelmissäkäyttöjärjestelmät ylläpitävät näitä tietoja ylläpidetään prosessitaulussa. Eri prosessit voivat [[prosessien välinen kommunikaatio|kommunikoida]] keskenään lukuisilla menetelmillä. Usein prosessit koostuvat yhdestä tai useammasta [[#Säie|säikeestä]].
 
Typistetysti voidaan esittää prosessille kolme eri tilaa. Sitä voidaan ''suorittaa'' ({{k-en|running}}), se voi olla ''valmiustilassa'' ({{k-en|ready, ready to run. suspended}}), tai ''odottavana/nukkuvana'' ({{k-en|wait, blocked, asleep}}). Odotustilassa oleva prosessi voi odottaa mitä tahansa tapahtumaa, kuten esimerkiksi oheislaitteen toimintaa, viestiä toiselta prosessilta tai ajan kulumista.
 
Prosessi siirtyy valmiustilasta suoritustilaan siten, että käyttöjärjestelmän ''vuorontaja'' ({{k-en|scheduler, dispatcher}}) toiminto valitsee sen ajoonsuoritukseen. Odotustilaan prosessi siirtyy, jos se tekee sellaisen käyttöjärjestelmäkutsunjärjestelmäkutsun ({{k-en|system call}}), johonjota käyttöjärjestelmä ei voi vastatasuorittaa heti. Tällainen kutsu voisi olla vaikkapa lukupyyntö näppäimistöltäohjeislaitteelta tai levyltäkeskusmuistista. Kun odottaminen päättyy, prosessi siirtyy valmiustilaan, ja sykli alkaa alusta. Jos järjestelmässä on irrottava ({{k-en|pre-emptive}}) vuoronnus, prosessi voi siirtyä myös suoritustilasta valmiustilaan.
 
Vaihtaessaan säiettä tai prosessia toiseen vuorontaja käyttää jotain vuoronnusmenetelmää. Menetelmästä riippuu hyvin pitkälle se, mikä odottavista prosesseista valitaan ajoon. Menetelmiä ovat muun muassa kiinteä prioriteetti ({{k-en|fixed priority}}) (usein liitettynä irrottavaan vuoronnukseen, {{k-en|fixed priority pre-emptive scheduling, FPPE}}), vaihteleva prioriteetti ({{k-en|dynamic priority}}) (useita erilaisia tapoja vaihtaa prioriteettia), lyhyin tehtävä ensin ({{k-en|shortest remaining time, SRT}}), lähin määräaika ensin ({{k-en|earliest deadline first, EDF}}), jonomenetelmä ({{k-en|first in, first out, FIFO, myös first come, first served, FCFS}}) ja sen lähisukulainen kiertovuorottelu ({{k-en|round robin, RR}}). Vain osa vuoronnonmenetelmistä sopii reaaliaikaiseen vuoronnukseen ({{k-en|real-time scheduling}}).
 
[[Unix]]-käyttöjärjestelmässä ja siitä vaikutteita ottaneissa käyttöjärjestelmissä prosessi ei voi syntyä tyhjästä, vaan jokaisen prosessin on käynnistänyt jokin toinen prosessi, jota nimitetään prosessin ''isäprosessiksi''. Vastaavasti prosessin käynnistämät prosessit ovat sen ''lapsiprosesseja''. Kaikki prosessit ovat joko suoraan tai välillisesti [[init]]-prosessin jälkeläisiä. Init-prosessin prosessinumero on aina 1, ja [[käyttöjärjestelmän ydin]]käyttöjärjestelmä käynnistää sen osanaheti koneenitsensä käynnistyssekvenssiäjälkeen. Uusi prosessi luodaan fork-kutsulla, mutta tämä ei vielä vaihda suoritettavaa ohjelmaa.
 
== Säie ==
NykykäyttöjärjestelmissäNykykäyttöjärjestelmät ontukevat usein perinteistä prosessia kevyempikevyempää prosessiprosessia, säiesäiettä ({{k-en|thread, task, light-weight process}}). Säie eroaa prosessista siten, että sillä ei ole omia resursseja, vaan se käyttää sen prosessin resursseja, johon se kuuluu. Yhdessä prosessissa on silloin yksi tai useampia säikeitä. Säikeen vaihto prosessin sisällä on kevyempää kuin prosessien välillä. Tällaisessa järjestelmässä edellä kuvattu prosessin kolmitilamalli toteutuu säietasolla ja prosessin tehtäväksi jää hallinnoidakäyttää käyttöjärjestelmän niille sallittuja yhteisiä resursseja.
 
[[Luokka:Käyttöjärjestelmä]]