Системный вызов в ОС (Operating System): что такое, типы и примеры
⚡ Умное резюме
Системный вызов — это управляемый интерфейс, используемый процессом для запроса служб ядра, таких как доступ к файлам, управление процессом и связь с устройствами, обеспечивающий безопасное переключение ЦП из пользовательского режима в привилегированный режим ядра.

Что такое системный вызов Operaтинг системы?
A системный вызов — это механизм, обеспечивающий интерфейс между процессом и операционной системой. Это программный метод, при котором компьютерная программа запрашивает услугу у ядра ОС.
Системный вызов предлагает услуги операционной системы пользовательским программам через API (интерфейс прикладного программирования). Системные вызовы — единственные точки входа в систему ядра.
Системные вызовы в Operaтинг система
Пример системного вызова
Например, чтобы написать программу, которая считывает данные из одного файла и копирует их в другой, программе сначала нужны имена этих двух файлов: входного и выходного.
В интерактивной системе выполнение программ такого типа требует определенных системных вызовов со стороны операционной системы.
- Первый шаг — вывести на экран подсказку.
- Второй способ — прочитать с клавиатуры символы, определяющие эти два файла.
Как работает системный вызов?
Вот шаги для выполнения системного вызова в операционной системе:
Archiтектура системного вызова
Как видно на приведенной выше диаграмме системных вызовов:
Шаг 1) Эти процессы выполняются в пользовательском режиме до тех пор, пока их не прервет системный вызов.
Шаг 2) После этого системный вызов выполняется в режиме ядра в приоритетном порядке.
Шаг 3) После завершения выполнения системного вызова управление возвращается в пользовательский режим.
Шаг 4) Выполнение пользовательских процессов возобновляется, происходит переход между пользовательским режимом и режим ядра как требуется.
Зачем вам нужны системные вызовы в ОС?
Ниже перечислены ситуации, в которых необходимы системные вызовы в операционной системе:
- Чтение и запись файлов требуют системных вызовов.
- Если файловая система хочет создавать или удалять файлы, необходимы системные вызовы.
- Системные вызовы используются для создания и управления новыми процессами.
- Сетевым соединениям необходимы системные вызовы для отправки и получения пакетов.
- Для доступа к аппаратным устройствам, таким как сканер или принтер, требуется системный вызов.
Типы системных вызовов
Вот пять типов системных вызовов в ОС:
- Контроль над процессом
- Управление файлами
- Управление устройством
- Информационное обслуживание
- Коммуникация
Типы системных вызовов в ОС
Контроль над процессом
Эти системные вызовы выполняют задачи создания процессов, завершения процессов и т. д.
Функции:
- Завершить и прервать
- Загрузить и выполнить
- Создать процесс и завершить процесс
- Подожди и Signal События
- Выделение и освобождение памяти
Управление файлами
Вызовы системы управления файлами обрабатывают такие задачи по манипуляции файлами, как создание файла, чтение, запись и т. д.
Функции:
- Создать файл
- Удалить файл
- Открыть и закрыть файл
- Читать, писать и перемещать
- Получить и установить атрибуты файла
Управление устройством
Управление устройствами выполняет работу по манипулированию устройствами, например чтение из буферов устройств, запись в буферы устройств и т. д.
Функции:
- Запросить и освободить устройство
- Логическое подключение или отключение устройств
- Получение и установка атрибутов устройства.
Информационное обслуживание
Он обрабатывает информацию и ее передачу между ОС и пользовательской программой.
Функции:
- Получить или установить время и дату
- Получить атрибуты процесса и устройства
Коммуникация
Эти типы системных вызовов используются специально для межпроцессного взаимодействия.
Функции:
- Создание и удаление коммуникационных соединений
- Отправка и получение сообщений
- Помощь в передаче информации о состоянии операционной системы.
- Подключение или отключение удаленных устройств
Правила передачи параметров для системного вызова
Вот общие правила передачи параметров системному вызову:
- Параметры должны быть помещены в стек или извлечены из него операционной системой.
- Параметры можно передавать в регистрах.
- Если параметров больше, чем регистров, их следует хранить в блоке, а адрес блока передавать в регистре.
Важные системные вызовы, используемые в ОС
ждать()
В некоторых системах процесс должен ждать завершения другого процесса. Это происходит, когда родительский процесс создает дочерний процесс, и родительский процесс остается приостановленным до тех пор, пока дочерний процесс не завершится.
Приостановка работы родительского процесса происходит автоматически с помощью системного вызова wait(). Когда дочерний процесс завершается, управление возвращается к родительскому процессу.
вилка ()
Процессы используют этот системный вызов для создания процессов, являющихся их копиями. С помощью функции fork() родительский процесс создает дочерний процесс, и родительский процесс приостанавливается до тех пор, пока не будет выполнен дочерний процесс.
exec ()
Этот системный вызов запускает исполняемый файл внутри уже запущенного процесса, заменяя старый. Исходный идентификатор процесса сохраняется, поскольку новый процесс не создается, но стек, данные, куча и т. д. заменяются новым процессом.
убийство()
Системный вызов kill() используется операционной системой для отправки сигналу завершения процессу, побуждая его завершить работу. Однако системный вызов kill() не обязательно означает завершение процесса и может иметь различное значение.
Выход()
Системный вызов exit() используется для завершения выполнения программы. Особенно в многопоточной среде этот вызов означает, что выполнение потока завершено. После вызова exit() операционная система освобождает ресурсы, использованные процессом.




