Sistēmas izsaukums pret funkciju izsaukumu
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 dzīvo citā vietā). Pēc tam procesors atgriežas normālā izpildē un turpina turpināties, kur beidzis. Šādi gadījumi ir sistēmas zvans un funkcijas 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 zvani nodrošina datorā darbināmām programmām saskarni, lai runātu ar operētājsistēmu. Kad programmai ir jāpieprasa pakalpojums (kuram tai nav atļaujas to darīt pašam) no operētājsistēmas kodola, tā izmanto sistēmas izsaukumu. Lietotāja līmeņa procesiem nav tādu pašu atļauju 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?
Funkcijas 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 konkrēta uzdevuma izpildi. Lielāka programma var izpildīt lielu slodzi, un apakšprogramma var veikt tikai vienkāršu uzdevumu, kas arī nav atkarīgs no atlikušās programmas kodēšanas. Funkcija tiek kodēta tā, ka to var izsaukt vairākas reizes un no dažādām vietām (pat no citu funkciju iekšienes). Kad funkcija tiek izsaukta, procesors var doties uz vietu, 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 beidzās, un turpinās izpildi, sākot no nākamās instrukcijas. Funkcijas ir lielisks rīks koda atkārtotai izmantošanai. Daudzas mūsdienu programmēšanas valodas atbalsta funkcijas. Funkciju kolekciju 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ētu 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 funkcijas izsaukums ir izsaukums uz programmas apakšprogrammu. Atšķirībā no funkciju izsaukumiem, sistēmas izsaukumi tiek izmantoti, ja programmai jāveic kāds uzdevums, uz kuru tai nav privilēģiju. 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 zvaniem, funkciju izsaukumi ir pārnēsājami. Sistēmas zvana laika pieskaitāmās izmaksas ir vairāk nekā funkciju izsaukuma izmaksas, jo jānotiek pārejai starp lietotāja režīmu un kodola režīmu. Sistēmas zvani tiek veikti kodola adrešu telpā, bet funkciju izsaukumi tiek veikti lietotāja adrešu telpā.