Системний виклик — це спосіб взаємодії програми користувача з операційною системою. Програма запитує кілька служб, і ОС відповідає, викликаючи серію системних викликів, щоб задовольнити запит. Системний виклик може бути написаний мовою асемблера або іншою мовою високого рівня C або Паскаль . Системні виклики — це попередньо визначені функції, які операційна система може безпосередньо викликати, якщо використовується мова високого рівня.
У цій статті ви дізнаєтесь про системні виклики в операційній системі, обговорите їх типи та багато іншого.
Що таке системний виклик?
Системний виклик — це метод, за допомогою якого комп’ютерна програма запитує службу від ядра операційної системи, на якій вона запущена. Системний виклик — це спосіб взаємодії з операційною системою за допомогою програм. Системний виклик — це запит програмного забезпечення комп’ютера до ядра операційної системи.
The Інтерфейс прикладної програми (API) з’єднує функції операційної системи з програмами користувача. Він діє як зв’язок між операційною системою та процесом, дозволяючи програмам на рівні користувача запитувати служби операційної системи. Доступ до системи ядра можна отримати лише за допомогою системних викликів. Системні виклики необхідні для будь-яких програм, які використовують ресурси.
Як здійснюються системні виклики?
Коли програмне забезпечення комп’ютера потребує доступу до ядра операційної системи, воно здійснює системний виклик. Системний виклик використовує API для надання послуг операційної системи програмам користувача. Це єдиний спосіб доступу до системи ядра. Усі програми або процеси, які потребують ресурсів для виконання, повинні використовувати системні виклики, оскільки вони служать інтерфейсом між операційною системою та програмами користувача.
Нижче наведено кілька прикладів того, як системний виклик відрізняється від функції користувача.
які місяці q3
- Функція системного виклику може створювати та використовувати процеси ядра для виконання асинхронної обробки.
- Системний виклик має більший авторитет, ніж стандартна підпрограма. Системний виклик із привілеєм режиму ядра виконується в домені захисту ядра.
- Системним викликам заборонено використовувати спільні бібліотеки або будь-які символи, яких немає в домені захисту ядра.
- Код і дані для системних викликів зберігаються в глобальній пам'яті ядра.
Навіщо потрібні системні виклики в операційній системі?
Існують різні ситуації, коли ви повинні вимагати системні виклики в операційній системі. Нижче наведені ситуації:
- Це необхідно, коли файлова система хоче створити або видалити файл.
- Для підключення до мережі потрібні системні виклики для надсилання та отримання пакетів даних.
- Якщо ви хочете прочитати або записати файл, вам знадобляться системні виклики.
- Якщо ви хочете отримати доступ до апаратних пристроїв, включаючи принтер, сканер, вам потрібен системний виклик.
- Системні виклики використовуються для створення та керування новими процесами.
Як працюють системні виклики
Програми працюють в області пам’яті, яка називається простором користувача. Системний виклик підключається до ядра операційної системи, яке виконується в просторі ядра. Коли програма створює системний виклик, вона повинна спочатку отримати дозвіл від ядра. Це досягається за допомогою запиту на переривання, який призупиняє поточний процес і передає керування ядру.
модель tcp ip
Якщо запит дозволено, ядро виконує запитану дію, як-от створення або видалення файлу. Як вхідні дані програма отримує вихідні дані ядра. Додаток відновлює процедуру після отримання введення. Після завершення операції ядро повертає результати в програму, а потім переміщує дані з простору ядра в простір користувача в пам’яті.
Простий системний виклик може зайняти кілька наносекунд, щоб отримати результат, як-от отримання системної дати та часу. Більш складний системний виклик, наприклад підключення до мережевого пристрою, може тривати кілька секунд. Більшість операційних систем запускають окремий потік ядра для кожного системного виклику, щоб уникнути вузьких місць. Сучасні операційні системи є багатопоточними, що означає, що вони можуть обробляти різні системні виклики одночасно.
Типи системних викликів
Зазвичай існує п’ять типів системних викликів. Це такі:
Тепер ви дізнаєтесь про всі типи системних викликів один за одним.
Контроль процесів
Керування процесом — це системний виклик, який використовується для керування процесами. Деякі приклади керування процесом включають створення, завантаження, переривання, завершення, виконання, обробку, завершення процесу тощо.
Керування файлами
Керування файлами — це системний виклик, який використовується для обробки файлів. Деякі приклади керування файлами включають створення файлів, видалення файлів, відкриття, закриття, читання, запис тощо.
Управління пристроєм
Керування пристроями – це системний виклик, який використовується для роботи з пристроями. Деякі приклади керування пристроєм включають читання, пристрій, запис, отримання атрибутів пристрою, випуск пристрою тощо.
Ведення інформації
Обслуговування інформації - це системний виклик, який використовується для підтримки інформації. Є кілька прикладів підтримки інформації, зокрема отримання системних даних, встановлення часу чи дати, отримання часу чи дати, встановлення системних даних тощо.
спілкування
Зв'язок - це системний виклик, який використовується для зв'язку. Є кілька прикладів спілкування, зокрема створення, видалення зв’язків, надсилання, отримання повідомлень тощо.
оновлення java
Приклади системних викликів Windows і Unix
Є різні приклади системних викликів Windows і Unix. Вони перераховані нижче в таблиці:
процес | вікна | 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 ВІДЧИНЕНО() системний виклик дозволяє отримати доступ до файлу у файловій системі. Він виділяє ресурси для файлу та надає дескриптор, на який може посилатися процес. Багато процесів можуть відкрити файл одночасно або лише одним процесом. Все залежить від файлової системи та структури.
читати()
Він використовується для отримання даних із файлу файлової системи. Загалом він приймає три аргументи:
- Дескриптор файлу.
- Буфер для зберігання прочитаних даних.
- Кількість байтів для читання з файлу.
Файловий дескриптор файлу, який потрібно прочитати, можна використовувати для його ідентифікації та відкриття за допомогою ВІДЧИНЕНО() перед прочитанням.
чекай()
У деяких системах процесу, можливо, доведеться чекати, поки інший процес завершить своє виконання, перш ніж продовжити. Коли батьківський процес створює дочірній процес, виконання батьківського процесу призупиняється до завершення дочірнього процесу. The чекай() системний виклик використовується для призупинення батьківського процесу. Після того, як дочірній процес завершив своє виконання, управління повертається до батьківського процесу.
ітерація списку в java
написати()
Він використовується для запису даних із буфера користувача на пристрій, як у файл. Цей системний виклик є одним із способів створення даних програмою. Загалом потрібні три аргументи:
- Дескриптор файлу.
- Покажчик на буфер, у якому зберігаються дані.
- Кількість байтів для запису з буфера.
fork()
Процеси створюють свої клони за допомогою fork() системний виклик. Це один із найпоширеніших способів створення процесів в операційних системах. Коли батьківський процес породжує дочірній процес, виконання батьківського процесу переривається до завершення дочірнього процесу. Після того, як дочірній процес завершив своє виконання, управління повертається до батьківського процесу.
закрити()
Він використовується для завершення доступу до файлової системи. Коли цей системний виклик викликається, це означає, що програмі більше не потрібен файл, буфери очищаються, інформація про файл змінюється, а ресурси файлу вилучаються.
exec()
Коли виконуваний файл замінює попередній виконуваний файл у процесі, що вже виконується, викликається ця системна функція. Оскільки новий процес не будується, ідентифікація старого процесу залишається, але новий процес замінює дані, стек, дані, голову тощо.
вихід()
The вихід() це системний виклик, який використовується для завершення виконання програми. Цей виклик вказує, що виконання потоку завершено, що особливо корисно в багатопоточних середовищах. Операційна система відновлює ресурси, витрачені процесом після використання вихід() функція системи.