Sistēmas zvans vs funkcionāls zvans
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 tam procesors atgriežas normālā izpildē un turpina to, no kurienes to pārtrauca. Sistēmas un funkciju izsaukumi ir šādi gadījumi. Sistēmas zvans ir izsaukums uz sistēmā iebūvētu apakšprogrammu. Funkcijas zvans ir izsaukums uz apakšprogrammu pašas programmas ietvaros.
Kas ir sistēmas zvans?
Sistēmas zvani nodrošina programmas, kas datorā darbojas ar interfeisu, lai runātu ar operētājsistēmu. Kad programmai no operētājsistēmas kodola ir jāpieprasa pakalpojums (kuram tam pašam nav atļaujas to darīt), 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 zvanus.
Kas ir funkciju izsaukums?
Funkcijas zvanu sauc arī par apakšprogrammu. Apakšprogramma (pazīstama arī kā procedūra, funkcija, metode vai rutīna) ir daļa no lielākas programmas, kas atbild par noteikta uzdevuma izpildi. 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ādā veidā, ka to var izsaukt vairākas reizes un no dažādām vietām (pat no citām funkcijām). Kad tiek izsaukta funkcija, procesors var doties uz vietu, kur atrodas funkcijas kods, un izpildīt funkcijas instrukcijas pa vienai. Pēc funkciju pabeigšanas procesors atgriezīsies tieši tur, kur to pārtrauca, 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 kolekcija tiek saukta 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 zvans ir zvans uz apakšprogrammu, kas iebūvēta sistēmā, savukārt funkcijas zvans ir zvans uz apakšprogrammu programmas ietvaros. Atšķirībā no funkciju izsaukumiem sistēmas izsaukumi tiek izmantoti gadījumos, kad programmai jāveic kāds uzdevums, kuram tai nav privilēģiju. Sistēmas zvani 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 zvani ir pārnēsājami. Laika, kas pārsniedz sistēmas izsaukumu, ir vairāk nekā funkcionālā izsaukuma pieskaitāmās izmaksas, jo jānotiek pārejai starp lietotāja režīmu un kodola režīmu. Sistēmas zvani tiek izpildīti kodola adreses telpā, savukārt funkciju izsaukumi tiek izpildīti lietotāja adreses telpā.