https://www.linux.fi/w/index.php?title=J%C3%A4rjestelm%C3%A4kutsu&feed=atom&action=history
Järjestelmäkutsu - Muutoshistoria
2024-03-29T10:09:28Z
Tämän sivun muutoshistoria
MediaWiki 1.41.0
https://www.linux.fi/w/index.php?title=J%C3%A4rjestelm%C3%A4kutsu&diff=42203&oldid=prev
Foliohattu: alun perin
2015-03-24T17:24:36Z
<p>alun perin</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="fi">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Vanhempi versio</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Versio 24. maaliskuuta 2015 kello 20.24</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l15">Rivi 15:</td>
<td colspan="2" class="diff-lineno">Rivi 15:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Joskus onkin käynyt niin, että järjestelmäkutsu on "alennettu" kirjastofunktioksi.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Joskus onkin käynyt niin, että järjestelmäkutsu on "alennettu" kirjastofunktioksi.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Esimerkiksi <tt>fork</tt>-funktio oli <del style="font-weight: bold; text-decoration: none;">alunperin </del>Linuxin järjestelmäkutsu, mutta se korvattiin</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Esimerkiksi <tt>fork</tt>-funktio oli <ins style="font-weight: bold; text-decoration: none;">alun perin </ins>Linuxin järjestelmäkutsu, mutta se korvattiin</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>yleiskäyttöisemmällä <tt>clone</tt>-kutsulla, ja <tt>fork</tt>:sta tehtiin tavallinen funktio,</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>yleiskäyttöisemmällä <tt>clone</tt>-kutsulla, ja <tt>fork</tt>:sta tehtiin tavallinen funktio,</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>joka kutsuu <tt>clone</tt>:a.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>joka kutsuu <tt>clone</tt>:a.</div></td></tr>
</table>
Foliohattu
https://www.linux.fi/w/index.php?title=J%C3%A4rjestelm%C3%A4kutsu&diff=35206&oldid=prev
Jem (24. lokakuuta 2011 kello 11.05)
2011-10-24T11:05:57Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="fi">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Vanhempi versio</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Versio 24. lokakuuta 2011 kello 14.05</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l122">Rivi 122:</td>
<td colspan="2" class="diff-lineno">Rivi 122:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.win.tue.nl/~aeb/linux/lk/lk-4.html The Linux Kernel: System Calls]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://www.win.tue.nl/~aeb/linux/lk/lk-4.html The Linux Kernel: System Calls]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://articles.manugarg.com/systemcallinlinux2_6.html Sysenter Based System Call Mechanism in Linux 2.6]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://articles.manugarg.com/systemcallinlinux2_6.html Sysenter Based System Call Mechanism in Linux 2.6]</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Luokka:Käsitteet]]</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Luokka:Järjestelmä]]</ins></div></td></tr>
</table>
Jem
https://www.linux.fi/w/index.php?title=J%C3%A4rjestelm%C3%A4kutsu&diff=35205&oldid=prev
Jem (24. lokakuuta 2011 kello 08.31)
2011-10-24T08:31:57Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="fi">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Vanhempi versio</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Versio 24. lokakuuta 2011 kello 11.31</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9">Rivi 9:</td>
<td colspan="2" class="diff-lineno">Rivi 9:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>toiset vähän harvemmin käytettyjä. On tärkeää huomata, että [[POSIX]]-standardi, jota</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>toiset vähän harvemmin käytettyjä. On tärkeää huomata, että [[POSIX]]-standardi, jota</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Linux noudattaa, ei erottele järjestelmäkutsuja tavallisista funktiokutsuista.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Linux noudattaa, ei erottele järjestelmäkutsuja tavallisista funktiokutsuista.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>POSIX määrittelee vain rajapinnan, ei sitä, mikä rajapinnan funktio on</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>POSIX määrittelee vain <ins style="font-weight: bold; text-decoration: none;">[[API|</ins>rajapinnan<ins style="font-weight: bold; text-decoration: none;">]]</ins>, ei sitä, mikä rajapinnan funktio on</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tavallinen kirjastofunktio ja mikä oikeasti järjestelmäkutsu.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tavallinen kirjastofunktio ja mikä oikeasti järjestelmäkutsu.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Järjestelmäkutsut ovat olemassa vain siksi, että ydin pystyisi takaamaan</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Järjestelmäkutsut ovat olemassa vain siksi, että ydin pystyisi takaamaan</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l31">Rivi 31:</td>
<td colspan="2" class="diff-lineno">Rivi 31:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* käyttäjien hallinta: <tt>getuid, setuid, chown, chgrp</tt></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* käyttäjien hallinta: <tt>getuid, setuid, chown, chgrp</tt></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Järjestelmäkutsut on dokumentoitu Linuxin manuaalin kappaleessa 2. <del style="font-weight: bold; text-decoration: none;"><tt></del>man 2 intro<del style="font-weight: bold; text-decoration: none;"></tt> -käsky antaa</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Järjestelmäkutsut on dokumentoitu Linuxin manuaalin kappaleessa 2. <ins style="font-weight: bold; text-decoration: none;">Lisätietoja:</ins></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">lisätietoja.</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> </ins>man 2 intro</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Järjestelmäkutsumekanismi==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Järjestelmäkutsumekanismi==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l45">Rivi 45:</td>
<td colspan="2" class="diff-lineno">Rivi 45:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>oikeutta lukea tiedostoa tai tappaa prosessia.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>oikeutta lukea tiedostoa tai tappaa prosessia.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Järjestelmäkutsussa tapahtuu siirtymä <del style="font-weight: bold; text-decoration: none;">prosessorin </del>tilassa User Modesta</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Järjestelmäkutsussa tapahtuu siirtymä <ins style="font-weight: bold; text-decoration: none;">suorittimen (CPU) </ins>tilassa User Modesta</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Kernel Mode]] -tilaan. Miten tämä tapahtuu riippuu käytetyn <del style="font-weight: bold; text-decoration: none;">prosessorin</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Kernel Mode]] -tilaan. Miten tämä tapahtuu riippuu käytetyn <ins style="font-weight: bold; text-decoration: none;">suorittimen</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>arkkitehtuurista, mutta tyypillinen tapa on niin sanottu "ohjelmallinen</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>arkkitehtuurista, mutta tyypillinen tapa on niin sanottu "ohjelmallinen</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>keskeytys" (software interrupt). Tämä mekanismi toimii siten, että <del style="font-weight: bold; text-decoration: none;">prosessori</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>keskeytys" (software interrupt). Tämä mekanismi toimii siten, että <ins style="font-weight: bold; text-decoration: none;">suoritin</ins></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>suorittaa 'int'- tai 'trap'-käskyn, jonka seurauksena <del style="font-weight: bold; text-decoration: none;">prosessori </del>vaihtaa</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>suorittaa 'int'- tai 'trap'-käskyn, jonka seurauksena <ins style="font-weight: bold; text-decoration: none;">suoritin </ins>vaihtaa</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tilansa Supervisor Mode -tilaan ja jatkaa suoritusta määritellystä</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tilansa Supervisor Mode -tilaan ja jatkaa suoritusta määritellystä</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>keskeytyksen käsittelijärutiinista.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>keskeytyksen käsittelijärutiinista.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Intel x86-perheen <del style="font-weight: bold; text-decoration: none;">prosessoreilla </del>Linuxissa on perinteisesti <del style="font-weight: bold; text-decoration: none;">käytetty</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Intel x86-perheen <ins style="font-weight: bold; text-decoration: none;">suorittimilla </ins>Linuxissa on <ins style="font-weight: bold; text-decoration: none;">järjestelmäkutsut </ins>perinteisesti <ins style="font-weight: bold; text-decoration: none;">toteutettu</ins></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><tt>int $0x80</tt> -<del style="font-weight: bold; text-decoration: none;">käskyä järjestelmäkutsun suorittamiseen</del>. Järjestelmäkutsun</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><tt>int $0x80</tt> -<ins style="font-weight: bold; text-decoration: none;">käskyllä</ins>. Järjestelmäkutsun</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>numero välitetään <tt>eax</tt>-rekisterissä, muut parametrit rekistereissä</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>numero välitetään <tt>eax</tt>-rekisterissä, muut parametrit rekistereissä</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><tt>ebx</tt>, <tt>ecx</tt>, jne., riippuen kutsun parametrien lukumäärästä.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><tt>ebx</tt>, <tt>ecx</tt>, jne., riippuen kutsun parametrien lukumäärästä.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l69">Rivi 69:</td>
<td colspan="2" class="diff-lineno">Rivi 69:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Tällä tavalla saadaan eristettyä varsinaisen järjestelmäkutsun monimutkaisuus</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Tällä tavalla saadaan eristettyä varsinaisen järjestelmäkutsun monimutkaisuus</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Libc-kirjaston hoidettavaksi Sovellusohjelmat voivat kutsua Libc:n vastaavaa</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Libc-kirjaston hoidettavaksi Sovellusohjelmat voivat kutsua Libc:n vastaavaa</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>funktiota normaalilla korkean tason kielen (C) kutsulla, assembly-koodin sijasta.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>funktiota normaalilla korkean tason kielen (<ins style="font-weight: bold; text-decoration: none;">[[</ins>C<ins style="font-weight: bold; text-decoration: none;">]]</ins>) kutsulla, assembly-koodin sijasta.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Lisäksi ytimen kutsutapa on riippumaton kääntäjän käyttämästä C-kielen kutsutavasta.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Lisäksi ytimen kutsutapa on riippumaton kääntäjän käyttämästä C-kielen kutsutavasta.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sovellusohjelmissa voidaan jopa vaihtaa kutsutapaa (esimerkiksi käyttämään parametrinvälitystä</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sovellusohjelmissa voidaan jopa vaihtaa kutsutapaa (esimerkiksi käyttämään parametrinvälitystä</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l76">Rivi 76:</td>
<td colspan="2" class="diff-lineno">Rivi 76:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>kääntämistä uudella kääntäjällä tai kääntäjän optioita muuttaen.)</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>kääntämistä uudella kääntäjällä tai kääntäjän optioita muuttaen.)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">Prosessorin </del>rekistereitä käytetään parametrien välittämiseen siksi,</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Suorittimen </ins>rekistereitä käytetään parametrien välittämiseen siksi,</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>että <del style="font-weight: bold; text-decoration: none;">prosessorin </del>tilan vaihtuessa User Mode:sta Supervisor Mode -tilaan,</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>että <ins style="font-weight: bold; text-decoration: none;">suorittimen </ins>tilan vaihtuessa User Mode:sta Supervisor Mode -tilaan,</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>vaihtuu myös käytettävä pino.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>vaihtuu myös käytettävä pino.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Sysenter ja Sysreturn==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Sysenter ja Sysreturn==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Intelin x86-<del style="font-weight: bold; text-decoration: none;">prosessoreissa </del>on Pentium II <del style="font-weight: bold; text-decoration: none;">-prosessorista </del>alkaen ollut vaihtoehtoinen</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Intelin x86-<ins style="font-weight: bold; text-decoration: none;">suorittimissa </ins>on Pentium II<ins style="font-weight: bold; text-decoration: none;">:sta </ins>alkaen ollut vaihtoehtoinen</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>käsky, jolla siirtymän User Modesta Kernel Mode -tilaan voi toteuttaa: <tt>sysenter</tt>.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>käsky, jolla siirtymän User Modesta Kernel Mode -tilaan voi toteuttaa: <tt>sysenter</tt>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Tämä käsky keksittiin tuomaan ratkaisu int-käskyyn liittyvään ongelmaan.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Tämä käsky keksittiin tuomaan ratkaisu int-käskyyn liittyvään ongelmaan.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><tt>int $0x80</tt> -mekanismi on hidas, eli suoritus vaatii monta</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><tt>int $0x80</tt> -mekanismi on hidas, eli suoritus vaatii monta</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>kellojaksoa, ja se on muuttunut nykyaikaisissa <del style="font-weight: bold; text-decoration: none;">prosessoreissa</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>kellojaksoa, ja se on muuttunut nykyaikaisissa <ins style="font-weight: bold; text-decoration: none;">suorittimissa</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>suhteellisesti mitattuna yhä hitaammaksi. Uusi <tt>sysenter</tt>-käsky on</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>suhteellisesti mitattuna yhä hitaammaksi. Uusi <tt>sysenter</tt>-käsky on</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>nopea, mutta vanhemmat <del style="font-weight: bold; text-decoration: none;">prosessorit </del>eivät tue sitä, jolloin on</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>nopea, mutta vanhemmat <ins style="font-weight: bold; text-decoration: none;">suorittimet </ins>eivät tue sitä, jolloin on</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>käytettävä <del style="font-weight: bold; text-decoration: none;">vanhempaa </del><tt>int $0x80</tt>-käskyä. (<tt>sysenter</tt>-käskyn kanssa</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>käytettävä <ins style="font-weight: bold; text-decoration: none;">perinteistä </ins><tt>int $0x80</tt>-käskyä. (<tt>sysenter</tt>-käskyn kanssa</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>samanaikaisesti esitellyllä <tt>sysreturn</tt>-käskyllä palataan järjestelmäkutsusta.)</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>samanaikaisesti esitellyllä <tt>sysreturn</tt>-käskyllä palataan järjestelmäkutsusta.)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Tavoitteena on toisaalta</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Tavoitteena on toisaalta</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>pitää Libc riippumattomana <del style="font-weight: bold; text-decoration: none;">prosessoriversiosta </del>ja myös puhtaana</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>pitää Libc riippumattomana <ins style="font-weight: bold; text-decoration: none;">suorittimen versiosta </ins>ja myös puhtaana</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>koodista, joka ajon aikana tutkii mitä käskyjä <del style="font-weight: bold; text-decoration: none;">prosessori </del>tukee ja</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>koodista, joka ajon aikana tutkii mitä käskyjä <ins style="font-weight: bold; text-decoration: none;">suoritin </ins>tukee ja</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>mitä se ei tue.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>mitä se ei tue.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ratkaisuna tähän ongelmaan ''ydin'' tarjoaa koodin, jolla</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ratkaisuna tähän ongelmaan ''ydin'' tarjoaa koodin, jolla</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">prosessorikohtaisesti </del>järjestelmäkutsu suoritetaan optimaalisella</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>järjestelmäkutsu suoritetaan <ins style="font-weight: bold; text-decoration: none;">suoritinkohtaisesti </ins>optimaalisella</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tavalla: joko <tt>sysenter</tt>-käskyä käyttäen, <tt>int $0x80</tt>-käskyllä,</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tavalla: joko <tt>sysenter</tt>-käskyä käyttäen, <tt>int $0x80</tt>-käskyllä,</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tai tulevaisuudessa mahdollisesti jollain muulla mekanismilla. Tämä</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>tai tulevaisuudessa mahdollisesti jollain muulla mekanismilla. Tämä</div></td></tr>
</table>
Jem
https://www.linux.fi/w/index.php?title=J%C3%A4rjestelm%C3%A4kutsu&diff=35200&oldid=prev
Jem: Ak: Uusi sivu: Järjestelmäkutsut muodostavat rajapinnan prosessissa suoritettavan User Mode -ohjelman ja ytimen välillä. Rajapinnan avulla ohjelma voi käyttää ytimen tarjoamia palveluita,...
2011-10-23T18:23:42Z
<p>Ak: Uusi sivu: Järjestelmäkutsut muodostavat rajapinnan prosessissa suoritettavan <a href="/w/index.php?title=User_Mode&action=edit&redlink=1" class="new" title="User Mode (sivua ei ole)">User Mode</a> -ohjelman ja ytimen välillä. Rajapinnan avulla ohjelma voi käyttää ytimen tarjoamia palveluita,...</p>
<p><b>Uusi sivu</b></p><div>Järjestelmäkutsut muodostavat rajapinnan prosessissa suoritettavan [[User Mode]]<br />
-ohjelman ja ytimen välillä. Rajapinnan avulla ohjelma voi käyttää<br />
ytimen tarjoamia palveluita, kuten esimerkiksi lukea tiedostosta tai<br />
käynnistää uuden ohjelman.<br />
<br />
==Yleistä==<br />
<br />
Linuxissa on yli kolmesataa erilaista järjestelmäkutsua, toiset keskeisempiä,<br />
toiset vähän harvemmin käytettyjä. On tärkeää huomata, että [[POSIX]]-standardi, jota<br />
Linux noudattaa, ei erottele järjestelmäkutsuja tavallisista funktiokutsuista.<br />
POSIX määrittelee vain rajapinnan, ei sitä, mikä rajapinnan funktio on<br />
tavallinen kirjastofunktio ja mikä oikeasti järjestelmäkutsu.<br />
Järjestelmäkutsut ovat olemassa vain siksi, että ydin pystyisi takaamaan<br />
lupaamansa säännöt, kuten muistialueiden ja tiedostojen suojaukset.<br />
<br />
Joskus onkin käynyt niin, että järjestelmäkutsu on "alennettu" kirjastofunktioksi.<br />
Esimerkiksi <tt>fork</tt>-funktio oli alunperin Linuxin järjestelmäkutsu, mutta se korvattiin<br />
yleiskäyttöisemmällä <tt>clone</tt>-kutsulla, ja <tt>fork</tt>:sta tehtiin tavallinen funktio,<br />
joka kutsuu <tt>clone</tt>:a.<br />
<br />
==Esimerkkejä järjestelmäkutsuista==<br />
<br />
Seuraavassa luettelo muutamasta usein käytetyistä kutsuista.<br />
<br />
* tiedostojen käsittely: <tt>creat, open, read, write, lseek, close, chmod, link, unlink</tt><br />
<br />
* prosessien käsittely: <tt>clone, exec, wait, execve, nice, exit</tt><br />
<br />
* verkkorajapintaan liittyvät kutsut: <tt>socketcall</tt> (sisältäen <tt>socket, connect, bind, listen, accept</tt>)<br />
<br />
* käyttäjien hallinta: <tt>getuid, setuid, chown, chgrp</tt><br />
<br />
Järjestelmäkutsut on dokumentoitu Linuxin manuaalin kappaleessa 2. <tt>man 2 intro</tt> -käsky antaa<br />
lisätietoja.<br />
<br />
==Järjestelmäkutsumekanismi==<br />
<br />
Sovellusohjelman ei voida sallia kutsua ytimen koodia ihan vapaasti,<br />
vaan sen on tapahduttava määritellyn kutsurajapinnan kautta. Rajoittamalla<br />
kutsut tapahtuviksi tiettyjen osoitteiden kautta varmistutaan<br />
siitä, että ytimen koodia kutsutaan oikein. Järjestelmäkutsun käsittelijärutiinissa<br />
tehdään tyypillisesti tarkistuksia, kuten syötettyjen<br />
parametrien järkevyyden testausta. Useimmissa tapauksissa tarkistetaan myös<br />
onko kutsujalla oikeus suorittaa kutsu; esimerkiksi onko käyttäjällä<br />
oikeutta lukea tiedostoa tai tappaa prosessia.<br />
<br />
Järjestelmäkutsussa tapahtuu siirtymä prosessorin tilassa User Modesta<br />
[[Kernel Mode]] -tilaan. Miten tämä tapahtuu riippuu käytetyn prosessorin<br />
arkkitehtuurista, mutta tyypillinen tapa on niin sanottu "ohjelmallinen<br />
keskeytys" (software interrupt). Tämä mekanismi toimii siten, että prosessori<br />
suorittaa 'int'- tai 'trap'-käskyn, jonka seurauksena prosessori vaihtaa<br />
tilansa Supervisor Mode -tilaan ja jatkaa suoritusta määritellystä<br />
keskeytyksen käsittelijärutiinista.<br />
<br />
Intel x86-perheen prosessoreilla Linuxissa on perinteisesti käytetty<br />
<tt>int $0x80</tt> -käskyä järjestelmäkutsun suorittamiseen. Järjestelmäkutsun<br />
numero välitetään <tt>eax</tt>-rekisterissä, muut parametrit rekistereissä<br />
<tt>ebx</tt>, <tt>ecx</tt>, jne., riippuen kutsun parametrien lukumäärästä.<br />
<br />
Sovellusohjelmat eivät kutsu järjestelmäkutsuja suoraan, vaan<br />
samannimisia funktioita standardikirjasto [[Libc]]:ssä, jotka muodostavat<br />
ohuen "kuoren" järjestelmäkutsun ympärille. Nämä funktiot<br />
suorittavat sitten kukin vastaavan<br />
järjestelmäkutsun. Syynä tähän järjestelyyn on se, että<br />
järjestelmäkutsuilla on oma kutsutapansa; parametrit siirretään<br />
rekistereissä ja itse kutsua ei suoriteta <tt>call</tt>-käskyllä, vaan<br />
muulla mekanismlla, esim. yllä mainitulla <tt>int $0x80</tt> -käskyllä.<br />
<br />
Tällä tavalla saadaan eristettyä varsinaisen järjestelmäkutsun monimutkaisuus<br />
Libc-kirjaston hoidettavaksi Sovellusohjelmat voivat kutsua Libc:n vastaavaa<br />
funktiota normaalilla korkean tason kielen (C) kutsulla, assembly-koodin sijasta.<br />
Lisäksi ytimen kutsutapa on riippumaton kääntäjän käyttämästä C-kielen kutsutavasta.<br />
Sovellusohjelmissa voidaan jopa vaihtaa kutsutapaa (esimerkiksi käyttämään parametrinvälitystä<br />
rekistereissä pinon sijasta) muuttamatta ytimen järjestelmäkutsurajapintaa.<br />
(Tämä tosin vaatii sekä sovellusten että kirjastojen, mukaan lukien libc, uudelleen<br />
kääntämistä uudella kääntäjällä tai kääntäjän optioita muuttaen.)<br />
<br />
Prosessorin rekistereitä käytetään parametrien välittämiseen siksi,<br />
että prosessorin tilan vaihtuessa User Mode:sta Supervisor Mode -tilaan,<br />
vaihtuu myös käytettävä pino.<br />
<br />
==Sysenter ja Sysreturn==<br />
<br />
Intelin x86-prosessoreissa on Pentium II -prosessorista alkaen ollut vaihtoehtoinen<br />
käsky, jolla siirtymän User Modesta Kernel Mode -tilaan voi toteuttaa: <tt>sysenter</tt>.<br />
Tämä käsky keksittiin tuomaan ratkaisu int-käskyyn liittyvään ongelmaan.<br />
<br />
<tt>int $0x80</tt> -mekanismi on hidas, eli suoritus vaatii monta<br />
kellojaksoa, ja se on muuttunut nykyaikaisissa prosessoreissa<br />
suhteellisesti mitattuna yhä hitaammaksi. Uusi <tt>sysenter</tt>-käsky on<br />
nopea, mutta vanhemmat prosessorit eivät tue sitä, jolloin on<br />
käytettävä vanhempaa <tt>int $0x80</tt>-käskyä. (<tt>sysenter</tt>-käskyn kanssa<br />
samanaikaisesti esitellyllä <tt>sysreturn</tt>-käskyllä palataan järjestelmäkutsusta.)<br />
<br />
Tavoitteena on toisaalta<br />
pitää Libc riippumattomana prosessoriversiosta ja myös puhtaana<br />
koodista, joka ajon aikana tutkii mitä käskyjä prosessori tukee ja<br />
mitä se ei tue.<br />
<br />
Ratkaisuna tähän ongelmaan ''ydin'' tarjoaa koodin, jolla<br />
prosessorikohtaisesti järjestelmäkutsu suoritetaan optimaalisella<br />
tavalla: joko <tt>sysenter</tt>-käskyä käyttäen, <tt>int $0x80</tt>-käskyllä,<br />
tai tulevaisuudessa mahdollisesti jollain muulla mekanismilla. Tämä<br />
koodi sijaitsee prosessin osoiteavaruudessa pienellä, ennalta<br />
määritetyllä muistialueella. Libc suorittaa järjestelmäkutsun<br />
kutsumalla funktiota tällä alueella, ja funktio tekee<br />
varsinaisen järjestelmäkutsun. Libc joutuu toki edelleen tutkimaan,<br />
onko tämä muistialue olemassa jotta kirjasto toimisi myös ytimellä,<br />
joka ei tue tätä uutta mekanismia.<br />
<br />
==User Mode -järjestelmäkutsut==<br />
<br />
Nopeammallakin <tt>sysenter</tt>-käskyllä suoritettuna järjestelmäkutsu on suhteellisen<br />
paljon aikaa vievä operaatio. Kaikkia kutsuja varten ei kuitenkaan tarvitse tehdä siirtymää<br />
Kernel Mode -tilaan. Esimerkiksi <tt>gettimeofday</tt>-kutsu, joka palauttaa ytimen käsityksen<br />
kellonajasta, voidaan toteuttaa siten, että ydin sijoittaa toistuvasti tuoreen arvon<br />
tunnettuun muistipaikkaan prosessin muistiavaruudessa. <tt>gettimeofday</tt>-funktio voi<br />
käydä lukemassa arvon tästä muistipaikasta, tarvitsematta suorittaa <tt>sysenter</tt>-käskyä.<br />
<br />
==Aiheesta muualla==<br />
<br />
* [http://www.win.tue.nl/~aeb/linux/lk/lk-4.html The Linux Kernel: System Calls]<br />
* [http://articles.manugarg.com/systemcallinlinux2_6.html Sysenter Based System Call Mechanism in Linux 2.6]</div>
Jem