Sistēmas izsaukums pret funkciju izsaukšanu
Tipisks procesors izpilda instrukcijas pa vienam. Bet var būt gadījumi, kad procesoram ir jāpārtrauc pašreizējā instrukcija un jāizpilda kāda cita programma vai koda segments (kas atrodas citā vietā). Pēc šīs darbības procesors atgriežas normālā izpildē un turpina no vietas, kur tas tika pārtraukts. Šādi gadījumi ir sistēmas izsaukums un funkciju izsaukums. Sistēmas izsaukums ir izsaukums uz sistēmā iebūvētu apakšprogrammu. Funkcijas izsaukums ir izsaukums uz apakšprogrammu pašā programmā.
Kas ir sistēmas izsaukums?
Sistēmas izsaukumi nodrošina programmām, kas darbojas datorā, saskarni saziņai ar operētājsistēmu. Kad programmai ir jāpieprasa pakalpojums (kuru tai pašai nav atļaujas to darīt) no operētājsistēmas kodola, tā izmanto sistēmas izsaukumu. Lietotāja līmeņa procesiem nav tādas pašas atļaujas kā procesiem, kas tieši mijiedarbojas ar operētājsistēmu. Piemēram, lai sazinātos ar ārējo I/O ierīci vai mijiedarbotos ar citiem procesiem, programma izmanto sistēmas izsaukumus.
Kas ir funkciju izsaukums?
Funkciju izsaukumu sauc arī par apakšprogrammas izsaukumu. Apakšprogramma (pazīstama arī kā procedūra, funkcija, metode vai rutīna) ir daļa no lielākas programmas, kas ir atbildīga par noteikta uzdevuma veikšanu. Lielāka programma var izpildīt lielu darba slodzi, un apakšprogramma var veikt tikai vienkāršu uzdevumu, kas arī nav atkarīgs no atlikušās programmas kodēšanas. Funkcija ir kodēta tā, lai to varētu izsaukt vairākas reizes un no dažādām vietām (pat no citām funkcijām). Kad funkcija tiek izsaukta, procesors var doties uz vietas, kur atrodas funkcijas kods, un izpildīt funkcijas norādījumus pa vienam. Pēc funkciju pabeigšanas procesors atgriezīsies tieši tur, kur tas tika pārtraukts, un turpinās izpildi, sākot ar nākamo instrukciju. Funkcijas ir lielisks rīks koda atkārtotai izmantošanai. Daudzas mūsdienu programmēšanas valodas atbalsta funkcijas. Funkciju kopumu sauc par bibliotēku. Bibliotēkas bieži izmanto kā programmatūras koplietošanas un tirdzniecības līdzekļus. Dažos gadījumos visa programma var būt apakšprogrammu secība (piemēram, vītņota koda kompilācija).
Kāda ir atšķirība starp sistēmas izsaukumu un funkciju izsaukumu?
Sistēmas izsaukums ir izsaukums uz sistēmā iebūvētu apakšprogrammu, savukārt funkciju izsaukums ir izsaukums uz apakšprogrammu programmā. Atšķirībā no funkciju izsaukumiem, sistēmas izsaukumi tiek izmantoti, ja programmai ir jāveic kāds uzdevums, kuram tai nav tiesību. Sistēmas izsaukumi ir ieejas punkti operētājsistēmas kodolā un nav saistīti ar programmu (piemēram, funkciju izsaukumi). Atšķirībā no sistēmas izsaukumiem, funkciju izsaukumi ir pārnēsājami. Sistēmas izsaukšanas laiks ir vairāk nekā funkcijas izsaukuma izmaksas, jo ir jānotiek pārejai no lietotāja režīma uz kodola režīmu. Sistēmas izsaukumi tiek izpildīti kodola adrešu telpā, savukārt funkciju izsaukumi tiek izpildīti lietotāja adrešu telpā.