Ero sivun ”Prosessi” versioiden välillä

Siirry navigaatioon Siirry hakuun
5 946 merkkiä lisätty ,  27. marraskuuta 2020
p
ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
 
pEi muokkausyhteenvetoa
 
(15 välissä olevaa versiota 10 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
{{perustietoa}}
{{perustietoa}}
*[[wikipedia:fi:Prosessi|Prosessi Wikipediassa]]
Kun ohjelma käynnistetään, [[käyttöjärjestelmä]] luo '''prosessin''', jona ohjelmaa ajetaan. Prosessit yksilöidään [[PID]]-numeroilla ("process id"). Sovellus voi muodostua useammasta prosessista, joita se käynnistää [[fork]]-kutsuilla.
Käynnissä olevia ohjelmia sanotaan prosesseiksi. Jotkut sovellukset saattavat käyttää useita prosesseja.
 
Itse prosessi voi koostua useammasta [[säie|säikeestä]], jotka prosesseista poiketen jakavat muistiavaruutensa ja muita resursseja. Linuxissa säikeet on toteutettu käytännössä itsenäisinä prosesseina, joita luotaessa vain on määritelty myös mitkä resurssit halutaan yhteisiksi ([[clone]]-kutsulla). Saman prosessin säikeillä on nykyään sama PID (mutta eri säie-ID).
 
Säie on se yksikkö, jolle varataan prosessoriaikaa, eli saman ohjelman eri säikeet tai prosessit voivat moniprosessorikoneella kukin olla ajossa samanaikaisesti eri prosessoreilla (rinnakkaistus).
 
__TOC__
==Prosessien tausta-ajo==
''Prosessien tausta-ajoa on käsitelty myös artikkelissa [[Komentorivin perusteet]].''
 
Otetaan esimerkkitilanne, jossa haluat ajaa kahta ohjelmaa yhtäaikaa. Toinen on videonkatseluohjelma [[mplayer]] ja toinen on musiikintoisto-ohjelma [[xmms]]. Normaalisti [[komentorivi]]llä kirjoittaisit vain ohjelman nimen ja ohjelma käynnistyisi, jos tämä prosessi kuitenkin halutaan tausta-ajoon siten, että samasta [[terminaali]]sta voidaan käynnistää useita ohjelmia, tulee ohjelman perään lisätä &-merkki. Kun olet kirjoittanut ohjelman nimen &-merkin kanssa, tulostaa [[komentotulkki]] sinulle ohjelman työnumeron sekä [[PID]]:n, joiden avulla voit myöhemmin esimerkiksi [[kill|sulkea/tappaa]] prosessin.
 
Ohjelman käynnistäminen tausta-ajoon
xmms &
Ohjelman ajaminen tulostaa seuraavaa: [työnumero­][PID] ohjelmannimi
[1][3017] xmms
Nyt voimme heti perään käynnistää toisen ohjelman - sen mplayerin jonka alun perin halusimme tulevan samaan aikaan ajoon. Tämä tapahtuu aivan identtisellä tavalla:
mplayer &
Tämä antaa jälleen kerran tulosteeksi työnumeron ja PID:n.
 
On myös toinen tapa lähestyä tausta-ajoa, jos olemme käynnistäneet ohjelman ilman &-merkkiä ja haluamme sen tausta-ajoon. Voit yksinkertaisesti käyttää näppäimistöä asettamaan käynnissä olevan prosessin (joka tukkii komentorivin) pysähdyksiin painamalla '''Ctrl+Z'''. Tämän jälkeen saat prosessin tausta-ajoon kirjoittamalla komentoriville <tt>[[bg]] %työnumero</tt>. Käytännössä ensin ohjelma pysäytetään ja sen jälkeen asetetaan tausta-ajoon. Esimerkiksi:
 
Pysäytetään ohjelma xmms, joka on käynnistetty ilman &-merkkiä
xmms
Painetaan terminaaliemulaattori-ikkunan ollessa aktiivisena Ctrl+Z.
Ruutuun tulee teksti, joka kertoo prosessin työnumeron, tilan sekä nimen
[1]+ Stopped xmms
Nyt asetamme ohjelman tausta-ajoon (katsomme työnumeron edellä tulevasta tulosteesta)
bg %1
 
Prosessin saa myös nostettua etualalle komentamalla <tt>%työnumero</tt> tai <tt>[[fg]] %työnumero</tt>
 
Nyt osaamme asettaa prosessit tausta-ajoon ja käynnistää kaksi ohjelmaa peräkkäin. Entäs jos haluamme ajaa kymmeniä ohjelmia päällekäin, emmekä muista ohjelmien työnumeroita? Komento <tt>[[jobs]]</tt> auttaa tässä tilanteessa. Kirjoittamalla komentoriville tuon komennon saamme listauksen kaikista töistä ja niiden työnumeroista. Tämän jälkeen komennolla <tt>bg %työnumero</tt> saa prosessit asetettua tausta-ajoon.
 
==Ohjelmien tappaminen==
On todennäköistä, että joskus jokin ohjelma jää jumiin, eikä ole muuta keinoa kuin tappaa tämän ohjelman prosessi. Prosessin tappaminen tapahtuu komennolla <tt>[[kill]] %työnumero</tt>, <tt>kill PID</tt> tai <tt>[[killall]] ohjelmannimi</tt>. Ohjelman PID:n saa esimerkiksi komennoilla <tt>[[ps]] -A</tt>, <tt>[[pstree]] -p</tt> tai <tt>[[top]]</tt>. Seuraavassa haetaan PID-numero komennolla pstree ja tapetaan jumittunut xmms-prosessi.
 
Tarkistetaan käynnissä olevien taustaprosessien määrä
jobs
Tulostus näyttää tämäntapaiselta
[1]+ running [3333] xmms
[2]+ running [3434] gkrellm
[3]+ running [3344] gmplayer
Tapetaan prosessi työnumeron mukaan (gkrellm)
kill %2
Tuloste näyttää tämäntapaiselta
[2]+ exit 1 gkrellm
Otetaan pstree-tuloste PID:n mukaan ja tapetaan PID:n avulla xmms-prosessi
pstree -p
Tuloste (tulostetta kutistettu)
fluxbox(428)-+-Eterm(603)---bash(606)---irssi(7+
                                            |-Eterm(1215)---bash(1218)---irssi+
                                            |-Eterm(7868)---bash(7871)
                                            |-Eterm(11586)---bash(11590)---irs+
                                            |-Eterm(21647)---bash(21650)-+-pst+
                                            |                            `-wis+
                                            |-MozillaFirebird(20617)---Mozilla+
                                            |-dcgui-qt(21267)---dcgui-qt(21270+
                                            |-soffice.bin(21722)---soffice.bin+
                                            |-ssh-agent(466)
                                            |-wish(9520)---wish(9521)---wish(9+
                                            `-'''xmms(25068)'''---xmms(25070)-+-xmms+
                                                                        |-xmms+
                                                                        |-xmms+
                                                                        |-xmms+
                                                                        `-xmms+
Katsotaan ''päällimmäisen'' xmms-prosessin PID ja tapetaan se (prosessi lihavoitu)
kill 25068
Tapetaan ohjelman killallin avulla antamalla sen nimi:
killall xmms
Oletuksena kill-komento pyytää ohjelmaa sulkeutumaan lähettämällä sille [[signaali]]n <tt>SIGTERM</tt>. Jos ohjelma on epäsivistynyt tai pahasti jumissa, se ei välttämättä sulkeudu. Katso komento [[kill]].
 
==Katso myös==
*[[:Luokka:Prosessienhallinta|Prosessienhallinta-luokka]]
*[[bg]] - lisätietoa tausta-ajosta
*[[kill]] - lisätietoa ohjelmien tappamisesta
*[[Signaali]]


[[Luokka:Käsitteet]]
[[Luokka:Käsitteet]]
[[Luokka:Järjestelmä]]
[[Luokka:Ohjeet]]
[[Luokka:Prosessienhallinta]]
1 122

muokkausta

Navigointivalikko