Системный вызов в ОС (Operating System): что такое, типы и примеры
Что такое системный вызов Operaтинг системы?
A системный вызов — это механизм, обеспечивающий интерфейс между процессом и операционной системой. Это программный метод, при котором компьютерная программа запрашивает услугу у ядра ОС.
Системный вызов предлагает услуги операционной системы пользовательским программам через API (интерфейс прикладного программирования). Системные вызовы — единственные точки входа в систему ядра.

Пример системного вызова
Например, если нам нужно написать программный код для чтения данных из одного файла, скопируйте эти данные в другой файл. Первая информация, которую требует программа, — это имена двух файлов: входного и выходного.
В интерактивной системе этот тип выполнения программы требует некоторых системных вызовов со стороны ОС.
- Первый звонок – это написание подсказки на экране.
- Во-вторых, чтобы прочитать с клавиатуры символы, определяющие два файла.
Как работает системный вызов?
Вот шаги для системного вызова в ОС:

Как вы можете видеть на приведенном выше примере диаграммы системного вызова.
Шаг 1) Процессы, выполняемые в пользовательском режиме до тех пор, пока системный вызов не прервет их.
Шаг 2) После этого системный вызов выполняется в режиме ядра в приоритетном порядке.
Шаг 3) После завершения выполнения системного вызова управление возвращается в пользовательский режим.
Шаг 4) Выполнение пользовательских процессов возобновилось в Режим ядра.
Зачем вам нужны системные вызовы в ОС?
Ниже приведены ситуации, которые требуют системных вызовов в ОС:
- Чтение и запись файлов требуют системных вызовов.
- Если файловая система хочет создавать или удалять файлы, необходимы системные вызовы.
- Системные вызовы используются для создания и управления новыми процессами.
- Сетевым соединениям необходимы системные вызовы для отправки и получения пакетов.
- Доступ к аппаратным устройствам, таким как сканер, принтер, требует системного вызова.
Типы системных вызовов
Вот пять типов системных вызовов в ОС:
- Контроль над процессом
- Управление файлами
- Управление устройством
- Информационное обслуживание
- Связь

Контроль над процессом
Эти системные вызовы выполняют задачу создания процесса, завершения процесса и т. д.
Функции:
- Конец и прерывание
- Загрузить и выполнить
- Создать процесс и завершить процесс
- Подожди и Signal События
- Выделение и освобождение памяти
Управление файлами
Вызовы системы управления файлами обрабатывают такие задачи по манипуляции файлами, как создание файла, чтение, запись и т. д.
Функции:
- Создать файл
- Удалить файл
- Открыть и закрыть файл
- Читать, писать и перемещать
- Получить и установить атрибуты файла
Управление устройством
Управление устройствами выполняет работу по манипулированию устройствами, например чтение из буферов устройств, запись в буферы устройств и т. д.
Функции:
- Запросить и освободить устройство
- Логическое подключение/отключение устройств
- Получение и установка атрибутов устройства
Информационное обслуживание
Он обрабатывает информацию и ее передачу между ОС и пользовательской программой.
Функции:
- Получить или установить время и дату
- Получить атрибуты процесса и устройства
Коммуникация
Эти типы системных вызовов специально используются для межпроцессного взаимодействия.
Функции:
- Создание, удаление коммуникационных соединений
- Отправить, получить сообщение
- Помогите ОС передать информацию о состоянии
- Подключение или отключение удаленных устройств
Правила передачи параметров для системного вызова
Вот общие правила передачи параметров в системный вызов:
- Параметры должны быть добавлены или извлечены из стека операционной системой.
- Параметры можно передавать в регистрах.
- Если параметров больше, чем регистров, их следует сохранить в блоке, а адрес блока следует передать в качестве параметра в регистр.
Важные системные вызовы, используемые в ОС
ждать()
В некоторых системах процессу необходимо дождаться завершения выполнения другого процесса. Ситуация такого типа возникает, когда родительский процесс создает дочерний процесс, а выполнение родительского процесса приостанавливается до тех пор, пока не выполнится его дочерний процесс.
Приостановка родительского процесса автоматически происходит с помощью системного вызова wait(). Когда дочерний процесс завершает выполнение, управление возвращается к родительскому процессу.
вилка ()
Процессы используют этот системный вызов для создания процессов, которые являются копией самих себя. С помощью этой системы вызов родительского процесса создает дочерний процесс, и выполнение родительского процесса будет приостановлено до тех пор, пока не выполнится дочерний процесс.
exec ()
Этот системный вызов запускается, когда исполняемый файл в контексте уже запущенного процесса заменяет старый исполняемый файл. Однако исходный идентификатор процесса остается, поскольку новый процесс не создается, а стек, данные, заголовок, данные и т. д. заменяются новым процессом.
убийство()
Системный вызов kill() используется ОС для отправки сигнала завершения процессу, который призывает процесс завершиться. Однако системный вызов kill не обязательно означает завершение процесса и может иметь различные значения.
Выход()
Системный вызов exit() используется для прекращения выполнения программы. Особенно в многопоточной среде этот вызов определяет, что выполнение потока завершено. ОС восстанавливает ресурсы, которые были использованы процессом после использования системного вызова exit().
Итого
Категории | Windows | Юникс |
---|---|---|
Контроль над процессом | CreateProcess () ExitProcess () WaitForSingleObject () |
вилка () Выход() ждать() |
Манипулирование устройством | УстановитьКонсольныйРежим() ЧитатьКонсоль() НаписатьКонсоль() |
локтл() читать() записывать() |
Манипулирование файлами | CreateFile () ReadFile () WriteFile () CloseHandle () |
Открыть() Читать() записывать() закрывать!) |
Информационное обслуживание | ПолучитьCurrentProcessID() SetTimer () Спать() |
getpid () аварийная сигнализация() спать() |
Коммуникация | CreatePipe () CreateFileMapping () MapViewOfFile () |
Трубка() shm_open () mmap () |
Protection | УстановитьFileSecurity() Инициализация безопасностиDescriptили() SetSecurityDescriptилиГруппа () |
Чмод() Умаск() Чоун() |