Учебники

10) Системный вызов в ОС

Что такое системный вызов в операционной системе?

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

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

Из этого руководства по операционной системе вы узнаете:

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

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

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

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

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

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

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

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

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

Шаг 1) Процессы, выполняемые в пользовательском режиме до тех пор, пока системный вызов не прервет его.

Шаг 2) После этого системный вызов выполняется в режиме ядра в приоритетном порядке.

Шаг 3) По завершении выполнения системного вызова управление возвращается в режим пользователя.,

Шаг 4) Выполнение пользовательских процессов возобновляется в режиме ядра.

Зачем вам системные вызовы в ОС?

Ниже приведены ситуации, которые требуют системных вызовов в ОС:

  • Чтение и запись из файлов требуют системных вызовов.
  • Если файловая система хочет создать или удалить файлы, требуются системные вызовы.
  • Системные вызовы используются для создания и управления новыми процессами.
  • Сетевые подключения требуют системных вызовов для отправки и получения пакетов.
  • Доступ к аппаратным устройствам, таким как сканер, принтер, требуется системный вызов.

Типы системных вызовов

Вот пять типов системных вызовов, используемых в ОС:

  • Контроль процесса
  • Управление файлами
  • Управление устройством
  • Информационное обслуживание
  • связи

Контроль процесса

Эти системные вызовы выполняют задачу создания процесса, завершения процесса и т. Д.

Функции:

  • Конец и Прервать
  • Загрузить и выполнить
  • Создать процесс и завершить процесс
  • Ожидание и подписанное событие
  • Выделить и освободить память

Управление файлами

Системные вызовы управления файлами обрабатывают задания по обработке файлов, такие как создание файла, чтение, запись и т. Д.

Функции:

  • Создать файл
  • Удалить файл
  • Открыть и закрыть файл
  • Читать, писать и перемещать
  • Получить и установить атрибуты файла

Управление устройством

Управление устройствами выполняет работу с устройствами, такими как чтение из буферов устройств, запись в буферы устройств и т. Д.

функции

  • Запрос и релиз устройства
  • Логически подключать / отключать устройства
  • Получить и установить атрибуты устройства

Информационное обслуживание

Он обрабатывает информацию и ее передачу между ОС и программой пользователя.

Функции:

  • Получить или установить время и дату
  • Получить атрибуты процесса и устройства

Связь:

Эти типы системных вызовов специально используются для межпроцессного взаимодействия.

Функции:

  • Создание, удаление коммуникационных соединений
  • Отправить, получить сообщение
  • Помогите ОС перенести информацию о статусе
  • Подключите или отсоедините удаленные устройства

Правила передачи параметров для системного вызова

Вот общие общие правила для передачи параметров в системный вызов:

  • Параметры должны быть загружены или извлечены из стека операционной системой.
  • Параметры могут быть переданы в регистрах.
  • Когда параметров больше, чем регистров, они должны храниться в блоке, а адрес блока должен передаваться в качестве параметра в регистр.

Важные системные вызовы, используемые в ОС

Подождите()

В некоторых системах процесс должен ждать, пока другой процесс завершит свое выполнение. Этот тип ситуации возникает, когда родительский процесс создает дочерний процесс, и выполнение родительского процесса остается приостановленным, пока не выполнится его дочерний процесс.

Приостановка родительского процесса автоматически происходит с помощью системного вызова wait (). Когда дочерний процесс завершает выполнение, элемент управления возвращается к родительскому процессу.

вилка ()

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

Exec ()

Этот системный вызов выполняется, когда исполняемый файл в контексте уже запущенного процесса заменяет старый исполняемый файл. Однако исходный идентификатор процесса остается, поскольку новый процесс не создается, но стек, данные, заголовок, данные и т. Д. Заменяются новым процессом.

убийство():

Системный вызов kill () используется ОС для отправки сигнала завершения процессу, который побуждает процесс завершиться. Однако системный вызов kill не обязательно означает уничтожение процесса и может иметь различные значения.

Выход():

Системный вызов exit () используется для прекращения выполнения программы. Этот вызов, особенно в многопоточной среде, определяет, что выполнение потока завершено. ОС восстанавливает ресурсы, которые использовались процессом после использования системного вызова exit ().

Резюме:

категории Windows Юникс
Контроль процесса CreateProcess () ExitProcess () WaitForSingleObject () fork () exit () wait ()
Манипулирование устройством SetConsoleMode () ReadConsole () WriteConsole () loctl () read () write ()
Манипулирование файлами CreateFile () ReadFile () WriteFile () CloseHandle () Открыть () Читать () написать () закрыть!)
Информационное обслуживание GetCurrentProcessID () SetTimer () Sleep () getpid () alarm () sleep ()
связь CreatePipe () CreateFileMapping () MapViewOfFile () Pipe () shm_open () mmap ()
защита SetFileSecurity () InitlializeSecurityDescriptor () SetSecurityDescriptorGroup () Chmod () Umask () Chown ()