<<
>>

Системные вызовы

Вооружившись общим пониманием того, как MINIX 3 работает с процессами и файлами, можно приступить к изучению интерфейса между операционной системой и пользовательскими программами, то есть системных вызовов.
Хотя это обсуждение затрагивает конкретно стандарт POSIX (международный стандарт 9945-1), а следовательно, MINIX 3, UNIX и LINUX, большинство других современных операционных систем поддерживает системные вызовы, выполняющие те же самые функции, хотя детали могут различаться. Так как фактический механизм обращения к системным функциям является в высокой степени машинно-зависимым и часто должен реализовываться на ассемблере, существуют библиотеки процедур, делающие возможным обращение к системным процедурам из программ на С и на других языках с тем же успехом.

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

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

Для того чтобы прояснить механизм системных вызовов, кратко рассмотрим системный вызов read. Как упоминалось ранее, у него есть три параметра: первый служит для задания файла, второй указывает на буфер, третий определяет количество байтов, которое нужно прочитать. Вызов из программы на С может выглядеть так:

count = read(fd, buffer, nbytes);

Системный вызов (и библиотечная процедура) возвращает количество действительно прочитанных байтов в переменной count.

Обычно эта величина совпадает с параметром nbytes, но может быть меньше, если, например, в процессе чтения процедуре встретился символ конца файла.

Если системный вызов не может быть выполнен или из-за неправильных параметров или из-за дисковой ошибки, значение счетчика count устанавливается равным -1, а номер ошибки помещается в глобальную переменную errno.

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

В общей сложности операционная система М1№Х 3 поддерживает 53 системных вызова. Они перечислены в табл. 1.1 и для удобства разбиты на шесть групп. Помимо упомянутых, существует еще несколько системных вызовов, однако они имеют столь специальное назначение, что мы решили опустить их. В последующих разделах мы кратко рассмотрим каждый вызов, чтобы понять, что он делает. В целом, выполняемые этими системными вызовами функции определяют большую часть возможностей операционной системы, так как возможности управления ресурсами на персональных компьютерах сведены к минимуму (по крайней мере, по сравнению с большими машинами, обслуживающими множество пользователей).

Таблица 1.1. Основные системные вызовы М1Ы1Х (Гс1 обозначает дескриптор файла, п — число байтов)

s = fcntl(fd, cmd, ...) Захватывает файл и выполняет другие действия

Управление каталогами и файловой системой s = mkdir(name, mode) Создает новый каталог

Особое внимание следует обратить на то, что преобразование вызовов Р051Х- процедур в системные вызовы не является взаимно однозначным. Стандарт Р051Х определяет ряд процедур, которые должны поддерживать совместимые системы, но он не указывает, являются ли они системными вызовами, библиотечными вызовами или чем-нибудь еще. В некоторых случаях Р051Х-процеду- ры поддерживаются в М1№Х 3 библиотечными функциями. Иногда требуемые процедуры являются всего лишь разновидностями друг друга, и один системный вызов обрабатывает сразу несколько библиотечных вызовов.

1.4.1.

<< | >>
Источник: Э. ТАНЕНБАУМ, А. ВУДХАЛЛ. ОПЕРАЦИОННЫЕ СИСТЕМЫ Разработка и реализация 3-е издание. 2007

Еще по теме Системные вызовы:

  1. I. 1. СИСТЕМНЫЙ ПОДХОД КАК ИНСТРУМЕНТ ДЛЯ ПОСТРОЕНИЯ СИСТЕМНЫХ ОПИСАНИЙ
  2. I. СИСТЕМНЫЕ ОПИСАНИЯ - ГЛАВНЫЙ РЕЗУЛЬТАТ СИСТЕМНОГО ПОДХОДА В ПСИХОЛОГИИ
  3. Психология личности целостна, системна (принцип целостности, системности).
  4. ВЫЗОВ ВРАЧА
  5. СПТ откликается на вызов обстоятельств
  6. Быстрый вызов желаемого
  7. Бросьте себе вызов
  8. Самоубийство как вызов обществу
  9. § 14 Условное соглашение. – Предложение и вызов. – Договор посредством публичного торга или состязания. – Одностороннее обещание.
  10. § 46 Принятие наследства. – Значение вызова кредиторов и некоторых публикаций. – Отзыв о принятии и действия, служащие признаком принятия.