Почему не нужно создавать системные вызовы

Почему не нужно создавать системные вызовы

Новый системный вызов легко реализовать, тем не менее это необходимо делать только тогда, когда ничего другого не остается. Часто, для того чтобы обеспечить новый системный вызов, существуют более подходящие варианты. Давайте рассмотрим некоторые "за" и "против" и возможные варианты.

Для создания нового интерфейса в виде системного вызова могут быть следующие "за".

• Системные вызовы просто реализовать и легко использовать.

• Производительность системных вызовов в операционной системе Linux очень высока.

Возможные "против".

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

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

• Для каждой аппаратной платформы необходимо регистрировать отдельный системный вызов и осуществлять его поддержку.

• Для простого обмена информацией системный вызов — это "стрельба из пушки по воробьям".

Возможные варианты.

• Реализовать файл устройства и использовать функции read() и write() для этого устройства, а также использовать функцию ioctl() для манипуляции специфическими параметрами или для получения специфической информации.

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

• Добавить информационный файл в соответствующем месте файловой системы sysfs.

Для большого числа интерфейсов, системные вызовы — это правильный выбор. В операционной системе Linux пытаются избегать простого добавления системного вызова для поддержки каждой новой, вдруг появляющейся абстракции. В результате получился удивительно четкий уровень системных вызовов, который принес очень мало разочарований и привел к малому числу не рекомендованных к использованию и устаревших (deprecated) интерфейсов (т.е. таких, которые больше не используются или не поддерживаются).

Малая частота добавления новых системных вызовов свидетельствует о том, что Linux — это стабильная операционная система с полным набором функций. Очень немного системных вызовов было добавлено во время разработки серий ядер 2.3 и 2.5. Большая часть из новых системных вызовов предназначена для улучшения производительности.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

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

Из книги Энциклопедия разработчика модулей ядра Linux автора Померанц Ори


5.1. Системные вызовы fork() и ехес()

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

5.1. Системные вызовы fork() и ехес() Процесс в Linux (как и в UNIX) — это программа, которая выполняется в отдельном виртуальном адресном пространстве. Когда пользователь регистрируется в системе, под него автоматически создается процесс, в котором выполняется оболочка (shell),


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

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

9.2. Системные вызовы В этой книге практически повсеместно упоминаются системные вызовы, которые являются фундаментальными для программного окружения. На первый взгляд, они выглядят как обычные вызовы функций С. И это не случайно; они представляют собой специальную


12.1.4. Сигналы и системные вызовы

Из книги VBA для чайников автора Каммингс Стив

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


Когда не нужно создавать процедур обработки события Click

Из книги Linux программирование в примерах автора Роббинс Арнольд

Когда не нужно создавать процедур обработки события Click Большинство элементов управления VBA распознают событие Click. Но, за исключением кнопок, обычно нет необходимости и даже неразумно создавать процедуру обработки события Click, даже если нужно, чтобы объект отвечал на


3.2.3. Системные вызовы: brk() и sbrk()

Из книги Интернет-маркетинг. Полный сборник практических инструментов автора Вирин Федор Юрьевич

3.2.3. Системные вызовы: brk() и sbrk() Четыре функции, которые мы рассмотрели (malloc(), calloc(), realloc() и free()) являются стандартными, переносимыми функциями для управления динамической памятью.На Unix-системах стандартные функции реализованы поверх двух дополнительных, очень примитивных


10.4.4. Системные вызовы, допускающие повторный запуск

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

10.4.4. Системные вызовы, допускающие повторный запуск Значение EINTR для errno (см. раздел 4.3 «Определение ошибок») указывает, что системный вызов был прерван. Хотя с этим значением ошибки может завершаться большое количество системных вызовов, двумя наиболее значительными


2.7. Когда нужно создавать несколько сайтов?

Из книги Операционная система UNIX автора Робачевский Андрей М.

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


3.4.2. Системные вызовы wait()

Из книги Разработка ядра Linux автора Лав Роберт

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


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

Из книги UNIX — универсальная среда программирования автора Пайк Роб

5.5.2. Системные вызовы Сокеты являются более гибкими в управлении, чем рассмотренные выше механизмы межзадачного взаимодействия. При работе с сокетами используются следующие функции:? socket() — создает сокет;? close() — уничтожает сокет;? connect() — устанавливает соединение


Глава 8 Системные вызовы Linux

Из книги автора

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


Системные вызовы и функции стандартных библиотек

Из книги автора

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


Системные вызовы для управления планировщиком

Из книги автора

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


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

Из книги автора

Системные вызовы управления процессорной привязкой Планировщик ОС Linux может обеспечивать жесткую процессорную привязку (processor affinity). Хотя планировщик пытается обеспечивать мягкую или естественную привязку путем удержания процессов на одном и том же процессоре, он


Глава 5 Системные вызовы

Из книги автора

Глава 5 Системные вызовы Ядро операционной системы предоставляет набор интерфейсов, благодаря которым процессы, работающие в пространстве пользователя, могут взаимодействовать с системой. Эти интерфейсы предоставляют пользовательским программам доступ к аппаратному


Глава 7 Системные вызовы в UNIX

Из книги автора

Глава 7 Системные вызовы в UNIX В настоящей главе мы рассмотрим самый низкий уровень взаимодействия с операционной системой UNIX системные вызовы. Они являются входами в ядро. Эти средства предоставляются операционной системой; все остальные средства построены на их