Systemsamtal kontra funktionssamtal
En typisk processor utför instruktioner en efter en. Men det kan finnas tillfällen då processorn måste stoppa nuvarande instruktion och exekvera något annat program eller kodsegment (som finns på någon annan plats). Efter att ha gjort detta återgår processorn till normal körning och fortsätter där den slutade. Ett systemanrop och ett funktionsanrop är sådana tillfällen. Ett systemanrop är ett anrop till en subrutin som är inbyggd i systemet. Ett funktionsanrop är ett anrop till en subrutin i själva programmet.
Vad är ett systemsamtal?
Systemanrop ger program som körs på datorn ett gränssnitt för att prata med operativsystemet. När ett program behöver be om en tjänst (som det inte har tillstånd att göra det själv för) från operativsystemets kärna, använder det ett systemanrop. Processer på användarnivå har inte samma behörigheter som de processer som direkt interagerar med operativsystemet. Till exempel, för att kommunicera med en extern I/O-enhet eller för att interagera med andra processer, använder ett program systemanrop.
Vad är ett funktionssamtal?
Ett funktionsanrop kallas också ett subrutinsamtal. En subrutin (även känd som en procedur, funktion, metod eller rutin) är en del av ett större program som ansvarar för att utföra en specifik uppgift. Det större programmet kan utföra en stor arbetsbelastning, och subrutinen kan bara utföra en enkel uppgift, som också är oberoende av den återstående programkodningen. En funktion är kodad på ett sådant sätt att den kan anropas flera gånger och från olika ställen (även från andra funktioner). När en funktion anropas kan processorn gå till där koden för funktionen finns och utföra instruktionerna för funktionen en efter en. Efter att ha slutfört funktionerna kommer processorn att återgå till exakt där den slutade och fortsätta exekveringen med början från nästa instruktion. Funktioner är ett utmärkt verktyg för kodåteranvändning. Många moderna programmeringsspråk stödjer funktioner. En samling funktioner kallas ett bibliotek. Bibliotek används ofta som medel för delning och handel med programvara. I vissa fall kan hela programmet vara en sekvens av subrutiner (t.ex. kompilering av gängad kod).
Vad är skillnaden mellan systemanrop och funktionsanrop?
Systemanrop är ett anrop till en subrutin inbyggd i systemet, medan ett funktionsanrop är ett anrop till en subrutin i programmet. Till skillnad från funktionsanrop används systemanrop när ett program behöver utföra någon uppgift som det inte har behörighet för. Systemanrop är ingångspunkter till operativsystemets kärna och är inte länkade till programmet (som funktionsanrop). Till skillnad från systemanrop är funktionssamtal bärbara. Tidsoverhead för ett systemanrop är mer än overhead för ett funktionsanrop eftersom en övergång mellan användarläget och kärnläget måste ske. Systemanrop exekveras i kärnans adressutrymme, medan funktionsanrop exekveras i användarens adressutrymme.