Системно повикване срещу функционално обаждане
Типичният процесор изпълнява инструкции една по една. Но може да има случаи, в които процесорът трябва да спре текущата инструкция и да изпълни друга програма или кодов сегмент (пребиваващ на друго място). След това процесорът се връща към нормално изпълнение и продължава от мястото, където е спрял. Системно повикване и функционално повикване са такива случаи. Системното повикване е призив към подпрограма, вградена в системата. Функционалното обаждане е повикване към подпрограма в самата програма.
Какво е системно обаждане?
Системните повиквания предоставят на програмите, работещи на компютъра, интерфейс за разговор с операционната система. Когато една програма трябва да поиска услуга (за която тя няма разрешение да го направи сама) от ядрото на операционната система, тя използва системно повикване. Процесите на потребителско ниво нямат същите разрешения като процесите, директно взаимодействащи с операционната система. Например, за да комуникира с и външно I / O устройство или да взаимодейства с други процеси, програма използва системни повиквания.
Какво е обаждане на функция?
Функционално повикване се нарича също повикване на подпрограма. Подпрограма (известна също като процедура, функция, метод или рутина) е част от по-голяма програма, която е отговорна за изпълнението на конкретна задача. По-голямата програма може да изпълни голямо натоварване, а подпрограмата може да изпълнява просто проста задача, която също не зависи от останалото кодиране на програмата. Функцията е кодирана по такъв начин, че може да бъде извикана многократно и от различни места (дори и от други функции). Когато се извика функция, процесорът може да отиде до мястото, където се намира кодът за функцията, и да изпълни инструкциите на функцията една по една. След приключване на функциите процесорът ще се върне на мястото, където е спрял и ще продължи изпълнението, като започне от следващата инструкция. Функциите са чудесен инструмент за повторно използване на код. Много съвременни езици за програмиране поддържат функции. Колекция от функции се нарича библиотека. Често библиотеките се използват като средство за споделяне и търговия на софтуер. В някои случаи цялата програма може да бъде последователност от подпрограми (например компилация на резбови кодове).
Каква е разликата между системно повикване и функционално обаждане?
Системното повикване е призив към подпрограма, вградена в системата, докато функционалното повикване е повикване към подпрограма в рамките на програмата. За разлика от функционалните обаждания, системните повиквания се използват, когато програмата трябва да изпълни някаква задача, за която няма привилегия. Системните повиквания са входни точки в ядрото на операционната система и не са свързани с програмата (като обаждания на функции). За разлика от системните повиквания, функционалните повиквания са преносими. Времето над режима на системно обаждане е повече от режийните разходи за повикване на функция, тъй като трябва да се извърши преход между потребителския режим и режима на ядрото. Системните обаждания се изпълняват в адресното пространство на ядрото, докато функционалните обаждания се изпълняват в адресното пространство на потребителя.