Süsteemkõne vs funktsioonikõne
Tüüpiline protsessor täidab juhiseid ükshaaval. Kuid võib juhtuda, et protsessor peab praeguse käsu peatama ja täitma mõnda muud programmi või koodisegmenti (mis asub mõnes teises kohas). Pärast seda naaseb protsessor tavapärasele täitmisele ja jätkab se alt, kus pooleli jäi. Süsteemikõne ja funktsioonikutse on sellised juhud. Süsteemikõne on kõne süsteemi sisseehitatud alamprogrammile. Funktsioonikutse on väljakutse alamprogrammile programmi enda sees.
Mis on süsteemikutse?
Süsteemikõned pakuvad arvutis töötavatele programmidele liidest operatsioonisüsteemiga suhtlemiseks. Kui programm peab küsima operatsioonisüsteemi tuum alt teenust (mille jaoks tal pole selleks luba), kasutab ta süsteemikutset. Kasutajataseme protsessidel ei ole samu õigusi, mis operatsioonisüsteemiga vahetult suhtlevatel protsessidel. Näiteks välise sisend-/väljundseadmega suhtlemiseks või muude protsessidega suhtlemiseks kasutab programm süsteemikutseid.
Mis on funktsioonikutse?
Funktsioonikutset nimetatakse ka alamprogrammikutseks. Alamprogramm (tuntud ka kui protseduur, funktsioon, meetod või rutiin) on osa suuremast programmist, mis vastutab konkreetse ülesande täitmise eest. Suurem programm võib täita suure töökoormuse ja alamprogramm võib täita lihts alt lihtsat ülesannet, mis ei sõltu ka ülejäänud programmi kodeerimisest. Funktsioon on kodeeritud nii, et seda saab kutsuda mitu korda ja erinevatest kohtadest (isegi teistest funktsioonidest). Funktsiooni kutsumisel võib protsessor minna funktsiooni koodi asukohasse ja täita funktsiooni käske ükshaaval. Pärast funktsioonide täitmist naaseb protsessor täpselt sinna, kus pooleli jäi ja jätkab täitmist alates järgmisest käsust. Funktsioonid on suurepärane tööriist koodi taaskasutamiseks. Paljud kaasaegsed programmeerimiskeeled toetavad funktsioone. Funktsioonide kogumit nimetatakse raamatukoguks. Teeke kasutatakse sageli tarkvara jagamise ja kauplemise vahenditena. Mõnel juhul võib kogu programm olla alamprogrammide jada (nt keermestatud koodide koostamine).
Mis vahe on süsteemikutsel ja funktsioonikutsel?
Süsteemikutse on kõne süsteemi sisseehitatud alamprogrammile, samas kui funktsioonikutse on kutse programmisisesele alamprogrammile. Erinev alt funktsioonikutsetest kasutatakse süsteemikutseid siis, kui programmil on vaja täita mõni ülesanne, milleks tal pole õigusi. Süsteemikutsed on operatsioonisüsteemi kerneli sisenemispunktid ega ole programmiga seotud (nagu funktsioonikutsed). Erinev alt süsteemikõnedest on funktsioonikutsed kaasaskantavad. Süsteemikõne ajakulu on suurem kui funktsioonikutsele kuluv kulu, sest peab toimuma üleminek kasutajarežiimi ja kerneli režiimi vahel. Süsteemikutsed käivitatakse kerneli aadressiruumis, funktsioonikutsed aga kasutaja aadressiruumis.