Prosessit ja säikeet
Prosessit ja säikeet
Prosessit ja säikeet
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Käyttöjärjestelmät:<br />
rinnakkaisuus <strong>ja</strong> <strong>säikeet</strong><br />
Teemu Saarelainen<br />
Tietotekniikka<br />
teemu.saarelainen@kyamk.fi<br />
Lähteet<br />
Stallings, W. ”Operating Systems”<br />
Haikala, Järvinen, ”Käyttöjärjestelmät”<br />
Eri Web-lähteet
<strong>Prosessit</strong> <strong>ja</strong> <strong>säikeet</strong><br />
Prosessin liittyy<br />
• Resursse<strong>ja</strong> (muistiosoitteet, etc.)<br />
• Suoritus <strong>ja</strong> skedulointi<br />
Käyttöjärjestelmä hallinnoi näitä molempia<br />
Suoritukseen liittyvää osaa sanotaan usein säikeeksi<br />
(thread)<br />
Resursse<strong>ja</strong> kutsutaan tehtäväksi (task) tai prosessiksi
Monisäikeisyys<br />
Käyttöjärjestelmä<br />
voi tukea<br />
monisäikeisyyttä<br />
Sama prosessi:<br />
monta yhtäaikaista<br />
säiettä ajossa
Yksisäikeisyys<br />
Esim.<br />
MS-DOS tukee yhtä<br />
käyttäjän prosessia <strong>ja</strong> yhtä<br />
säiettä<br />
Jotkut UNIX-järjestelmät<br />
tukevat montaa käyttäjän<br />
prosessia, mutta vain yhtä<br />
säiettä / prosessi
Monisäikeisyys<br />
Javassa (JRE) käytetään<br />
yhden prosessin sisällä<br />
montaa säiettä<br />
Moniprosessi- <strong>ja</strong><br />
monisäie-järjestelmiä on<br />
uudemmat Windows:t,<br />
Solaris <strong>ja</strong> uudemmat<br />
UNIX:t<br />
Huom! Linux:ssa ei ole<br />
eroa prosessien <strong>ja</strong><br />
säikeiden välillä
Säikeet prosesseissa<br />
Jokaisella säikeellä on<br />
• suoritustila (säikeillä samantyyppisiä tilo<strong>ja</strong> kuin prosesseilla:<br />
spawn, block, unblock, finish)<br />
• konteksti (kun ei suorituksessa)<br />
• pino<br />
• muistia paikallisia muuttujia varten<br />
• pääsy (omista<strong>ja</strong>-)prosessin muistiin <strong>ja</strong> resursseihin
Säikeet vs. prosessit
Säikeiden tuomat hyödyt<br />
Vähemmän aikaa uuden säikeen luontiin kuin prosessin<br />
Vähemmän aikaa säikeen lopettamiseen kuin prosessin<br />
Suorituksen vaihto kahden säikeen välillä nopeampaa<br />
Säikeet voivat viestiä toistensa kanssa – ilman ytimen<br />
väliintuloa
Säikeiden kanssa huomioonotettavaa<br />
Toimenpiteet prosessitasolla vaikuttavat kaikkiin säikeisiin<br />
Esim.<br />
Prosessin suorituksen keskeyttäminen<br />
keskeytetään prosessin kaikki <strong>säikeet</strong><br />
Prosessin lopettaminen<br />
lopetetaan prosessin kaikki <strong>säikeet</strong>
SMP – symmetric multiprocessing<br />
Perinteisesti tietokoneen on a<strong>ja</strong>teltu suorittavan toiminto<strong>ja</strong><br />
peräkkäisrakenteena (sekventiaalisesti)<br />
Vaihtoehtona on rinnakkaisuus<br />
• SMP<br />
• Klusterit
Prosessorien käskymallit<br />
SISD (Single Instruction Single Data)<br />
• Yksi data, yksi prosessointiyksikkö<br />
SIMD (Single Instruction Multiple Data)<br />
• Monta dataa, voi olla monta prosessointiyksikköä<br />
MISD (Multiple Instruction Single Data) <br />
• Yksi data, monta eri prosessointiyksikköä suorittaa eri<br />
käskyjä<br />
• Ei toteutettu koskaan…<br />
MIMD (Multiple Instruction Multiple Data)<br />
• Monta dataa, monta prosessointiyksikköä
Rinnakkaisarkkitehtuurit
SMP<br />
Ytimen koodia voidaan suorittaa millä tahansa<br />
prosessorilla<br />
Rinnakkaisesti suoritettava KJ:n ydin<br />
Tyypillisesti jokainen prosessori ”valitsee itse” seuraavaksi<br />
suoritettavan prosessin tai säikeen<br />
Samaa prosessia tai säiettä ei voi valita (!)
SMP-malli
Moniprosessori-KJ:n suunnittelu<br />
Suunnitteluongelmia<br />
• Yhtäaikaiset prosessit tai <strong>säikeet</strong><br />
• Skedulointi<br />
• Synkronointi<br />
• Muistinhallinta<br />
• Luotettavuus <strong>ja</strong> vikasietoisuus
Mikrokernel
Mikrokernelin suunnittelu<br />
Mitä ongelmia tulee vastaan<br />
• Prosessien suhteen<br />
• I/O:n <strong>ja</strong> keskeytysten suhteen
SMP: Windows, Linux<br />
In English…