Sistemos skambutis vs funkcinis skambutis
Įprastas procesorius vykdo instrukcijas po vieną. Tačiau gali būti atvejų, kai procesorius turi sustabdyti dabartinę instrukciją ir vykdyti kitą programą ar kodo segmentą (gyvenantį kitoje vietoje). Tai padaręs procesorius grįžta į įprastą vykdymą ir tęsia ten, kur baigė. Sisteminis ir funkcinis skambutis yra tokios progos. Sistemos iškvietimas yra skambutis į sistemoje įdiegtą paprogramę. Funkcijos iškvietimas yra iškvietimas į paprogramę pačioje programoje.
Kas yra sistemos skambutis?
Sisteminiai skambučiai suteikia kompiuteryje veikiančioms programoms sąsają kalbėtis su operacine sistema. Kai programai reikia paprašyti paslaugos (kuriai ji neturi leidimo to padaryti pati) iš operacinės sistemos branduolio, ji naudoja sistemos iškvietimą. Vartotojo lygio procesai neturi tų pačių teisių kaip ir procesai, tiesiogiai sąveikaujantys su operacine sistema. Pavyzdžiui, norėdama bendrauti su išoriniu įvesties / išvesties įrenginiu arba sąveikauti su bet kokiais kitais procesais, programa naudoja sistemos skambučius.
Kas yra funkcijos iškvietimas?
Funkcijos iškvietimas taip pat vadinamas paprogramės iškvietimu. Paprogramė (dar vadinama procedūra, funkcija, metodu ar įprasta programa) yra didesnės programos, atsakingos už konkrečios užduoties vykdymą, dalis. Didesnė programa gali atlikti didelę apkrovą, o paprogramė gali atlikti tik paprastą užduotį, kuri taip pat nepriklauso nuo likusio programos kodavimo. Funkcija užkoduota taip, kad ją galima iškviesti kelis kartus ir iš skirtingų vietų (net iš kitų funkcijų). Kai iškviečiama funkcija, procesorius gali eiti ten, kur yra funkcijos kodas, ir vykdyti funkcijos nurodymus po vieną. Atlikęs funkcijas, procesorius grįš tiksliai ten, kur baigė, ir tęs vykdymą nuo kitos instrukcijos. Funkcijos yra puikus įrankis pakartotinai naudoti kodą. Daugelis šiuolaikinių programavimo kalbų palaiko funkcijas. Funkcijų rinkinys vadinamas biblioteka. Bibliotekos dažnai naudojamos kaip programinės įrangos mainų ir prekybos priemonės. Kai kuriais atvejais visa programa gali būti paprogramių seka (pvz., Srieginio kodo kompiliacija).
Kuo skiriasi sistemos skambutis ir funkcinis skambutis?
Sistemos iškvietimas yra skambutis į sistemoje įmontuotą paprogramę, o funkcijos iškvietimas - programos paprogramę. Skirtingai nei funkcijų iškvietimai, sistemos iškvietimai naudojami, kai programai reikia atlikti kokią nors užduotį, kuriai ji neturi privilegijų. Sistemos skambučiai yra operacinės sistemos branduolio įėjimo taškai ir nėra susieti su programa (pvz., Funkcijų iškvietimai). Skirtingai nei sistemos skambučiai, funkciniai skambučiai yra nešiojami. Laiko sistemos skambučio pridėtinės išlaidos yra daugiau nei funkcijų iškvietimo pridėtinės išlaidos, nes turi vykti perėjimas tarp vartotojo režimo ir branduolio režimo. Sistemos skambučiai vykdomi branduolio adresų erdvėje, o funkciniai - vartotojo adreso erdvėje.