Что такое системный вызов в операционной системе?
Системный вызов является механизмом , который обеспечивает интерфейс между процессом и операционной системой. Это программный метод, при котором компьютерная программа запрашивает сервис у ядра ОС.
Системный вызов предлагает услуги операционной системы пользовательским программам через 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 () |