Системный вызов в ОС (Operating System): что такое, типы и примеры

Что такое системный вызов Operaтинг системы?

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

Системный вызов предлагает услуги операционной системы пользовательским программам через API (интерфейс прикладного программирования). Системные вызовы — единственные точки входа в систему ядра.

Системные вызовы в Operaтинг система
Системные вызовы в Operaтинг система

Пример системного вызова

Например, если нам нужно написать программный код для чтения данных из одного файла, скопируйте эти данные в другой файл. Первая информация, которую требует программа, — это имена двух файлов: входного и выходного.

В интерактивной системе этот тип выполнения программы требует некоторых системных вызовов со стороны ОС.

  • Первый звонок – это написание подсказки на экране.
  • Во-вторых, чтобы прочитать с клавиатуры символы, определяющие два файла.

Как работает системный вызов?

Вот шаги для системного вызова в ОС:

Системный вызов работает

Archiтектура системного вызова

Archiтектура системного вызова

Как вы можете видеть на приведенном выше примере диаграммы системного вызова.

Шаг 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илиГруппа ()
Чмод()
Умаск()
Чоун()