Системното повикване е начин потребителската програма да взаимодейства с операционната система. Програмата изисква няколко услуги и ОС отговаря, като извиква серия от системни извиквания, за да удовлетвори заявката. Системното повикване може да бъде написано на асемблер или на език от високо ниво като ° С или Паскал . Системните повиквания са предварително дефинирани функции, които операционната система може директно да извика, ако се използва език от високо ниво.
В тази статия ще научите за системните повиквания в операционната система и ще обсъдите техните видове и много други неща.
Какво е системно повикване?
Системното повикване е метод за компютърна програма да поиска услуга от ядрото на операционната система, на която работи. Системното повикване е метод за взаимодействие с операционната система чрез програми. Системното повикване е заявка от компютърен софтуер към ядрото на операционната система.
The Интерфейс на приложна програма (API) свързва функциите на операционната система с потребителските програми. Той действа като връзка между операционната система и процес, позволявайки на програми на потребителско ниво да изискват услуги на операционната система. Системата на ядрото може да бъде достъпна само чрез системни извиквания. Системните повиквания са необходими за всички програми, които използват ресурси.
Как се правят системни повиквания?
Когато компютърен софтуер трябва да получи достъп до ядрото на операционната система, той прави системно повикване. Системното повикване използва API за излагане на услугите на операционната система на потребителски програми. Това е единственият метод за достъп до системата на ядрото. Всички програми или процеси, които изискват ресурси за изпълнение, трябва да използват системни извиквания, тъй като те служат като интерфейс между операционната система и потребителските програми.
По-долу са някои примери за това как едно системно повикване се различава от потребителска функция.
филми от 123 до
- Функция за системно извикване може да създава и използва процеси на ядрото за изпълнение на асинхронна обработка.
- Системното повикване има по-голям авторитет от стандартната подпрограма. Системно повикване с привилегия за режим на ядрото се изпълнява в домейна за защита на ядрото.
- Системните повиквания нямат право да използват споделени библиотеки или всякакви символи, които не присъстват в домейна за защита на ядрото.
- Кодът и данните за системните извиквания се съхраняват в глобалната памет на ядрото.
Защо имате нужда от системни повиквания в операционната система?
Има различни ситуации, при които трябва да изисквате системни извиквания в операционната система. Следните ситуации са както следва:
- Трябва да се изисква, когато файлова система иска да създаде или изтрие файл.
- Мрежовите връзки изискват системни повиквания за изпращане и получаване на пакети с данни.
- Ако искате да прочетете или напишете файл, трябва да извършите системни извиквания.
- Ако искате да получите достъп до хардуерни устройства, включително принтер, скенер, имате нужда от системно повикване.
- Системните повиквания се използват за създаване и управление на нови процеси.
Как работят системните повиквания
Приложенията работят в област от паметта, известна като потребителско пространство. Системно повикване се свързва с ядрото на операционната система, което се изпълнява в пространството на ядрото. Когато дадено приложение създаде системно повикване, то първо трябва да получи разрешение от ядрото. Той постига това с помощта на заявка за прекъсване, която спира текущия процес и прехвърля контрола на ядрото.
Ако заявката е разрешена, ядрото изпълнява исканото действие, като създаване или изтриване на файл. Като вход, приложението получава изхода на ядрото. Приложението възобновява процедурата след получаване на въведените данни. Когато операцията приключи, ядрото връща резултатите на приложението и след това премества данните от пространството на ядрото в потребителското пространство в паметта.
Едно просто системно повикване може да отнеме няколко наносекунди, за да предостави резултата, като извличане на системната дата и час. По-сложно системно повикване, като например свързване към мрежово устройство, може да отнеме няколко секунди. Повечето операционни системи стартират отделна нишка на ядрото за всяко системно извикване, за да избегнат тесни места. Съвременните операционни системи са многонишкови, което означава, че могат да обработват различни системни извиквания едновременно.
Видове системни повиквания
Обикновено има пет вида системни повиквания. Те са както следва:
Сега ще научите за всички различни типове системни повиквания едно по едно.
Контрол на процеса
Контролът на процеса е системното извикване, което се използва за насочване на процесите. Някои примери за управление на процеси включват създаване, зареждане, прекъсване, край, изпълнение, обработка, прекратяване на процеса и т.н.
Управление на файлове
Управлението на файлове е системно извикване, което се използва за обработка на файловете. Някои примери за управление на файлове включват създаване на файлове, изтриване на файлове, отваряне, затваряне, четене, писане и т.н.
listnode
Управление на устройства
Управлението на устройства е системно повикване, което се използва за работа с устройства. Някои примери за управление на устройство включват четене, устройство, запис, получаване на атрибути на устройство, освобождаване на устройство и т.н.
Информационна поддръжка
Информационната поддръжка е системно повикване, което се използва за поддържане на информация. Има някои примери за поддръжка на информация, включително получаване на системни данни, задаване на час или дата, получаване на час или дата, задаване на системни данни и т.н.
Комуникация
Комуникацията е системно повикване, което се използва за комуникация. Има някои примери за комуникация, включително създаване, изтриване на комуникационни връзки, изпращане, получаване на съобщения и т.н.
Примери за Windows и Unix системни извиквания
Има различни примери за Windows и Unix системни повиквания. Те са изброени по-долу в таблицата:
Процес | Windows | Unix |
---|---|---|
Контрол на процеса | CreateProcess() ExitProcess() WaitForSingleObject() | вилица() Изход() Изчакайте() |
Манипулиране на файлове | CreateFile() ReadFile() WriteFile() CloseHandle() | отворено() Прочети() Напиши() Близо() |
Управление на устройства | SetConsoleMode() ReadConsole() WriteConsole() | Ioctl() Прочети() Напиши() |
Информационна поддръжка | GetCurrentProcessID() SetTimer() сън() | Getpid() Аларма() сън() |
Комуникация | CreatePipe() CreateFileMapping() MapViewOfFile() | Тръба() Shmget() Mmap() |
защита | SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Чоун () |
Тук ще научите накратко за някои методи:
отворен()
The отворен() системното повикване ви позволява достъп до файл във файлова система. Той разпределя ресурси към файла и предоставя манипулатор, към който може да се отнася процесът. Много процеси могат да отворят файл наведнъж или само от един процес. Всичко се основава на файловата система и структурата.
за цикли java
Прочети()
Използва се за получаване на данни от файл във файловата система. Като цяло приема три аргумента:
- Файлов дескриптор.
- Буфер за съхраняване на прочетени данни.
- Броят байтове за четене от файла.
Файловият дескриптор на файла, който ще се чете, може да се използва за идентифицирането му и отварянето му с помощта на отворен() преди четене.
изчакайте()
В някои системи един процес може да трябва да изчака друг процес да завърши изпълнението си, преди да продължи. Когато родителски процес създаде дъщерен процес, изпълнението на родителския процес се спира, докато дъщерният процес приключи. The изчакайте() системното повикване се използва за спиране на родителския процес. След като дъщерният процес завърши своето изпълнение, контролът се връща на родителския процес.
пиши()
Използва се за запис на данни от потребителски буфер в устройство като файл. Това системно повикване е един от начините програмата да генерира данни. Като цяло са необходими три аргумента:
- Файлов дескриптор.
- Указател към буфера, в който се записват данните.
- Броят байтове, които трябва да бъдат записани от буфера.
вилица()
Процесите генерират свои клонинги, използвайки вилица() системно повикване. Това е един от най-разпространените начини за създаване на процеси в операционните системи. Когато родителският процес ражда дъщерен процес, изпълнението на родителския процес се прекъсва, докато дъщерният процес завърши. След като дъщерният процес завърши своето изпълнение, контролът се връща на родителския процес.
близо()
Използва се за прекратяване на достъпа до файловата система. Когато се извика това системно повикване, това означава, че програмата вече не изисква файла и буферите се изчистват, информацията за файла се променя и ресурсите на файла се освобождават в резултат на това.
размер на python
exec()
Когато изпълним файл замени по-ранен изпълним файл във вече изпълняван процес, се извиква тази системна функция. Тъй като не е изграден нов процес, старата идентификация на процеса остава, но новият процес замества данни, стек, данни, глава и т.н.
изход()
The изход() е системно извикване, което се използва за прекратяване на изпълнението на програмата. Това извикване показва, че изпълнението на нишката е завършено, което е особено полезно в многонишкови среди. Операционната система възстановява ресурсите, изразходвани от процеса след използването на изход() системна функция.