Системно повикване в ОС (Operating System): какво е, видове и примери
Какво е System Call in Operating система?
A системно обаждане е механизъм, който осигурява интерфейса между процес и операционната система. Това е програмен метод, при който компютърна програма изисква услуга от ядрото на операционната система.
System call предлага услугите на операционната система на потребителските програми чрез API (Интерфейс за програмиране на приложения). Системните повиквания са единствените входни точки за системата на ядрото.

Пример за системно повикване
Например, ако трябва да напишем програмен код за четене на данни от един файл, копирайте тези данни в друг файл. Първата информация, която програмата изисква, е името на двата файла, входния и изходния файл.
В интерактивна система този тип изпълнение на програма изисква някои системни извиквания от ОС.
- Първото повикване е да напишете подканващо съобщение на екрана
- Второ, да прочете от клавиатурата знаците, които определят двата файла.
Как работи системното обаждане?
Ето стъпките за системно повикване в OS:
Както можете да видите в горната примерна диаграма на системно повикване.
Стъпка 1) Процесите, изпълнявани в потребителски режим до момента, в който системно повикване го прекъсне.
Стъпка 2) След това системното повикване се изпълнява в режим на ядрото на приоритетна основа.
Стъпка 3) След като изпълнението на системното повикване приключи, управлението се връща в потребителски режим.,
Стъпка 4) Изпълнението на потребителските процеси е възобновено през Режим на ядрото.
Защо имате нужда от системни повиквания в OS?
Следват ситуации, които изискват системни извиквания в ОС:
- Четенето и писането от файлове изисква системни извиквания.
- Ако дадена файлова система иска да създава или изтрива файлове, са необходими системни извиквания.
- Системните повиквания се използват за създаване и управление на нови процеси.
- Мрежовите връзки се нуждаят от системни повиквания за изпращане и получаване на пакети.
- Достъпът до хардуерни устройства като скенер, принтер изисква системно извикване.
Видове системни повиквания
Ето петте типа системни повиквания в OS:
- Контрол на процеса
- Управление на файлове
- Управление на устройствата
- Информационна поддръжка
- комуникации
Контрол на процеса
Тези системни извиквания изпълняват задачата за създаване на процес, прекратяване на процес и т.н.
Функции:
- Край и Прекратяване
- Зареждане и изпълнение
- Създаване на процес и прекратяване на процес
- Изчакайте и Signal събитие
- Разпределяне и освобождаване на памет
Управление на файлове
Извикванията на системата за управление на файлове обработват задачи за манипулиране на файлове като създаване на файл, четене и писане и т.н.
Функции:
- Създайте файл
- Изтрий файла
- Отваряне и затваряне на файл
- Четете, пишете и препозиционирайте
- Вземете и задайте файлови атрибути
Управление на устройствата
Управлението на устройства върши работата по манипулиране на устройства като четене от буфери на устройства, запис в буфери на устройства и т.н.
Функции:
- Поискайте и освободете устройството
- Логично свързване/откачане на устройства
- Вземете и задайте атрибути на устройството
Информационна поддръжка
Той обработва информацията и нейния трансфер между операционната система и потребителската програма.
Функции:
- Вземете или задайте час и дата
- Вземете атрибути на процес и устройство
общуване
Тези типове системни повиквания се използват специално за междупроцесни комуникации.
Функции:
- Създавайте, изтривайте комуникационни връзки
- Изпращане, получаване на съобщение
- Помогнете на OS да прехвърли информация за състоянието
- Прикрепете или откачете отдалечени устройства
Правила за предаване на параметри за системно извикване
Ето общи общи правила за предаване на параметри към системното извикване:
- Параметрите трябва да бъдат поставени или извадени от стека от операционната система.
- Параметрите могат да се предават в регистрите.
- Когато има повече параметри от регистрите, те трябва да се съхраняват в блок, а адресът на блока трябва да бъде предаден като параметър към регистър.
Важни системни извиквания, използвани в ОС
изчакайте()
В някои системи един процес трябва да изчака друг процес, за да завърши своето изпълнение. Този тип ситуация възниква, когато родителски процес създаде дъщерен процес и изпълнението на родителския процес остава спряно, докато неговият дъщерен процес не се изпълни.
Спирането на родителския процес става автоматично със системно извикване на wait(). Когато дъщерният процес приключи изпълнението, управлението се връща обратно към родителския процес.
вилица ()
Процесите използват това системно извикване, за да създават процеси, които са копие на себе си. С помощта на тази система Call parent процес създава дъщерен процес и изпълнението на родителския процес ще бъде спряно, докато дъщерният процес се изпълни.
exec()
Това системно повикване се изпълнява, когато изпълним файл в контекста на вече работещ процес, който замества по-стария изпълним файл. Идентификаторът на оригиналния процес обаче остава, тъй като не се изгражда нов процес, но стекът, данните, главата, данните и т.н. се заменят с новия процес.
убивам()
Системното извикване kill() се използва от ОС за изпращане на сигнал за прекратяване на процес, който настоява процеса да излезе. Системното повикване за спиране обаче не означава непременно спиране на процеса и може да има различни значения.
изход ()
Системното извикване exit() се използва за прекратяване на изпълнението на програмата. Специално в многонишкова среда, това извикване дефинира, че изпълнението на нишката е завършено. ОС възстановява ресурсите, които са били използвани от процеса след използването на системното извикване exit().
Oбобщение
| Категории | Windows | Unix |
|---|---|---|
| Контрол на процеса | CreateProcess() ExitProcess() WaitForSingleObject() |
вилица () изход () изчакайте() |
| Манипулиране на устройството | SetConsoleMode() ReadConsole() WriteConsole() |
loctl() Прочети() напиши () |
| Манипулиране на файлове | CreateFile() ReadFile() WriteFile() CloseHandle() |
отворено() Прочети() напиши () близо!) |
| Поддържане на информация | GetCurrentProcessID() SetTimer() сън() |
getpid() аларма() сън() |
| общуване | CreatePipe() Създаване на файлова картаping() MapViewOfFile() |
тръба () shm_open() mmap() |
| Защита | SetFileSecurity() InitlializeSecurityDescriptили() SetSecurityDescriptили група () |
Chmod() Umask() Чоун () |

